ROBOTIS-GIT / ros2arduino

This library helps the Arduino board communicate with the ROS2 using XRCE-DDS.
Apache License 2.0
219 stars 43 forks source link

MicroXRCEAgent is not seem to work #47

Open james-yoo opened 4 years ago

james-yoo commented 4 years ago

Hello @OpusK ,

I am working with ros2arduino using Arduino Due & ROS2 Dashing. I followed the instruction as below. image

I run with this command after install publishing program to Arduino with using ArduinoIDE v1.8.10,

$ MicroXRCEAgent serial --dev /dev/ttyACM0 -b 115200

Result is as below: image

And I cannot see topic(/arduino_chatter) from Arduino side. Could you give me some advice to check?

Thanks

OpusK commented 4 years ago

Hi, @james-yoo

$ MicroXRCEAgent serial --dev /dev/ttyACM0 -b 115200

Can you share detailed logs using the -v(0~6) option like below?

$ MicroXRCEAgent serial --dev /dev/ttyACM0 -b 115200 -v 6
james-yoo commented 4 years ago

Hi, @OpusK

I can see following with -v 6 option: image

Is this what you asked for?

OpusK commented 4 years ago

@james-yoo

Are you uploading the basic examples without modification, and are you trying to communicate using USB? If so, it will not work due to different Serial instances of Arduino boards. In other words, for DUE, you need to change it as below.

#define XRCEDDS_PORT  SerialUSB

In the current example, there is no pre-processing for each board, so the user must modify it according to his board. In this regard, for convenience, we will include preprocessing in the next release.

And I couldn't check because I didn't have DUE and ZERO. Could you please let me know if the USB connection is recognized as /dev/ttyACM or /dev/ttyUSB?

james-yoo commented 4 years ago

@OpusK,

I have uploaded the basic example code without any modification and tried to use USB. Currently, USB connection is showing /dev/ttyACM0 with Programming port on DUE. Should I have to change to the Native USB port on DUE?

OpusK commented 4 years ago

@james-yoo

Sorry for the confusion. I misunderstood.

Would you like to keep the port intact and press the reset button while the agent is running?

+UPDATE: I got DUE and tested it, but I confirmed that intermittent communication with the agent is not working properly even after reset.

On the other hand, in the case of MKRZERO, it was confirmed that it works well.

Probably, debugging is required in connection with the serial port of DUE.

james-yoo commented 4 years ago

@OpusK

Thank you for your update. Please update if there is any progress on this issue.

james-yoo commented 4 years ago

I would like to check if there is any further progress regarding the issue.

OpusK commented 4 years ago

Hi, @james-yoo

Sorry for late. No progress has been made so far. It seems to be quite time-consuming.

If there is any progress on this issue, I will let you know. And since the operation is not perfect at this time, we will remove the DUE from the README.

amfern commented 4 years ago

I am porting this library to INav, and i had a similar problem, this library would send packets over serial but it seems like MicroXRCEAgent doesn't receive it. Switching to MicroXRCEAgent 1.3.2 resolved this issue

mjwhite8119 commented 3 years ago

Great work on this project James! I'm having the same issue documented here where I can successfully load the code onto the board and it connects to the Micro-ROS agent but does not publish the chatter topic. The only thing is that the board that I'm loading onto is an ESP32. I know you are not currently supporting that board but it's almost working and if you can point me in the right direction then I'd like to try and get it working for that board. Please let me know what code segments to look at. Thank you.