eclipse-cyclonedds / cyclonedds

Eclipse Cyclone DDS project
https://projects.eclipse.org/projects/iot.cyclonedds
Other
886 stars 362 forks source link

Configuring ROS2 on Turtlebot4 #1476

Closed escortKwon closed 1 year ago

escortKwon commented 2 years ago

My issue is much similar to the current opened issue(#1421) Previous Thread

Let me describe more detail, as you asked on previous thread

Describe the troubles I had I had my Turtlebot4 Lite clean-installed. Because I had some connection problems and in troubleshooting progress, therefore I thought overwriting the latest TB4 lite image(ver. 0.1.3) on my TB4 is the best way to solve problems. After overwriting image, I had completed setting connection between Raspberry Pi 4 and 5GHz AP, between iCreate3 and 2.4GHz AP. with "nmap -sP ..." command, I could find IP addresses from both TB4 lite and iCreate3. But there were no what looks like some name or label(Ubuntu or Create-XXXX)

Also, I have checked all topics from ROS2 for both computers Screenshot from 2022-11-08 15-02-23 Screenshot from 2022-11-08 15-02-26 The upper one is captured from Remote PC and the other one is from RPi4

BTW, my final CylconeDDS configuration is as follows: Screenshot from 2022-11-11 15-50-13

Desired features I hope First of all, I hope to get IP address on my Remote PC by ros2 topic echo /ip (If I could get that topic, there could be a chance to configure wireless connection among iCreate3 - Raspberry Pi 4 - Remote PC I wanna see all topics on my Remote PC by ros2 topic list.

Previous work I had many tries to troubleshoot. Ros2 topic list does not show the Create3 is publishing topics for turtebot4 lite Request for uploading Dependencies

Thank you for your efforts!

ciandonovan commented 2 years ago

Are you on Galactic or Humble? Have you exported the environment variables to set Cyclone DDS as the RMW and a path to your config file?

<Tracing>
    <Verbosity>config</Verbosity>
    <OutputFile>stdout</OutputFile>
</Tracing>

Add this configuration to your Cyclone DDS XML under the Domain tag and it should provide you with a wealth of information on how it has been configured and configured itself, including what interfaces it has chosen to communicate on and why.

N.B That config snippet works with the version of Cyclone DDS that comes with Humble, the syntax might be slightly different if you're on Galactic.

escortKwon commented 2 years ago

Thank you for you reply.

I have attached the snippet on my cyclonedds_pc.xml as follows: Screenshot from 2022-11-16 09-27-07 Then, I have run a command as follows: ros2 doctor and the result is as follows: Screenshot from 2022-11-16 09-31-55 I might guess the interface is not properly setup between my TB4 and remote PC I wanna hear your opinion more.

BTW, I'm using Galactic on Remote PC. Thanks!

ciandonovan commented 2 years ago

Looks like your remote PC is picking wlp6s0 as the right interface.

I don't know much about the TB4's architecture, but should be getting my hands on one soon and so could look further then, could run into the same issue!

escortKwon commented 2 years ago

Then, are there better ideas for troubleshooting? or I have to just wait for TB4 developer to solve this issue. For right now, I cannot come up with better idea to configure connection Remote PC and TB4 (according to reference, for middleware, CycloneDDS is Tier 1 for ROS2 Galactic and Ubuntu 20.04.)

eboasson commented 2 years ago

There is always the possibility of capturing the network packets and a Cyclone DDS trace. Somehow I seem to always find some time to look at those when everything else fails 😉

My first assumption would be picking the "wrong" network interface on the PC, but as @ciandonovan says, that seems looks fine. I also assume both are on the same WiFi network and you're not running into any routing problems (which should be really rare anyway for unicast ...)

A packet capture is made using Wireshark, plenty of examples and excellent documentation is available.

Turning on tracing in Cyclone is done by adding:

<Tracing>
  <Category>trace</Category>
  <OutputFile>cdds.log.${CYCLONEDDS_PID}</OutputFile>
</Tracing>

(or some other output file name, of course!) to the Cyclone configuration XML file.

If you're curious about the contents of that trace file, it is somewhat documented now, but I expect it'll be a bit overwhelming hence my offer to have a look 😄 .

eboasson commented 1 year ago

@escortKwon friendly ping to add to issue when you have something that may help moving it forward.

jmm-slamcore commented 1 year ago

We are also seeing similar issues when using rmw_cyclonedds_cpp on a corporate Wi-Fi network. We are not able to see any topics with ros2 topic list between a Laptop and the Turtlebot 4 or even between laptops when running a demo talker node. We have tried the same config as shared above (from https://iroboteducation.github.io/create3_docs/setup/xml-config/) without success.

eboasson commented 1 year ago

@jmm-slamcore I am sorry that we haven't been able to make any progress on the issue so far, it is just that I haven't had anything tangible to work with. Your observation that you don't see any topics:

even between laptops when running a demo talker node

gives me some hope, though: that seems like a good starting point. Would you be able to run it again while collecting a pair of trace files from Cyclone and upload them (or emailing them to me)? That should give me a good starting point.

escortKwon commented 1 year ago

Using FastDDS discovery server, I could access all topics between Remote PC and RPi4 simultaneously. Refer to this thread https://github.com/turtlebot/turtlebot4/issues/98