yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ROSMASTER X3 Plus📖
1.Preparation and First Trial
  • 1.1 Wiring Introduction
  • 1.2 Precautions for battery
  • 1.3 First Trial
  • 1.4 Precautions for DIY Robotic Arm
2. Assembly steps
  • Installation Video
3.Remote control course
  • 3.1 APP remote control
  • 3.2 Model aircraft remote control
  • 3.3 Handle remote control
4.Hardware course
  • 4.1 About expansion board_V3.0
  • 4.1 About expansion board_V1.0
  • 4.2 STM32 Development
  • 4.3 Button to control the buzzer
  • 4.4 FreeRTOS application
  • 4.5 Serial communication
  • 4.6 SBUS model aircraft remote control
  • 4.7 CAN bus communication
  • 4.8 RGB colorful light bar
  • 4.9 Timer interrupt to control
  • 4.10 Control serial port servos
  • 4.11 Nine-axis attitude sensor
  • 4.12 Control motor
  • 4.13 Timer captures the encoder data
  • 4.14 Kinematic Analysis
  • 4.15 PID control robot movement
5.Basic course
  • 5.1 Update the firmware
  • 5.2 Turn off the self-starting process
  • 5.3 Install the Rosmaster driver
  • 5.4 Buzzer whistle
  • 5.5 Control PWM servo
  • 5.6 RGB colorful light bar
  • 5.7 Control motor
  • 5.8 Control robot movement
  • 5.9 Control Serial Servo
6.Linux operating system
  • 6.1 Virtual machine installation
  • 6.2 Linux basics
  • 6.3 Remote control
  • 6.4 Multi-machine communication
  • 6.5 Static IP and hotspot mode
  • 6.6 Bind the device ID
  • 6.7 Web page real-time monitor
  • 6.8 Expansion tutorial
  • 6.9.1 Jetson Nano write sytem
  • 6.9.2 Jetson Xavier NX write system
  • 6.9.3 Jetson TX2 NX write system
  • 6.9.4 Raspberry Pi write system
7.Docker-Just for pi5
  • 7.1 Docker overview and docker installation
  • 7.2 Common commands for docker image containers
  • 7.3 Docker images deeply understand and publish images
  • 7.4 Docker hardware interaction and data processing
  • 7.5 Enter the bot's docker container
  • 7.6 Robot development environment construction in Docker
  • 7.7 How customers can update docker images in the future
8.ROS basic course
  • 8.1 ROS introduction
  • 8.2 ROS installation
  • 8.3 ROS common command tools
  • 8.4 ROS workspace
  • 8.5 ROS function package
  • 8.6 ROS node
  • 8.7 ROS topic publisher
  • 8.8 ROS topic subscribers
  • 8.9 ROS service client
  • 8.10 ROS service server
  • 8.11 ROS action client
  • 8.12 ROS action server
  • 8.13 ROS custom message reception
  • 8.14 ROS-launch file
  • 8.15 ROS-TF transformation
  • 8.16 ROS parameter service
  • 8.17 ROS-rviz use
  • 8.18 ROS-rqt tool usage
  • 8.19 Topic message recording and playback
  • 8.20 urdf model introduction
  • 8.21 gazebo introduction
  • 8.22 ROS distributed communication
9.OpenCV courses
  • 9.1 Getting started with Open Source CV
  • 9.2 Geometric transformation
  • 9.3 Image processing and draw
  • 9.4 Image beautification
  • 9.5 Opencv application
  • 9.6 AR vision
  • 9.7 AR QR code
  • 9.8 ROS+Opencv foundation
  • 9.9 ROS+Opencv application
  • 9.10 Data transformation
  • 9.11 MediaPipe development
10.Robot control course
  • 10.1 PID algorithm theory
  • 10.2 Robot PID debugging
  • 10.3 Robot information release
  • 10.4 Robot keyboard control
  • 10.5 Robot handle control
  • 10.6 Robot state estimation
  • 10.7 Robot calibration
  • 10.8 Robot URDF model
11.Depth camera course
  • 11.1 How to use the Astra camera
  • 11.2 Astra camera calibration
  • 11.3 Astra Color Tracking
  • 11.4 Astra Object Tracking
  • 11.5 Visual tracking autopilot
  • 11.6 Pure visual 2D mapping
  • 11.7 RTAB-Map 3D mapping
  • 11.8 ORB_SLAM2 basics
  • 11.9 ORB_SLAM2_Octomap
