Could not launch ros1_bridge in the real Turtlebot

For the ROS2 Navigation Rosject, I was not able to launch the ros1_bridge in the real Turtlebot and view the topics despite following these instructions:

Output:

user:~$ source ~/catkin_ws/devel/setup.bash
ROS_DISTRO was set to 'foxy' before. Please make sure that the environment does not mix paths from different distributions.
user:~$ roslaunch load_params load_params.launch
... logging to /home/user/.ros/log/379d4504-46f6-11ee-a041-b827eb45ef28/roslaunch-2_xterm-1256.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://10.8.0.2:46361/

SUMMARY
========

PARAMETERS
 * /rosdistro: noetic
 * /rosversion: 1.15.11
 * /topics: [{'topic': '/tf',...

NODES

ROS_MASTER_URI=http://10.8.0.1:11311

No processes to monitor
shutting down processing monitor...
... shutting down processing monitor complete
user:~$ source /opt/ros/foxy/setup.bash
ROS_DISTRO was set to 'noetic'before. Please make sure that the environment does not mix paths from different distributions.
user:~$ ros2 run ros1_bridge parameter_bridge parameter_bridge
The parameter 'parameter_bridge' either doesn't exist or isn't an array
The parameter 'services_1_to_2' either doesn't exist or isn't an array
The parameter 'services_2_to_1' either doesn't exist or isn't an array
user:~$ ros2 topic list
/parameter_events
/rosout

The notebook is kind of confusing because it lists those instructions at the top, then later says to do this:

However, the Robox-TurtleBot3 rosject uses ros, not ros2. If I open that rosject and run rostopic list, the topics are printed. But that’s not helpful because I can’t run my ros2 programs, and I can’t source ros2 foxy there.

So I’m not sure what do to, and I already spent two sessions this week with the real robot trying to troubleshoot it. I would greatly appreciate some guidance, and some extra sessions if possible. Thanks

Hi Anaam,
you are right that the instructions are confusing and also that there is an error in the launch of the ros1_bridge.

  1. The instructions indicate to launch the parameter bridge, which is not properly configured for the real Turtlebot3. You need to launch instead the dynamic bridge. In order to launch the dynamic bridge, do the following:
source ~/catkin_ws/devel/setup.bash
source /opt/ros/foxy/setup.bash
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics

After that, you should wait a few seconds until all the topics are bridged (you should see an output on the screen like this:

user:~$ ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
created 2to1 bridge for topic '/rosout' with ROS 2 type 'rcl_interfaces/msg/Log' and ROS 1 type 'rosgraph_msgs/Log'
created 1to2 bridge for topic '/battery_state' with ROS 1 type 'sensor_msgs/BatteryState' and ROS 2 type 'sensor_msgs/msg/BatteryState'
created 1to2 bridge for topic '/client_count' with ROS 1 type 'std_msgs/Int32' and ROS 2 type 'std_msgs/msg/Int32'
created 1to2 bridge for topic '/cmd_vel' with ROS 1 type 'geometry_msgs/Twist' and ROS 2 type 'geometry_msgs/msg/Twist'
created 1to2 bridge for topic '/cmd_vel_rc100' with ROS 1 type 'geometry_msgs/Twist' and ROS 2 type 'geometry_msgs/msg/Twist'
created 1to2 bridge for topic '/diagnostics' with ROS 1 type 'diagnostic_msgs/DiagnosticArray' and ROS 2 type 'diagnostic_msgs/msg/DiagnosticArray'
created 1to2 bridge for topic '/imu' with ROS 1 type 'sensor_msgs/Imu' and ROS 2 type 'sensor_msgs/msg/Imu'
created 1to2 bridge for topic '/joint_states' with ROS 1 type 'sensor_msgs/JointState' and ROS 2 type 'sensor_msgs/msg/JointState'
created 1to2 bridge for topic '/magnetic_field' with ROS 1 type 'sensor_msgs/MagneticField' and ROS 2 type 'sensor_msgs/msg/MagneticField'
created 1to2 bridge for topic '/motor_power' with ROS 1 type 'std_msgs/Bool' and ROS 2 type 'std_msgs/msg/Bool'
created 1to2 bridge for topic '/odom' with ROS 1 type 'nav_msgs/Odometry' and ROS 2 type 'nav_msgs/msg/Odometry'
created 1to2 bridge for topic '/odom_status' with ROS 1 type 'std_msgs/Bool' and ROS 2 type 'std_msgs/msg/Bool'
created 1to2 bridge for topic '/rosout' with ROS 1 type 'rosgraph_msgs/Log' and ROS 2 type 'rcl_interfaces/msg/Log'
created 1to2 bridge for topic '/rosout_agg' with ROS 1 type 'rosgraph_msgs/Log' and ROS 2 type 'rcl_interfaces/msg/Log'
created 1to2 bridge for topic '/scan' with ROS 1 type 'sensor_msgs/LaserScan' and ROS 2 type 'sensor_msgs/msg/LaserScan'
created 1to2 bridge for topic '/scan_status' with ROS 1 type 'std_msgs/Bool' and ROS 2 type 'std_msgs/msg/Bool'
created 1to2 bridge for topic '/tf' with ROS 1 type 'tf/tfMessage' and ROS 2 type 'tf2_msgs/msg/TFMessage'
created 1to2 bridge for topic '/tf_static' with ROS 1 type 'tf2_msgs/TFMessage' and ROS 2 type 'tf2_msgs/msg/TFMessage'
created 1to2 bridge for topic '/tf_status' with ROS 1 type 'std_msgs/Bool' and ROS 2 type 'std_msgs/msg/Bool'
Created 2 to 1 bridge for service /start_motor
Created 2 to 1 bridge for service /stop_motor
  1. You don’t need to launch the ros1_bridge when you are using the simulation, because it already runs in ros2 natively. You should be able to source ros2 foxy on any terminal.
    But you need to launch the ros1_bridge AFTER you connect to the real robot. Whenever you connect to the real robot, then launch the ros1_bridge in the way explained above in order to see the ros2 topics

NOTE: we increased the number of sessions available to each student up to 6 per week. Go ahead and take advantage of it. I want to see those robots burning!!!

1 Like

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.