ROS2 Jazzy Crash Course 2025 -

I am trying to run gazebo robot simulation. Robot is not moving when given commands/controller is used. Please help. Publishers in the next sections are also not able to move/rotate the robot.

DISPLAY=:2 ruby $(which gz) sim-1] Error while loading the library [/opt/ros/jazzy/lib/libgz_ros2_control-system.so]: libdiagnostic_updater.so: cannot open shared object file: No such file or directory
[DISPLAY=:2 ruby $(which gz) sim-1] [Err] [SystemLoader.cc:107] Failed to load system plugin: (Reason: No plugins detected in library)
[DISPLAY=:2 ruby $(which gz) sim-1] - Requested plugin name: [gz_ros2_control::GazeboSimROS2ControlPlugin]
[DISPLAY=:2 ruby $(which gz) sim-1] - Requested library name: [gz_ros2_control-system]
[DISPLAY=:2 ruby $(which gz) sim-1] - Resolved library path: [/opt/ros/jazzy/lib/libgz_ros2_control-system.so]
[DISPLAY=:2 ruby $(which gz) sim-1] MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)

You need to give more information about what you are doing:

  • Which simulation are you trying to run?
  • Is it in your local computer or in a rosject?
  • Which command did you launch?
  • Full output of the console, not just the part that you think is the error. Maybe there are other errors before

Please provide more information.

With the few information you provided, it looks like you are running on local machine and have not properly installed the gazebo ros2 control package… if that is the case, just install the plugins. They are ROS packages so you can install it with:

sudo apt install ros-jazzy-gz-ros2-control

Which simulation are you trying to run?
source ~/sim_ws/install/setup.bash
ros2 launch rosbot_xl_gazebo simulation.launch.py

Is it in your local computer or in a rosject?
rosject

Which command did you launch?
source ~/sim_ws/install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap cmd_vel:=/rosbot_xl_base_controller/cmd_vel