12.Lidar course
  • 12.1 Lidar basic-SLAM
  • 12.1 Lidar basic-EAI
  • 12.2 Lidar avoiding
  • 12.3 Lidar guard
  • 12.4 Lidar follow
  • 12.5 Patrol game
  • 12.6 gmapping mapping algoritm
  • 12.7 hector mapping algorithm
  • 12.8 karto mapping algorithm
  • 12.9 cartographer mapping
  • 12.10 rrt_exploration mapping
  • 12.11 AMCL
  • 12.12 Navigation and avoiding
  • 12.13 APP mapping and navigation
13.Multi-robot control course
  • 13.1 Multi-machine handle control
  • 13.2 Multi-machine navigation
  • 13.3 Multi-machine formation
  • 13.4 Multi-machine surround
14.Deep learning courses
  • 14.1 KNN recognizes handwritten
  • 14.2 Basic use of TensorFlow
  • 14.3 Basic use of PyTorch(jetson)
  • 14.4 yolov5 model training(jetson)
  • 14.5 yolov5+tensorrt acceleration
  • 14.6 yolov4-tiny
15.Voice control courses
  • 0. How to use old voice module in new image
  • 15.1 Introduction of voice control-new
  • 15.2 Voice control module port-new
  • 15.3.Introduction of voice module-old
  • 15.4.Voice control module port binding-old
  • 15.5 Voice control car movement
  • 15.6 Voice control Autopilot
  • 15.7 Voice control color recogzition
  • 15.8 Voice control color tracking
  • 15.9 Voice control multi-point nagavation
16.Robotic arm control course
  • 16.1 MoveIt configuration
  • 16.2 MoveIt control the real machine
  • 16.3 MoveIt moves randomly
  • 16.4 MoveIt kinematics design
  • 16.5 MoveIt cartesian path
  • 16.6 MoveIt avoiding
  • 16.7 MoveIt scene design
  • 16.8 MoveIt trajectory planning
  • 16.9 Mediapipe palm control car
  • 16.10 Mediapipe gesture control robotic arm
  • 16.11 Mediapipe gesture control car
  • 16.12 Mediapipe arm attitude control robotic arm
  • 16.13 Mediapipe recognizes and tracks palm control robotic arm
  • 16.14 Recognizes color block and handling
  • 16.15 Autopilot to clear obstacles
17.Voice control robotic arm course
  • 17.1 Voice control robotic arm movement
  • 17.2 Voice control robotic arm learning
  • 17.3 Voice control color block transport
  • 17.4 Voice control robotic arm grip objects
  • 17.5 Voice control robotic arm garbage sorting
18.Model training Autopilot
  • 18.0 ReadMe
  • 18.1 yolov5 to train traffic signs
  • 18.2 TensorRt acceleration identification mark
  • 18.3 Road sign indication function description
  • 18.4 Collect data
  • 18.5 Training model
  • 18.6 Model transformation and application
  • 18.7 AI Autopilot
19.For Orin-Remote control course
1. APP control
  • 1. APP control
  • 2. Model aircraft control
  • 3. Handle control
2. Model aircraft control
3. Handle control
20.Orin-Hardware course
  • 1. About expansion board_V1.0
  • 1. About expansion board_V2.0
  • 2. STM32 Development environment
  • 3. Button control
  • 4. FreeRTOS application
  • 5. Serial communication
  • 6. SBUS model aircraft remote control
  • 7. CAN bus communication
  • 8. RGB colorful light bar
  • 9. Timer interrupt to control PWM servo
  • 10. Control serial port servos
  • 11. Nine-axis attitude sensor to obtain data
  • 12. Control motor
  • 13. Timer captures the encoder data
  • 14. Robot kinematics analysis theory
  • 15. PID control robot movement
21.Orin-Basic course
  • 1. Update the firmware
  • 2. Turn off the self-starting process at startup
  • 3. Install the Rosmaster driver library
  • 4. Buzzer whistle
  • 5. Control PWM servo
  • 6. RGB colorful light bar special effects display
  • 7. Control motor
  • 8. Control robot movement
  • 9. Control Serial Servo
22.Orin-Linux operating systemnew
  • 1. Virtual machine installation and use
  • 2. Linux basics
  • 3. Remote control
  • 4. Multi-machine communication configuration
  • 5. Static IP and hotspot mode
  • 6. Bind the device ID
  • 7. Web page real-time monitoring
  • 8. Expansion tutorial
  • 9.1 Jetson Nano write sytem
  • 9.2 Jetson Xavier NX write system
  • 9.3 Jetson TX2 NX-Orin series write system
  • 9.4 Raspberry Pi write system
  • 10.Jetpack old system upgraded to SUPER system
23.Orin-Dockernew
SUPER image uses ros environment in docker
  • 1、Docker overview and docker installationnew
  • 2、Common commands for docker image containersnew
  • 3、Docker images deeply understand and publish imagesnew
  • 4、Docker hardware interaction and data processingnew
  • 5、Enter the bot's docker containernew
  • 6、Robot development environment construction in Dockernew
