ros2arduino [](https://travis-ci.org/ROBOTIS-GIT/ros2arduino/branches)

July 27, 2020 ยท View on GitHub

Arduino library for communicating with ROS2(DDS)


Version-specific dependencies

  • Recommend version (present)
ros2arduinoROS2Micro-XRCE-DDS Agent
0.2.1Dashing Diademata Patch61.3.0

For the Micro-XRCE-DDS Agent, please install it using following commands.

$ git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
$ cd Micro-XRCE-DDS-Agent && git checkout v1.3.0
$ mkdir build && cd build
$ source /opt/ros/dashing/setup.bash # to share libraries with ros2
$ cmake ..
$ make
$ sudo make install
$ sudo ldconfig /usr/local/lib/
  • All
ros2arduinoROS2Micro-XRCE-DDS Agent
0.2.1Dashing Diademata Patch61.3.0
0.1.4Dashing Diademata Patch31.1.0
0.1.3Dashing Diademata Patch31.1.0
0.1.2Dashing Diademata Patch11.1.0
0.1.1Dashing Diademata1.1.0
0.0.9Crystal Clemmys1.0.1

Restrictions

Memory

  • RAM : >= 32Kb
  • Boards tested : Based on the normal behavior of publisher and subscriber.
    • OpenCR
    • Arduino MKR ZERO
    • ESP32 (not support TCP yet)

Communication

ImplementedNote
SerialYES
UDPYESESP32, Ethernet
TCPNODebugging...

Getting Start

Dependancy Installation

You must install ROS2 and XRCE-DDS Agent. (The version should be the same as the Version-specific dependencies above)

Upload Arduino sketch

  • [File] - [Examples] - [ros2arduino]
    • Serial
      • [publisher]
    • UDP
      • [publisher_wifi_udp]
      • [publisher_ethernet_udp]
    • TCP
      • [publisher_wifi_tcp]
      • [publisher_ethernet_tcp]
  • [Sketch] - [Upload]

Excute Micro-XRCE-DDS Agent

  • Please refer to eProsima manual for Micro-XRCE-DDS-Agent usage.

  • 0.2.1 or above (Micro-XRCE-DDS-Agent 1.3.0)

    • Serial
      $ MicroXRCEAgent serial --dev /dev/ttyACM0 -b 115200
      
    • UDP
      $ MicroXRCEAgent udp4 -p 2018
      
    • TCP
      $ MicroXRCEAgent tcp4 -p 2018
      
  • 0.1.0 ~ 0.1.4 (Micro-XRCE-DDS-Agent 1.1.0)

    • Serial
      $ MicroXRCEAgent serial --dev /dev/ttyACM0 -b 115200
      
    • UDP
      $ MicroXRCEAgent udp -p 2018
      
    • TCP
      $ MicroXRCEAgent tcp -p 2018
      
  • 0.0.9 (Micro-XRCE-DDS-Agent 1.0.1)

    • Serial
      $ MicroXRCEAgent --serial /dev/ttyACM0 115200
      
    • UDP
      $ MicroXRCEAgent --udp 2018
      
    • TCP
      $ MicroXRCEAgent --tcp 2018
      

Check topic on ROS2

$ ros2 topic echo /arduino_chatter

Appendix: How to configure entities from reference file. (available at 0.1.1 or above)

  • Use the reference method supported by Client and Agent. Please refer to eProsima manual for detailed usage.

  • For this feature, you need to set UXR_CREATE_ENTITIES_USING_REF definition to 1.

    #define UXR_CREATE_ENTITIES_USING_REF 1
    
    • ros2arduino 0.1.1 ~ 0.1.4
      • You need to change the settings(library code) in ros2arduino library. (In the user_config.h)
  • Create .refs file(in XML format) and run the Agent with the following options:

    $ MicroXRCEAgent serial --dev /dev/ttyACM0 -b 115200 -r ros2arduino.refs
    
    • An example reference file is as follows.
      • ros2arduino.refs
        <profiles>
        	<participant profile_name="ros2arduino_xml_node">
        		<rtps>
        			<name>ros2arduino_basic_node</name>
        			<builtin>
        				<domainId>0</domainId>
        			</builtin>
        		</rtps>
        	</participant>
        
        
        	<data_writer profile_name="arduino_chatter">
        		<topic>
        			<kind>NO_KEY</kind>
        			<name>rt/arduino_chatter</name>
        			<dataType>std_msgs::msg::dds_::String_</dataType>
        			<historyQos>
        				<kind>KEEP_LAST</kind>
        				<depth>10</depth>
        			</historyQos>
        		</topic>
        	</data_writer>
        
        
        	<data_reader profile_name="arduino_led">
        		<topic>
        			<name>rt/arduino_led</name>
        			<dataType>std_msgs::msg::dds_::Bool_</dataType>
        		</topic>
        	</data_reader>
        
        
        	<topic profile_name="Bool">
        		<kind>NO_KEY</kind>
        		<name>Bool</name>
        		<dataType>std_msgs::msg::dds_::Bool_</dataType>
        	</topic>
        
        	<topic profile_name="String">
        		<kind>NO_KEY</kind>
        		<name>String</name>
        		<dataType>std_msgs::msg::dds_::String_</dataType>
        	</topic>
        </profiles>
        

Appendix: How to use the Security feature. (available at 0.1.1 or above)

This method should be preceded by the function described in "Appendix: How to configure entities from reference file."

And please check eProsima's manual for how to use it.


Development Note

Lastest release

  • Feature
    • Only one node available
    • Publisher
    • Subscriber
  • Communication
    • Serial
    • UDP