Full output of the console, not just the part that you think is the error. Maybe there are other errors before
ros2 launch rosbot_xl_gazebo simulation.launch.py[INFO] [launch]: All log files can be found below /home/user/.ros/log/2025-04-10-17-24-47-8
28825-2_xterm-2932[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [launch.user]: Robots:[INFO] [launch.user]: Launching namespace= with init_pose= {‘x’: ‘0.0’, ‘y’: ‘0.0’, ‘z’: ‘0
.2’, ‘roll’: ‘0.0’, ‘pitch’: ‘0.0’, ‘yaw’: ‘0.0’}/opt/ros/jazzy/lib/python3.12/site-packages/launch/conditions/launch_configuration_equals.p
y:53: UserWarning: The ‘LaunchConfigurationEquals’ and ‘LaunchConfigurationNotEquals’ Conditions are deprecated. Use the ‘EqualsSubstitution’ and ‘NotEqualsSubstitution’ substitutio
ns instead! E.g.: IfCondition(
EqualsSubstitution(LaunchConfiguration(‘some_launch_arg’), “some_equality_check”)
warnings.warn(
[INFO] [DISPLAY=:2 ruby $(which gz) sim-1]: process started with pid [2936][INFO] [parameter_bridge-2]: process started with pid [2939][INFO] [create-3]: process started with pid [2941]
[INFO] [robot_state_publisher-4]: process started with pid [2943][INFO] [spawner-5]: process started with pid [2947]
[INFO] [parameter_bridge-6]: process started with pid [2953]
[parameter_bridge-2] [INFO] [1744305888.420195533] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/clock (ignition.msgs.Clock) → /clock (rosgraph_msgs/msg/Clock)] (Lazy 0)
[robot_state_publisher-4] [INFO] [1744305888.428921842] [robot_state_publisher]: Robot initialized
[create-3] [INFO] [1744305888.490455282] [ros_gz_sim]: Requesting list of world names.
[DISPLAY=:2 ruby $(which gz) sim-1] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to’/tmp/runtime-user’
[DISPLAY=:2 ruby $(which gz) sim-1] MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)
[DISPLAY=:2 ruby $(which gz) sim-1] glx: failed to create drisw screen
[parameter_bridge-6] [INFO] [1744305889.679881145] [ros_gz_lidar_bridge]: Creating GZ->ROSBridge: [/scan (ignition.msgs.LaserScan) → /scan (sensor_msgs/msg/LaserScan)] (Lazy 0)
[parameter_bridge-6] [INFO] [1744305889.688588533] [ros_gz_lidar_bridge]: Creating ROS->GZBridge: [/scan (sensor_msgs/msg/LaserScan) → /scan (ignition.msgs.LaserScan)] (Lazy 0)
[create-3] [INFO] [1744305889.756342344] [ros_gz_sim]: Waiting messages on topic [robot_description].
[create-3] [INFO] [1744305889.854737161] [ros_gz_sim]: Requested creation of entity.

I also ran in the same terminal and it still does not work.
sudo apt install ros-jazzy-gz-ros2-control

I am not able to move the robot using the keyboard and also I am not able to echo /rosbot_x1_controller/cmd_vel
when I run, I only see -
ros2 topic list
/clock
/joint_states
/parameter_events
/robot_description
/rosout
/scan
/tf
/tf_static

Since you are launching it in the rosject, you don’t need to install anything because everything is ready.

I have tested everything from zero and I can assure it works. So let me tell you a few steps:

  1. Go and delete your current rosject. So you can start from zero. Make sure the rosject has been deleted otherwise the step number 2 will not work
  2. Copy the rosject again (you can do it from this link: https://app.theconstruct.ai/l/68e888b2/ )
  3. Open the rosject
  4. wait until everything is ready. You should see a terminal that automatically appears and starts installing everything needed
  5. Once that has finished, launch the simulation
  6. Once the simulation is up and running and you can see the robot, launch the keyboard teleop

That should work for sure. Let me know if you still have problems

Hello! I’m also encountering an issue when trying to connect to the robot. The simulation opens successfully, but I’m unable to control the robot using the teleop keys or by running the publisher package from the tutorial.

Here’s exactly what I did:

  1. I deleted my existing rosject (I confirmed I had no other rosjects).
  2. I clicked on this link to copy the rosject: https://app.theconstruct.ai/l/68e888b2/
  3. I opened the project.
  4. The terminal automatically opened and began installing dependencies.
  5. After the installation completed, I ran the following commands:
source ~/sim_ws/install/setup.bash
ros2 launch rosbot_xl_gazebo simulation.launch.py

The simulation launched, and I could see the robot. However, I got the following output in the terminal:

user:~$ source ~/sim_ws/install/setup.bash
user:~$ ros2 launch rosbot_xl_gazebo simulation.launch.py
[INFO] [launch]: All log files can be found below /home/user/.ros/log/2025-0
4-14-16-43-06-067008-4_xterm-2262
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [launch.user]: Robots:
[INFO] [launch.user]: Launching namespace= with init_pose= {'x': '0.0', 'y':
 '0.0', 'z': '0.2', 'roll': '0.0', 'pitch': '0.0', 'yaw': '0.0'}
/opt/ros/jazzy/lib/python3.12/site-packages/launch/conditions/launch_configu
ration_equals.py:53: UserWarning: The 'LaunchConfigurationEquals' and 'Launc
hConfigurationNotEquals' Conditions are  deprecated. Use the 'EqualsSubstitu
tion' and 'NotEqualsSubstitution' substitutions instead! E.g.:
  IfCondition(
        EqualsSubstitution(LaunchConfiguration('some_launch_arg'), "some_equality_check")
  )
  warnings.warn(
[INFO] [DISPLAY=:2 ruby $(which gz) sim-1]: process started with pid [2266]
[INFO] [parameter_bridge-2]: process started with pid [2269]
[INFO] [create-3]: process started with pid [2271]
[INFO] [robot_state_publisher-4]: process started with pid [2273]
[INFO] [spawner-5]: process started with pid [2275]
[INFO] [parameter_bridge-6]: process started with pid [2277]
[create-3] [INFO] [1744648986.798287812] [ros_gz_sim]: Requesting list of world names.
[robot_state_publisher-4] [INFO] [1744648986.851711752] [robot_state_publisher]: Robot initialized
[parameter_bridge-2] [INFO] [1744648986.951030738] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/clock (ignition.msgs.Clock) -> /clock (rosgraph_msgs/msg/Clock)] (Lazy 0)
[spawner-5] [INFO] [1744648987.441809934] [spawner_joint_state_broadcaster]: waiting for service /controller_manager/list_controllers to become available...
[DISPLAY=:2 ruby $(which gz) sim-1] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-user'
[parameter_bridge-6] [INFO] [1744648987.909264150] [ros_gz_lidar_bridge]: Creating GZ->ROS Bridge: [/scan (ignition.msgs.LaserScan) -> /scan (sensor_msgs/msg/LaserScan)] (Lazy 0)
[parameter_bridge-6] [INFO] [1744648987.916883656] [ros_gz_lidar_bridge]: Creating ROS->GZ Bridge: [/scan (sensor_msgs/msg/LaserScan) -> /scan (ignition.msgs.LaserScan)] (Lazy 0)
[create-3] [INFO] [1744648988.277800741] [ros_gz_sim]: Waiting messages on topic [robot_description].
[create-3] [INFO] [1744648988.290447926] [ros_gz_sim]: Requested creation of entity.
[create-3] [INFO] [1744648988.290517882] [ros_gz_sim]: OK creation of entity.
[INFO] [create-3]: process has finished cleanly [pid 2271]
[DISPLAY=:2 ruby $(which gz) sim-1] MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)
[DISPLAY=:2 ruby $(which gz) sim-1] glx: failed to create drisw screen
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="slamtec_rplidar_sensor"]/gz_frame_id:<urdf-string>:L0]: XML Element[gz_frame_id], child of element[sensor], not defined in SDF. Copying[gz_frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="imu"]/frame_id:<urdf-string>:L0]: XML Element[frame_id], child of element[sensor], not defined in SDF. Copying[frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="imu"]/ignition_frame_id:<urdf-string>:L0]: XML Element[ignition_frame_id], child of element[sensor], not defined in SDF. Copying[ignition_frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Error while loading the library [/opt/ros/jazzy/lib/libgz_ros2_control-system.so]: libdiagnostic_updater.so: cannotopen shared object file: No such file or directory
[DISPLAY=:2 ruby $(which gz) sim-1] [Err] [SystemLoader.cc:107] Failed to load system plugin: (Reason: No plugins detected in library)
[DISPLAY=:2 ruby $(which gz) sim-1] - Requested plugin name: [gz_ros2_control::GazeboSimROS2ControlPlugin]
[DISPLAY=:2 ruby $(which gz) sim-1] - Requested library name: [gz_ros2_control-system]
[DISPLAY=:2 ruby $(which gz) sim-1] - Resolved library path: [/opt/ros/jazzy/lib/libgz_ros2_control-system.so]
[DISPLAY=:2 ruby $(which gz) sim-1] MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)
[DISPLAY=:2 ruby $(which gz) sim-1] glx: failed to create drisw screen
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="slamtec_rplidar_sensor"]/gz_frame_id:<data-string>:L117]: XML Element[gz_frame_id], child of element[sensor], not defined in SDF. Copying[gz_frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="imu"]/frame_id:<data-string>:L186]: XML Element[frame_id], child of element[sensor], not defined inSDF. Copying[frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="imu"]/ignition_frame_id:<data-string>:L187]: XML Element[ignition_frame_id], child of element[sensor], not defined in SDF. Copying[ignition_frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="slamtec_rplidar_sensor"]/gz_frame_id:<data-string>:L117]: XML Element[gz_frame_id], child of element[sensor], not defined in SDF. Copying[gz_frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="imu"]/frame_id:<data-string>:L186]: XML Element[frame_id], child of element[sensor], not defined inSDF. Copying[frame_id] as children of [sensor].
[DISPLAY=:2 ruby $(which gz) sim-1] Warning [Utils.cc:132] [/sdf/model[@name="rosbot_xl"]/link[@name="base_link"]/sensor[@name="imu"]/ignition_frame_id:<data-string>:L187]: XML Element[ignition_frame_id], child of element[sensor], not defined in SDF. Copying[ignition_frame_id] as children of [sensor].
[spawner-5] [FATAL] [1744649108.732512208] [spawner_joint_state_broadcaster]: Could not contact service /controller_manager/list_controllers
[ERROR] [spawner-5]: process has died [pid 2275, exit code 1, cmd '/opt/ros/jazzy/lib/controller_manager/spawner joint_state_broadcaster --controller-manager controller_manager --controller-manager-timeout 120 --namespace --ros-args -p use_sim_time:=True -p use_sim_time:=True -p use_sim_time:=True -p use_sim_time:=True'].
[INFO] [spawner-7]: process started with pid [2743]
[spawner-7] [INFO] [1744649110.776977404] [_robot_controller_spawner]: waiting for service /controller_manager/list_controllers to become available...
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[robot_state_publisher-4] [INFO] [1744649188.210410946] [rclcpp]: signal_handler(signum=2)
[parameter_bridge-6] [INFO] [1744649188.210429831] [rclcpp]: signal_handler(signum=2)
[parameter_bridge-2] [INFO] [1744649188.210650316] [rclcpp]: signal_handler(signum=2)