23.Orin-ROS basic course
  • 1.ROS introduction
  • 2.Project file structure
  • 3.Common commands and tools
  • 4.Publisher
  • 5.Subscribers
  • 6.Customize topic messages and use
  • 7.Client
  • 8.Server
  • 9.Custom service messages and usage
  • 10.TF release and monitoring
24.Orin-OpenCV courses
  • 1. Getting started with Open Source CV
  • 2. Open Source CV geometric transformation
  • 3. Open Source CV image processing and drawing text line segments
  • 4. Open Source CV image beautification
  • 5. Opencv application
  • 6. AR vision
  • 7. AR QR code
  • 8. ROS+Opencv foundation
  • 9. ROS+Opencv application
  • 10. Data transformation and point cloud
  • 11. MediaPipe development
25.Orin-Robot control course
  • 1.PID algorithm theory
  • 2.Robot PID debugging
  • 3.Robot information release
  • 4.Robot keyboard control
  • 5.Robot handle control
  • 6.Robot state estimation
  • 7.Robot calibration
  • 8.Robot URDF model
26.Orin-Depth camera course
  • 01.How to use the Astra camera
  • 02.Astra camera calibration
  • 03.Astra Color Tracking
  • 04.Astra Object Tracking
  • 05.Visual tracking autopilot
  • 06.Pure visual 2D mapping and navigation
  • 07.RTAB-Map 3D mapping navigation
  • 08.ORB_SLAM2 basics
  • 09.ORB_SLAM2_Octomap
27.Orin-Lidar course
  • 1.Lidar basic-4ROS-EAI
  • 1.Lidar basic-SLAM
  • 2.Lidar avoiding
  • 3.Lidar guard
  • 4.Lidar follow
  • 5.Patrol game
  • 6.gmapping mapping algorithm
  • 7.hector mapping algorithm
  • 8.karto mapping algorithm
  • 9.cartographer mapping algorithm
  • 10.rrt_exploration mapping algorithm
  • 11.AMCL
  • 12.Navigation and avoiding
  • 13.APP mapping and navigation
28.Orin-Multi-robot control course
  • 1.Multi-machine handle control
  • 2.Multi-machine navigation
  • 3.Multi-machine formation
  • 4.Multi-machine surround
29.Orin-Deep learning courses
  • 1.KNN recognizes handwritten digits
  • 2.Basic use of TensorFlow
  • 3.Basic use of PyTorch(jetson)
  • 4.YOLOv11Model conversion(SUPER)new
  • 5.YOLOv11Dataset annotation(SUPER)new
  • 6.YOLOv11Model conversion + tensorrt acceleration(SUPER)new
  • 7.YOLOv11Object recognition(SUPER)new
30.Orin-Voice control courses
  • 0. How to use old voice module in new image
  • 1.1 Introduction of voice module-new
  • 1.2 Introduction of voice module-old
  • 2.1 Voice control module port binding-new
  • 2.2 Voice control module port binding-old
  • 3. Voice control car movement
  • 4. Voice control Autopilot
  • 5. Voice control color recognition
  • 6. Voice control color tracking
  • 7. Voice control multi-point navigation
31.Orin-Robotic arm control course
  • 1.MoveIt configuration(VM)
  • 2.MoveIt control the real machine(VM)
  • 3.MoveIt moves randomly(VM)
  • 4.MoveIt kinematics design(VM)
  • 5.MoveIt cartesian path(VM)
  • 6.MoveIt avoiding(VM)
  • 7.MoveIt scene design(VM)
  • 8.MoveIt trajectory planning(VM)
  • 9.Mediapipe palm control car
  • 10.Mediapipe gesture control robotic arm
  • 11.Mediapipe gesture control car
  • 12.Mediapipe arm attitude control robotic arm
  • 13.Mediapipe recognizes and tracks palm control robotic arm
  • 14.Recognizes color block and handling
  • 15.Autopilot to clear obstacles
32.Orin-Voice control robotic arm course
  • 1.Voice control robotic arm movement
  • 2.Voice control robotic arm learning
  • 3.Voice control color block transport
  • 4.Voice control robotic arm grip objects
  • 5.Voice control robotic arm garbage sorting
LLM tutorial
1.Development environment
  • 0. Model usage instructions
  • 1.Environments deployment
  • 2.Dialogue platform installation
2.Jetson Nano B01
  • 1.Qwen2 model
  • 2.TinyLlama model
  • 3.Phi-3 model
  • 4.Gemma model
  • 5.Orca Mini model
  • 6.StarCoder2 model
  • 7.DeepSeek-R1 model
  • 8.Expand LLaVA-Phi3
