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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

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

C++ action server exposing a non-systematic coverage behavior

Additional Links

No 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 with ping 192.168.186.2
    • Verify that ros2 topic list shows the Create 3 robot topics

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.

  1. 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
    
  1. 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.

  2. 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.
  1. 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}"
    
  1. 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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged create3_republisher at Robotics Stack Exchange