It looks like the problem is related to a plugin error:

[Err] [SystemLoader.cc:107] Failed to load system plugin: (Reason: No plugins detected in library)
Requested plugin name: [gz_ros2_control::GazeboSimROS2ControlPlugin]
Requested library name: [gz_ros2_control-system]
Resolved library path: [/opt/ros/jazzy/lib/libgz_ros2_control-system.so]

Do you know if this is a known issue or if there’s a workaround for this plugin error?
Thanks in advance!

I was able to solve issue and created following pdf for support -

It worked thanks! Later I also had a problem with the gazebo simulation being too slow, which caused the controller reach a timeout and not be loaded successfully, but running the command again worked.

Hello there!

This issue is actually really weird. I just tested myself copying the rosject from zero and moving the robot with teleop, and it worked just fine.

Looking at this error message shared by @babsbueno

[Err] [SystemLoader.cc:107] Failed to load system plugin: (Reason: No plugins detected in library)
Requested plugin name: [gz_ros2_control::GazeboSimROS2ControlPlugin]
Requested library name: [gz_ros2_control-system]
Resolved library path: [/opt/ros/jazzy/lib/libgz_ros2_control-system.so]

I’d say the problem is that for some reason, the automatic script that should install the required dependencies (including the ros-jazzy-gz-ros2-control package) is not running in your rosjects. If this is indeed the problem, you can manually run this script by typing the following command:

bash /home/user/course_install.sh

This should fix the problem of the missing plugin. In any case, it’s great to see that @therahulthorat found a workaround, and you even created a PDF file with the steps! Good job!

Best,

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