3.Jetson Orin NXNANO
  • 1.Llama3 model
  • 2.Qwen2 model
  • 3.Phi-3 model
  • 4.Gemma model
  • 5.WizardLM2 model
  • 6.Codellama model
  • 7.DeepSeek-R1 model
  • 8.Orca Mini model
  • 9.StarCoder2 model
  • 10.TinyLlama model
  • 11.Expand LLaVA
  • 12.Expand LLaVA-Phi3
4.Raspberry Pi 5B
  • 1.Meta AI Llama3 model
  • 2.Qwen2 model
  • 3.Phi-3 model
  • 4.Gemma model
  • 5.WizardLM2 model
  • 6.Meta AI Codellama model
  • 7.DeepSeek-R1 model
  • 8.Expand LLaVA
FAQ
  • Using your own Jetson board, car cannot start normally
Download
  • RemoteCtrl_APP(iOS/Android)
  • Mapping_APP(iOS_Android)
  • SystemFile_OrinNANOSUPER
  • SystemFile_OrinNXSUPER
  • SystemFile_RPi_NANO
  • Instruction Manual
  • Code
  • Autopilot Annex
  • VM software
  • Jetson_Boot_USB.tar.gz
  • Other_Annex_File
Download ZIP
FAQ
  • 1、How to connect OLED?
  • 2、Precautions for DIY Robotic Arm

Welcome to ROSMASTER X3 Plus repository

11.7 RTAB-Map 3D mapping

7. RTAB-Map 3D mapping navigation

7. RTAB-Map 3D mapping navigation7.1. Introduction7.2. Map construction and use7.2.1. Start7.2.2. Map construction7.3. Navigation and obstacle avoidance7.3.1. Single-point navigation7.3.2. Multi-point navigation7.3.3. Parameter configuration7.4, node rtabmap7.4.1. Subscribe to topics7.4.2. Publishing topics7.4.3, Service7.4.4. Parameters7.4.5, tf conversion7.5, node rtabmapviz7.5.1. Subscribe to topics7.5.2. Parameter configuration7.5.3. Required tf conversion

wiki: http://wiki.ros.org/rtabmap_ros

7.1. Introduction

This package is a ROS function package for RTAB Map, an RGB-D SLAM method based on a global loop closure detector with real-time constraints. This package can be used to generate 3D point clouds of environments and create 2D occupancy raster maps for navigation.

Overview

As can be seen from the above figure, Monte Carlo positioning amcl is not required. RTAB Map has its own positioning function; if used, it will cause repeated positioning and positioning failure. When using RTAB Map to navigate the core framework, the initialized map is provided by RTAB Map, not map_server.

7.2. Map construction and use

Note: When building a map, the slower the speed, the better the effect (note that the rotation speed should be slower). If the speed is too fast, the effect will be poor.

According to different models, you only need to set the purchased model in [.bashrc], X1 (normal four-wheel drive) X3 (Mailun) Take X3 as an example

xxxxxxxxxx
#Raspberry Pi 5 master needs to enter docker first, please perform this step
#If running the script into docker fails, please refer to ROS/07, Docker tutorial
~/run_docker.sh

Open the [.bashrc] file

xxxxxxxxxx
sudo vim .bashrc

Find the [ROBOT_TYPE] parameters and modify the corresponding car model

xxxxxxxxxx
export ROBOT_TYPE=X3 # ROBOT_TYPE: X1 X3 X3plus R2 X7

7.2.1. Start

Start the underlying driver command (robot side)

xxxxxxxxxx
roslaunch yahboomcar_nav laser_astrapro_bringup.launch

<PI5 needs to open another terminal to enter the same docker container

image-20240408144126098

Command to start mapping or navigation (robot side)

xxxxxxxxxx
roslaunch yahboomcar_nav yahboomcar_rtabmap.launch use_rviz:=False
  • use_rviz parameter: whether to open rviz.

Start visualization (virtual machine)

xxxxxxxxxx
roslaunch yahboomcar_nav view_rtabmap.launch

Keyboard control node (virtual machine)

xxxxxxxxxx
rosrun teleop_twist_keyboard teleop_twist_keyboard.py # System integration
roslaunch yahboomcar_ctrl yahboom_keyboard.launch # yahboomcar customization

7.2.2. Map construction

After starting according to the above method, choose any method to control the mapping (handle control is recommended); the slower the speed when constructing the map, the better the effect (especially the angular speed); the robot will cover the area to be mapped and the map will be as closed as possible.

  • Joystick control

  • Keyboard control

image-20220228113707763

When the map construction is completed, directly [ctrl+c] exit the map construction node, and the system will automatically save the map. The default saving path of the map is [~/.ros/rtabmap.db].

View tf tree

