Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/qualcomm-qrb-ros/qrb_ros_simulation/llms.txt

Use this file to discover all available pages before exploring further.

The QRB Mobile Manipulator combines the QRB Robot Base AMR with the RML-63 6-DOF robotic arm into a single mobile manipulation platform. It inherits the full sensor suite of the AMR Mini — LiDAR, IMU, odometry, RGB camera, and depth camera — alongside the arm and gripper controllers from the RML-63. Launching it follows the same two-step process as the standalone arm: start Gazebo first, press Play, then load the controllers in a separate terminal.

Launch the simulation

1

Launch Gazebo with the Mobile Manipulator

In your first terminal, source your install overlay and launch the mobile manipulator:
source ~/qrb_ros_simulation_ws/install/local_setup.sh
ros2 launch qrb_ros_sim_gazebo gazebo_mobile_manipulator.launch.py
Gazebo opens and spawns the combined robot in the default warehouse world. The robot state publisher starts immediately and the AMR sensor bridges come up automatically.
2

Press Play in Gazebo

Click the Play button in the Gazebo toolbar. The simulation clock starts and the ros2_control controller manager becomes reachable.
Do not proceed to the next step until you have pressed Play. The controller manager is not active until the simulation is running, and the loader launch will time out if you skip this step.
3

Load the arm and gripper controllers

Open a new terminal, source the install overlay, and run the controller loader:
source ~/qrb_ros_simulation_ws/install/local_setup.sh
ros2 launch qrb_ros_sim_gazebo gazebo_rml_63_gripper_load_controller.launch.py
This spawns the same three controllers used by the standalone RML-63:
  • joint_state_broadcaster — broadcasts all joint states to /joint_states.
  • rm_group_controllerJointTrajectoryController for the six arm joints.
  • hand_controllerJointTrajectoryController for the four gripper joints.

Controlling the robot

Base movement

Send velocity commands to move the AMR base:
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5}, angular: {z: 0.3}}"

Arm movement

Send joint trajectory goals to the arm using the FollowJointTrajectory action:
/rm_group_controller/follow_joint_trajectory
The action type is control_msgs/action/FollowJointTrajectory. See RML-63 Robotic Arm for detailed arm control information including joint names and gripper joints.

ROS topics

Base and arm state

TopicTypeDescription
/cmd_velgeometry_msgs/msg/TwistVelocity command for the AMR base (subscribed)
/joint_statessensor_msgs/msg/JointStatePositions and velocities for all joints
/odomnav_msgs/msg/OdometryWheel odometry: position and velocity
/tftf2_msgs/msg/TFMessageReal-time coordinate frame transforms
/tf_statictf2_msgs/msg/TFMessageStatic coordinate frame transforms
/robot_descriptionstd_msgs/msg/StringURDF model published by robot_state_publisher
/clockrosgraph_msgs/msg/ClockSimulation time

Sensors

TopicTypeDescription
/scansensor_msgs/msg/LaserScanLiDAR scan data
/imusensor_msgs/msg/ImuAcceleration and angular velocity
/camera/color/image_rawsensor_msgs/msg/ImageRGB camera image stream
/camera/color/camera_infosensor_msgs/msg/CameraInfoRGB camera intrinsic parameters
/camera/depth/image_rawsensor_msgs/msg/ImageDepth image stream
/camera/depth/camera_infosensor_msgs/msg/CameraInfoDepth camera intrinsic parameters
/camera/depth/pointssensor_msgs/msg/PointCloud23D point cloud from depth camera
For in-depth arm control guidance — including joint names, action interface details, and gripper control — see RML-63 Robotic Arm.

Build docs developers (and LLMs) love