• Stars
    star
    216
  • Rank 183,179 (Top 4 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This library helps the Arduino board communicate with the ROS2 using XRCE-DDS.

ros2arduino Build Status

Arduino library for communicating with ROS2(DDS)


Version-specific dependencies

  • Recommend version (present)
ros2arduino ROS2 Micro-XRCE-DDS Agent
0.2.1 Dashing Diademata Patch6 1.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
ros2arduino ROS2 Micro-XRCE-DDS Agent
0.2.1 Dashing Diademata Patch6 1.3.0
0.1.4 Dashing Diademata Patch3 1.1.0
0.1.3 Dashing Diademata Patch3 1.1.0
0.1.2 Dashing Diademata Patch1 1.1.0
0.1.1 Dashing Diademata 1.1.0
0.0.9 Crystal Clemmys 1.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

Implemented Note
Serial YES
UDP YES ESP32, Ethernet
TCP NO Debugging...

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

More Repositories

1

turtlebot3

ROS packages for Turtlebot3
Python
1,405
star
2

DynamixelSDK

ROBOTIS Dynamixel SDK (Protocol1.0/2.0)
C++
413
star
3

OpenCR

Software for ROS Embedded board (a.k.a. OpenCR). OpenCR means Open-source Control Module for ROS.
C
379
star
4

open_manipulator

OpenManipulator for controlling in Gazebo and Moveit with ROS
C++
316
star
5

turtlebot3_simulations

Simulations for TurtleBot3
C++
296
star
6

ros_seminar

Lecture and Reference Material
166
star
7

emanual

Welcome to the ROBOTIS e-Manual ! The e-Manual page rendered from this repository is available for everyone. Just simply click the provided link below :)
JavaScript
148
star
8

ros_tutorials

ROS Tutorials for beginner
C++
133
star
9

turtlebot3_machine_learning

Python
115
star
10

OpenCR-Hardware

BOM, Circuit and PCB Gerber of OpenCR
109
star
11

ROBOTIS-OP3

ROS packages for the ROBOTIS OP3
C++
102
star
12

dynamixel-workbench

ROS packages for Dynamixel controllers, msgs, single_manager, toolbox, tutorials
C++
102
star
13

hls_lfcd_lds_driver

ROS package for HLDS HLS-LFCD LDS driver
C++
85
star
14

turtlebot3_autorace

Autonomous Driving with TurtleBot3
Python
85
star
15

Dynamixel2Arduino

DYNAMIXEL protocol library for Arduino
C++
85
star
16

turtlebot3_applications

Applications for TurtleBot3
Python
83
star
17

turtlebot3_msgs

ROS msgs package for TurtleBot3
CMake
63
star
18

robotis_tools

Tools for development environments
Shell
53
star
19

turtlebot3_manipulation

OpenManipulator with TurtleBot3 packages
C++
43
star
20

open_manipulator_p

OpenManipulator-P for controlling in Gazebo and Moveit with ROS
C++
38
star
21

OpenCM9.04

Software for OpenCM 9.04 / OpenCM means Open-source Control Module.
C++
32
star
22

turtlebot3_autorace_2020

TurtleBot3 Autorace 2020 missions
Python
29
star
23

turtlebot3_deliver

ROS packages for TurtleBot3 deliver
C++
22
star
24

ROBOTIS-Framework

ROS packages for the ROBOTIS Platform Framework
C++
20
star
25

open_manipulator_simulations

ROS Simulation for OpenManipulator
CMake
17
star
26

robotis_manipulator

This package contains the manipulation API and functions for controlling the manipulator.
C++
16
star
27

ROBOTIS-THORMANG-MPC

ROS packages for the motion of THORMANG3, MPC means Motion PC.
C++
16
star
28

DynamixelShield

DynamixelShield Library for Arduino
C++
16
star
29

open_manipulator_perceptions

perceptions for manipulation
C++
15
star
30

ros_book

repository to share book that provide documentation and tutorials for ROS
13
star
31

turtlebot3_manipulation_simulations

simulation for OpenManipulator with TurtleBot3
CMake
13
star
32