xxxxxxxxxx
rosrun rqt_tf_tree rqt_tf_tree

rtabframes

Node view

xxxxxxxxxx
rqt_graph

rtabrosgraph

As can be seen from the above figure, the information that the [rtabmap] node needs to subscribe to: radar data, camera data, and tf data.

7.3. Navigation and obstacle avoidance

Note: [R2] on the remote control handle has the function of canceling the target point.

Start the underlying driver command (robot side)

xxxxxxxxxx
roslaunch yahboomcar_nav laser_astrapro_bringup.launch

Command to start mapping or navigation (robot side)

xxxxxxxxxx
roslaunch yahboomcar_nav yahboomcar_rtabmap_nav.launch use_rviz:=False
  • use_rviz parameter: whether to open rviz.

Start visualization (virtual machine)

xxxxxxxxxx
roslaunch yahboomcar_nav view_rtabmap_nav.launch

Keyboard control node (virtual machine)

xxxxxxxxxx
rosrun teleop_twist_keyboard teleop_twist_keyboard.py # System integration
roslaunch yahboomcar_ctrl yahboom_keyboard.launch # yahboomcar customization

When the navigation mode is turned on, the system automatically loads the 2D raster map. It cannot directly load the 3D map and needs to be loaded manually.

image-20220228113955497

Load the three-dimensional map (1, 2, 3), 4 is to add the rviz debugging tool.

image-20220228114110223

At this time, you can manually add [MarkerArray] to facilitate multi-point navigation and observation, and adjust [rviz] display parameters according to needs, such as the size of lidar points.

7.3.1. Single-point navigation

  • Use the [2D Pose Estimate] of the [rviz] tool to set the initial pose until the position of the car in the simulation is consistent with the position of the actual car.

  • Click [2D Nav Goal] of the [rviz] tool, and then select a target point on the map where there are no obstacles. Release the mouse to start navigation. Only one target point can be selected, and it will stop when it is reached.

7.3.2. Multi-point navigation

  • Same as the first step of single-point navigation, first set the initial pose of the car.

  • Click [Publish Point] of the [rviz] tool, and then select the target point on the map where there are no obstacles. Release the mouse to start navigation. You can click [Publish Point] again, and then select the point, and the robot will click on it. Cruising between points.

  • When using the [2D Pose Estimate] tool of the [rviz] tool to set the initial pose of the car, the multi-point navigation function is automatically canceled.

7.3.3. Parameter configuration

After starting the navigation function, open the dynamic parameter adjustment tool, adjust according to your own needs, and observe the robot's motion status until the effect is optimal. Record the current parameters and modify them to the corresponding dwa_local_planner_params.yaml file under the yahboomcar_nav function package.

xxxxxxxxxx
rosrun rqt_reconfigure rqt_reconfigure

image-20220223154728183

Looking at the yahboomcar_navigation.launch file, we can see that the navigation parameters are modified in the move_base.launch file under the yahboomcar_rtabmap_nav function package.

xxxxxxxxxx
<launch>
     <!-- Whether to open rviz || Whether to open rviz -->
     <arg name="use_rviz" default="false"/>
     <!-- MarkerArray node-->
     <node name='send_mark' pkg="yahboomcar_nav" type="send_mark.py"/>
     <!-- Mobile APP node -->
     <include file="$(find yahboomcar_nav)/launch/library/app.launch"/>
     <!-- Navigation core component move_base -->
     <include file="$(find yahboomcar_nav)/launch/library/move_base.launch"/>
     <!-- rtabmap navigation -->
     <include file="$(find yahboomcar_nav)/launch/library/rtabmap_nav.launch"/>
     <!-- RVIZ -->
     <include file="$(find yahboomcar_nav)/launch/view/view_rtabmap_nav.launch" if="$(arg use_rviz)"/>
</launch>

Find the move_base.launch file and open the example file as follows. It can be modified and replaced according to your needs. At this time, [DWA Planner] is selected and the [DWA] file is loaded.

