![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | jazzy |
Last Updated | 2024-09-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
1.0.0 (2024-09-28)
- Merge pull request #58 from civerachb-cpr/patch-1 Adds the new [/cmd_vel_stamped]{.title-ref} topic to the robot subscriptions.
- Merge pull request #56 from hilary-luo/hluo/rel-namespace-fix Relative Namespace Fix
- Remove manual handling of namespace not being fully qualified
- Contributors: Alberto Soragna, Chris Iverach-Brereton, Hilary Luo
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged create3_republisher at Robotics Stack Exchange
![]() |
create3_republisher package from create3_examples repocreate3_coverage create3_examples_msgs create3_examples_py create3_lidar_slam create3_republisher create3_teleop |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.0.5 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/iRobotEducation/create3_examples.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-08-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Alberto Soragna
Authors
- Alberto Soragna
create3_republisher
What is this?
This package contains a ROS 2 applications capable of republishing ROS 2 entities. It’s designed to work with the iRobot Create 3 robot.
This means that if the robot is publishing on topic /my_robot/odom
this application can subscribe to this topic and republish its messages into a new namespace, e.g. /my_republisher/odom
.
This works also with publishers, services and actions.
For example, with /my_robot/cmd_vel
remapped to /my_republisher/cmd_vel
, users can then send motion commands to /my_republisher/cmd_vel
to move the robot around, or send a ROS 2 action goal to /my_republisher/drive_distance
, etc..
Why using this?
ROS 2 middlewares have a tendency to discover all the ROS 2 entities in the network and allocate resources for all of them, even if they don’t need to communicate. This can cause performance issues due to excessive memory allocations, discovery traffic and double delivery of messages. This republisher can be used to get around this problem.
For example, this occurs when having your Create 3 robot connected to a RaspberryPi (or other SBC), which runs applications made of a high number of ROS 2 entities or that deal with very big messages (e.g. the navigation stack, or rtabmap, etc).
IMPORTANT: use this tool only if you experience problems in your setup.
NOTE: Using this tool requires at least some understanding of how to configure ROS 2 application via DDS XML configuration files.
Prerequisites
-
Your robot and other ROS 2 applications should be on ROS 2 Humble.
-
You should use Fast-DDS as your RMW on the robot and throughout all your applications. This approach is not RMW-specific, but the instructions and the provided DDS config file are. Use the webserver to check or modify the Create 3 robot RMW (see webserver docs for details)
-
Ensure that you can discover and communicate via ROS 2 between all your devices before starting. For example:
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
usb0
interface withping 192.168.186.2
- Verify that
ros2 topic list
shows the Create 3 robot topics
- If using a RaspberryPi (or other SBC) try pinging the Create 3 robot via
This procedure will use advanced communication configuration, and if stuff wasn’t working before, it will be hard to debug it later. These instructions assume that you didn’t need any custom DDS configuration to get communication working. If that’s not the case, your custom configuration will likely need to be integrated with the provided DDS configuration files, which is not covered by this tutorial.
Connecting the Create 3 Robot and an SBC via the republisher
The following instructions will show how to isolate the robot to discover and communicate only with an entity, the republisher, and ignore all other processes running on your RaspberryPi (or other SBC). Other entities, e.g. your navigation application can then interact with the republisher (i.e. they can subscribe to Create 3 topics, and send requests) without “being discovered by it”. This is the “default setup” for this republisher. The next sections will show examples on how to customize it for other common scenarios.
- Build this repository on the RaspberryPi (or other SBC). For example:
mkdir -p ~/ws/src
cd ~/ws/src
git clone https://github.com/iRobotEducation/create3_examples.git
cd ~/ws
colcon build --symlink-install
-
Modify the Fast-DDS XML profile on the Create 3, through the webserver, to exactly match the
fastdds-robot-passive-unicast.xml
profile. See webserver docs for details. -
Launch the republisher app in a terminal on your RaspberryPi (or other SBC) using the provided
fastdds-active-unicast.xml
profile. For example:
source ~/ws/install/setup.sh
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-active-unicast.xml
ros2 daemon stop
ros2 launch create3_republisher create3_republisher_launch.py
This command assumes that the Create 3 robot is using the default namespace and it will republish all Create 3 robot names into the `/repub` namespace.
If your Create 3 robot is running with a namespace, for example `/my_robot`, and/or you want to change the republication namespace, for example `/my_repub`, you can do it via command line arguments.
ros2 launch create3_republisher create3_republisher_launch.py republisher_ns:=/my_repub robot_ns:=/my_robot
**IMPORTANT: THE TWO NAMESPACES MUST BE DIFFERENT!!**
**NOTE:** the list of entities that's republished is defined by the `params.yaml` file which you'll find at `~/ws/install/create3_republisher/share/create3_republisher/bringup/params.yaml`.
Comment or uncomment entries in this file to customize it to your needs.
- Run your other applicatios that want to communicate with Create 3 in another terminal of the RaspberryPi (or other SBC) using a passive unicast DDS configuration profile. For example:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=~/ws/src/create3_examples/create3_republisher/dds-config/fastdds-passive-unicast.xml
ros2 daemon stop
ros2 topic echo /repub/tf
ros2 action send_goal /repub/drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}"
- OPTIONAL: Connect your laptop and your RaspberryPi (or other SBC) With the setup described so far, you should have your RaspberryPi and your Create 3 robot able to communicate via ROS 2. However, your laptop (or other devices in the network) won’t be able to discover neither the robot nor the SBC.
File truncated at 100 lines see the full file
Changelog for package create3_republisher
0.0.5 (2024-06-27)
0.0.4 (2024-06-27)
0.0.3 (2024-06-27)
- add debug statistics
- Contributors: Alberto Soragna
0.0.2 (2024-06-05)
- update republisher
- Merge pull request #54 from hilary-luo/hluo/turtlebot4-republisher Turtlebot4 Republisher
- Enable topics that Turtlebot4 needs by default
- Accept a relative robot namespace
- Merge pull request #53 from iRobotEducation/asoragna/create3-republisher add create 3 republisher package
- add missing reset-pose service and cleanup
- fix bug with undock action and update docs
- update docks
- add logs and improve documentation
- remove hardcoded periods and timeouts
- allow use of / namespace for republisher
- add create 3 republisher package
- Contributors: Alberto Soragna, Hilary Luo
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
geometry_msgs | |
sensor_msgs | |
nav_msgs | |
irobot_create_msgs | |
rclcpp | |
rclcpp_action |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
turtlebot4_bringup |