ROBOTIS-MANIPULATOR-H

ROS packages for the ROBOTIS MANIPULATOR-H
C++
10
star
33

dynamixel-workbench-msgs

Message package for dynamixel-workbench
CMake
10
star
34

ROBOTIS-Math

This package is a set of basic math fuctions for ROBOTIS's robots.
C++
10
star
35

ROBOTIS-OP3-Common

ROS packages for the ROBOTIS OP3
CMake
9
star
36

OpenCR-Binaries

Collection of binary files for platforms using OpenCR
8
star
37

turtlebot3_home_service_challenge

Turtlebot3 Home Service Challenge(with OpenManipulator X)
C++
8
star
38

autorace_track

AutoRace racetrack sources
8
star
39

open_manipulator_applications

Application examples of OpenManipulator
C++
8
star
40

OLLOBOT

Java
7
star
41

ROBOTIS-OP-Series-Data

ROBOTIS-OP series datas
7
star
42

open_manipulator_msgs

ROS Messages for OpenManipulator
CMake
7
star
43

OpenRB-150

OpenRB-150 controller Arduino board manager
C
6
star
44

turtlebot3_applications_msgs

ROS applications msgs package for TurtleBot3
CMake
6
star
45

ROBOTIS-OP3-Demo

ROS packages for the ROBOTIS OP3
C++
6
star
46

ld08_driver

ROS package for TurtleBot3 LD08 Lidar
C++
6
star
47

open_manipulator_with_tb3

TurtleBot3 with OpenMANIPULATOR-X (Deprecated)
C++
5
star
48

open_manipulator_controls

OpenMANIPULATOR Controls
C++
5
star
49

open_manipulator_friends

C++
5
star
50

open_manipulator_processing

Processing
4
star
51

ROBOTIS-Framework-msgs

ROS packages for the ROBOTIS Platform Framework
CMake
3
star
52

ROBOTIS-OP2

ROS packages for the ROBOTIS OP2
C++
3
star
53

ROBOTIS-THORMANG-Common

ROS packages for the model description and the gazebo setting of THORMANG3
CMake
3
star
54

XelNetwork_Documents

Documents for XelNetwork
3
star
55

RH-P12-RN

ROS packages for RH-P12-RN
C++
3
star
56

ROBOTIS-THORMANG-PPC

ROS packages for the perception of THORMANG3, PPC means Perception PC.
C++
2
star
57

XelNetwork_FwSDK

C
2
star
58

XelNetwork_PowerXel

C
2
star
59

ROBOTIS-Utility

ROS packages for the ROBOTIS Utility (meta package)
CMake
2
star
60

turtlebot3_gazebo_plugin

Standalone gazebo plugin for TurtleBot3
C++
2
star
61

XelNetwork_SensorXel

C
2
star
62

XelNetwork_CommXel

C
2
star
63

ROBOTIS-THORMANG-msgs

ROS message packages for the THORMANG3
CMake
2
star
64

XelNetwork_Hardware

2
star
65

ROBOTIS-OP2-Common

ROS packages for the ROBOTIS OP2
CMake
2
star
66

ROBOTIS-THORMANG-MPC-SENSORs

ROS packages for the sensors of THORMANG3, MPC means Motion PC.
C
2
star
67

ROBOTIS-THORMANG-Tools

ROS packages for the offset of THORMANG3
C++
1
star
68

open_manipulator_p_simulations

CMake
1
star
69

open_manipulator_p_controls

C++
1
star
70

ROBOTIS-Optimization

C++
1
star
71

ros2xrcedds

ROS2 library using XRCE-DDS.
C
1
star
72

RH-P12-RN-A

ROS Packages for RH-P12-RN(A)
C++
1
star
73

ROBOTIS-THORMANG-P-MPC

ROS Packages for ROBOTIS THORMANG3 (DXL PRO+ Ver)'s MPC
C++
1
star
74

ROBOTIS-OP3-Tools

ROS packages for the ROBOTIS OP3
C++
1
star
75

ROBOTIS-THORMANG-OPC

ROS packages for the operating of THORMANG3, OPC means Operating PC.
C++
1
star