xxxxxxxxxx
<launch>
     <arg name="robot_type" value="$(env ROBOT_TYPE)" doc="robot_type [X1,X3,X3plus,R2,X7]"/>
     <!-- Arguments -->
     <arg name="move_forward_only" default="false"/>
     <!-- move_base -->
     <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
         <rosparam file="$(find yahboomcar_nav)/param/common/global_costmap_params.yaml" command="load"/>
         <rosparam file="$(find yahboomcar_nav)/param/common/local_costmap_params.yaml" command="load"/>
         <rosparam file="$(find yahboomcar_nav)/param/common/move_base_params.yaml" command="load"/>
         <rosparam file="$(find yahboomcar_nav)/param/common/costmap_common_params_$(arg robot_type).yaml" command="load"
             ns="global_costmap"/>
         <rosparam file="$(find yahboomcar_nav)/param/common/costmap_common_params_$(arg robot_type).yaml" command="load"
             ns="local_costmap"/>
         <rosparam file="$(find yahboomcar_nav)/param/common/dwa_local_planner_params_$(arg robot_type).yaml" command="load"/>
         <param name="base_local_planner" type="string" value="dwa_local_planner/DWAPlannerROS" if="$(eval arg('robot_type') == 'X3')"/>
         <!-- <param name="base_local_planner" type="string" value="teb_local_planner/TebLocalPlannerROS"/>--><param name="DWAPlannerROS/min_vel_x" value="0.0" if="$(arg move_forward_only)"/>
         <remap from="cmd_vel" to="cmd_vel"/>
         <remap from="odom" to="odom"/>
     </node>
</launch>

Note: When using the DWA planner, the difference between an omnidirectional car and a differential car lies in whether the speed in the Y direction is 0. There are clear comments in it, which can be modified according to the actual situation.

Enter the dwa_local_planner_params.yaml file under the yahboomcar_nav function package. Some parameters are as follows:

xxxxxxxxxx
DWAPlannerROS:
   # Robot Configuration Parameters
   # Absolute value of maximum linear velocity in x direction, unit: meters/second
   # The maximum y velocity for the robot in m/s
   max_vel_x: 0.6
   # The absolute value of the minimum linear velocity in the x direction, a negative number means it can be retreated, unit: meters/second
   # The minimum x velocity for the robot in m/s, negative for backwards motion.
   min_vel_x: -0.6
   # Absolute value of the maximum linear velocity in the y direction, unit: meters/second. The differential robot is 0
   # The maximum y velocity for the robot in m/s
   max_vel_y: 0.3
   # The absolute value of the minimum linear velocity in the y direction, unit: meters/second. The differential robot is 0
   # The minimum y velocity for the robot in m/s
   min_vel_y: -0.3
... ...
   #The ultimate acceleration of the robot in the x direction, the unit is meters/sec^2
   # The x acceleration limit of the robot in meters/sec^2
   acc_lim_x: 10.0
   # The ultimate acceleration of the robot in the y direction, which is 0 for differential robots
   # The y acceleration limit of the robot in meters/sec^2
   acc_lim_y: 10.0
... ..

Other parameter files can be opened, combined with comments and courseware, and modified according to your own needs.

7.4, node rtabmap

This is the master node for this package. It is a wrapper around the RTAB mapping core library. Here, when loop closure is detected, the map is incrementally built and optimized. The node's online output is this map, which contains the latest data added to the map. The default location of the RTAB map database is [.ros/rtabmap.db], and the workspace is also set to [.ros].

7.4.1. Subscribe to topics

NameTypeParse
odomnav_msgs/OdometryOdometry. If the parameter subscribe_depth or subscribe_stereo is true; and odom_frame_id is not set, this is a required parameter.
rgb/imagesensor_msgs/ImageRGB/monocular image.
rgb/camera_infosensor_msgs/CameraInfoRGB camera parameters.
depth/imagesensor_msgs/ImageDepth image.
scansensor_msgs/LaserScanSingle line laser.
scan_cloudsensor_msgs/PointCloud2Laser scanning point cloud stream.
left/image_rectsensor_msgs/ImageLeft eye correction image.
left/camera_infosensor_msgs/CameraInfoLeft eye camera parameters.
right/image_rectsensor_msgs/ImageRight eye correction image.
right/camera_infosensor_msgs/CameraInfoRight eye camera parameters.
goalgeometry_msgs/PoseStampedPlan a path to achieve this goal using the current online map.
rgbd_imagertabmap_ros/RGBDImageRGB-D sync image, only if subscribe_rgbd is true.

7.4.2. Publishing topics

NameTypeParse
infortabmap_ros/Infortabmap information.
mapDatartabmap_ros/MapDatartabmap's graph and latest node data.
mapGraphrtabmap_ros/MapGraphrtabmap’s graph
grid_mapnav_msgs/OccupancyGridMap occupancy grid generated by laser scanning.
proj_mapnav_msgs/OccupancyGridDeprecated, use /grid_map instead of Grid/FromDepth=true
cloud_mapsensor_msgs/PointCloud2A 3D point cloud generated from a local raster.
cloud_obstaclessensor_msgs/PointCloud2Generate a 3D point cloud of obstacles from a local mesh.
cloud_groundsensor_msgs/PointCloud2A 3D ground point cloud generated from a local raster.
scan_mapsensor_msgs/PointCloud23D point cloud generated by 2D scan or 3D scan.
labelsvisualization_msgs/MarkerArrayConvenient way to display graph labels in RVIZ.
global_pathnav_msgs/PathThe planning pose of the global path. Published only once per planned path.
local_pathnav_msgs/PathPlan the future local pose corresponding to the global path. Published every time the map is updated.
goal_reachedstd_msgs/BoolPlan status message whether the goal was successfully achieved.
goal_outgeometry_msgs/PoseStampedPlan the current metric goal sent from rtabmap's topology planner. For example, you can connect to move_base via move_base_simple/goal.
octomap_fulloctomap_msgs/OctomapGet octomap. Only available if rtabmap_ros is built with octomap.
octomap_binaryoctomap_msgs/OctomapGet octomap. Only available if rtabmap_ros is built with octomap.
octomap_occupied_spacesensor_msgs/PointCloud2Point cloud of octomap occupied space (obstacles and ground). Only available if rtabmap_ros is built with octomap.
octomap_obstaclessensor_msgs/PointCloud2Point cloud of obstacles on octomap. Only available if rtabmap_ros is built with octomap.
octomap_groundsensor_msgs/PointCloud2Point cloud of octomap. Only available if rtabmap_ros is built with octomap.
octomap_empty_spacesensor_msgs/PointCloud2The empty point cloud of octomap. Only available if rtabmap_ros is built with octomap.
octomap_gridnav_msgs/OccupancyGridProject an octomap into a 2D occupancy grid map. Only available if rtabmap_ros is built with octomap.

7.4.3, Service

NameTypeParse
get_maprtabmap_ros/GetMapCall this service to get a standard 2D occupancy grid.
get_map_datartabmap_ros/GetMapCall this service to get map data.
publish_maprtabmap_ros/PublishMapCall this service to publish map data.
list_labelsrtabmap_ros/ListLabelsGet the current labels of the graph.
update_parametersstd_srvs/EmptyThe node will be updated with the current parameters of the rosparam server.
resetstd_srvs/EmptyDelete the map.
pausestd_srvs/EmptyPause mapping.
resumestd_srvs/EmptyResume mapping.
trigger_new_mapstd_srvs/EmptyWill start a new map.
backupstd_srvs/EmptyBack up the database to "database_path.back" (default ~/.ros/rtabmap.db.back).
set_mode_localizationstd_srvs/EmptySet pure localization mode.
set_mode_mappingstd_srvs/EmptySet mapping mode.
set_labelrtabmap_ros/SetLabelSet the label to the latest node or the specified node.
set_goalrtabmap_ros/SetGoalPlan and set topology goals.
octomap_fulloctomap_msgs/GetOctomapGet octomap. Only available when rtabmap_ros is built with octomap
octomap_binaryoctomap_msgs/GetOctomapGet octomap. Only available when rtabmap_ros is built with octomap

7.4.4. Parameters

nametypedefault valueparse
subscribe_depthbooltrueSubscribe to depth image
subscribe_scanboolfalseSubscribe to lidar data
subscribe_scan_cloudboolfalseSubscribe to laser 3D point cloud
subscribe_stereoboolfalseSubscribe to stereo images
subscribe_rgbdboolfalseSubscribe to rgbd_image topic
frame_idstringbase_linkThe frame to connect to the mobile base.
map_frame_idstringmapThe coordinate system attached to the map.
odom_frame_idstring‘ ’The coordinate system attached to the odometer.
odom_tf_linear_variancedouble0.001When using odom_frame_id, the first 3 values of the diagonal of the 6x6 covariance matrix are set to this value.
odom_tf_angular_variancedouble0.001When using odom_frame_id, the last 3 values of the 6x6 covariance matrix diagonal are set to this value
queue_sizeint10Message queue size per synchronization topic.
publish_tfbooltruePublish TF from /map to /odom.
tf_delaydouble0.05 
tf_prefixstring‘ ‘The prefix to be added to the generated tf.
wait_for_transformbooltrueThe wait for the transform while the tf transform is still unavailable (the maximum wait time for the transform is seconds).
wait_for_transform_durationdouble0.1The waiting time of wait_for_transform.
config_pathstring‘ ’Path to the configuration file containing RTAB mapping parameters. Parameters set in the startup file will override parameters in the configuration file.
database_pathstring.ros/rtabmap.dbThe path of the rtabmap database.
gen_scanboolfalseGenerate a laser scan from a depth image (using the middle horizontal line of the depth image). Not generated if subscribe_scan or subscribe_scan_cloud is true.
gen_scan_max_depthdouble4.0The maximum depth of the generated laser scan.
approx_syncboolfalseSynchronize using the approximate time of the input message. If false, note that the odometry input must have exactly the same timestamp as the input image
rgbd_camerasint1Number of RGB-D cameras to use (when subscribe_rgbd is true). Currently, up to 4 cameras can be synced simultaneously.
use_action_for_goalboolfalseuse actionlib sends the metric target to move_base.
odom_sensor_syncboolfalseAdjust the image and scan pose relative to the odometry pose for each node added to the graph.
gen_depthboolfalseGenerate a depth image from the scanned cloud projection to the RGB camera, taking into account the displacement of the RGB camera based on odometry and lidar frames.
gen_depth_decimationint1Reduce the image size of the received camera information (create a smaller depth image)
gen_depth_fill_holes_sizeint0Fill empty pixels to this size. Interpolates values from adjacent depth values. 0 means disabled.
gen_depth_fill_iterationsdouble0.1Maximum depth error to interpolate (m).
gen_depth_fill_holes_errorint1Number of iterations to fill holes.
map_filter_radiusdouble0.0Load data for only one node in the filter radius (using the latest data) up to the filter angle (map filter angle).
map_filter_angledouble30.0The angle to use when filtering nodes before creating the map. Reference map_filter_radius
map_cleanupbooltrueIf there are no map cloud maps, raster maps, or project maps subscribed to, clear the corresponding data.
latchbooltrueIf true, the last message posted on the map topic will be saved.
map_always_updatebooltrueAlways update the occupancy raster map
map_empty_ray_tracingbooltruePerform ray tracing to fill the unknown space of invalid 2D scan rays (assuming invalid rays are infinite). Only used if map_always_update is also true.

7.4.5, tf conversion

what is needed:

  • base_link → sensor

  • odom → base_link

which provided:

map → odom

7.5, node rtabmapviz

This node starts the visual interface of RTAB-Map. It is a wrapper for the RTAB-MapGUI library. Its purpose is the same as rviz, but with specific options for RTAB-Map.

RGB-D Mapping

7.5.1. Subscribe to topics

NameTypeParse
odomnav_msgs/OdometryOdometry. Required if the parameters subscribe_depth or subscribe_stereo are true and odom_frame_id is not set.
rgb/imagesensor_msgs/ImageRGB/monocular image. If the parameter subscribe_stereo is true, this option is not required (left/image_rect is used instead).
rgb/camera_infosensor_msgs/CameraInfoRGB camera metadata. If the parameter subscribe_stereo is true, this option is not required (left/camera_info is used instead).
depth/imagesensor_msgs/ImageRegister depth image. Required if parameter subscribe_depth is true.
scansensor_msgs/LaserScanLaser scan stream. Required if parameter subscribe_scan is true.
scan_cloudsensor_msgs/PointCloud2Laser scan stream. Required if parameter subscribe_scan_cloud is true.
left/image_rectsensor_msgs/ImageLeft eye correction image. Required if parameter subscribe_stereo is true.
left/camera_infosensor_msgs/CameraInfoLeft eye camera parameters. Required if parameter subscribe_stereo is true.
right/image_rectsensor_msgs/ImageRight corrected image. Required if parameter subscribe_stereo is true.
right/camera_infosensor_msgs/CameraInfoRight eye camera parameters. Required if parameter subscribe_stereo is true.
odom_infortabmap_ros/OdomInfoRequired if the parameter subscribe_odom_info is true.
infortabmap_ros/InfoStatistical information of rtabmap.
mapDatartabmap_ros/MapDatartabmap’s chart and latest node data.
rgbd_imagertabmap_ros/RGBDImageRGB-D synchronized image, only when subscribe_rgbd is true.

7.5.2. Parameter configuration

nametypedefault valueparse
subscribe_depthboolfalseSubscribe to depth image
subscribe_scanboolfalseSubscribe to lidar data
subscribe_scan_cloudboolfalseSubscribe to the laser scanning point cloud.
subscribe_stereoboolfalseSubscribe to stereo images.
subscribe_odom_infoboolfalseSubscribe to odom information messages.
subscribe_rgbdboolfalseSubscribe to rgbd_image topic.
frame_idstringbase_linkThe coordinate system connected to the mobile base.
odom_frame_idstring‘ ’The coordinate system of the odometer. If empty, rtabmapviz will subscribe to the odom topic to get odometry. If set, gets the odometer from tf.
tf_prefixstring‘ ‘The prefix to be added to the generated tf.
wait_for_transformboolfalseWait for a transform (up to 1 second) when the tf transform is still not available.
queue_sizeint10Message queue size per synchronization topic.
rgbd_camerasint1Number of RGB-D cameras to use (when subscribe_rgbd is true). Currently, up to 4 cameras can be synced simultaneously.

7.5.3. Required tf conversion

  • base_link → sensor coordinate system

  • odom → base_link

  • map → odom

Pure visual 2D mapping
ORB_SLAM2 basics

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文