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

07.RTAB-Map 3D mapping navigation

7 RTAB-Map 3D mapping navigation

7 RTAB-Map 3D mapping navigation 7.1 Introduction 7.2 Mapping use 7.2.1 Start 7.2.2 Mapping 7.3 Navigation and obstacle avoidance 7.3.1 Single point navigation 7.3.2 Multi-point navigation 7.3.3 Parameter configuration 7.4 node rtabmap 7.4.1 Subscription topic 7.4.2 Post topic 7.4.3 Services 7.4.4 Parameters 7.4.5 tf conversion 7.5 node rtabmapviz 7.5.1. Subscription topic 7.5.2 parameter configuration 7.5.3 the required tf conversion

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

7.1 Introduction

This package is a ROS functional 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 the environment and create 2D occupancy grid maps for navigation.

Overview

As can be seen from the above figure, there is no need for Monte Carlo positioning amcl, and RTAB Map has its own positioning function; if it is 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 Mapping use

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

According to different models, you only need to set the purchased model in [.bashrc], X1(ordinary four-wheel drive) X3(Mike wheel) X3plus(Mike wheel mechanical arm) R2(Ackerman differential) and so on. Section takes X3 as an example

xxxxxxxxxx
#You need to enter docker first, perform this step more
#If running the script to enter docker fails, please refer to Jetson Orin-Docker/05, Enter the robot's docker container
~/run_docker.sh
#Multiple ros commands require multiple terminals to enter the same docker container for execution, please refer to Jetson Orin-Docker/05, Section 5.8 tutorial

Open the [.bashrc] file

sudo vim .bashrc 

Find the [ROBOT_TYPE] parameter and modify the corresponding model

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 

Command to start mapping or navigation(robot side)

image-20240408144126098

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)

rosrun teleop_twist_keyboard teleop_twist_keyboard.py  # system integration 
roslaunch yahboomcar_ctrl yahboom_keyboard.launch      # yahboomcar custom 

7.2.2 Mapping

After starting up according to the above method, choose any method to control the map(handle control is recommended); the slower the speed when building the map, the better the effect(especially the angular speed); the robot fills the area to be built, and the map is closed as much as possible.

  • handle control

  • keyboard control

image-20220228113707763

When the map is completed, directly [ctrl+c] to exit the map node, the system will automatically save the map. The default map save path [~/.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: radar data, camera data, tf data.

7.3 Navigation and obstacle avoidance

Note: [R2] of 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)

rosrun teleop_twist_keyboard teleop_twist_keyboard.py  # system integration 
roslaunch yahboomcar_ctrl yahboom_keyboard.launch      # yahboomcar custom 

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

image-20220228113955497

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

image-20220228114110223

At this point, you can manually add [MarkerArray] to facilitate multi-point navigation and observation, and adjust [rviz] display parameters as needed, 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 the [2D Nav Goal] of the [rviz] tool, and then select the target point on the map where there are no obstacles, release the mouse to start the navigation, only one target point can be selected, and it will stop when it arrives.

7.3.2 Multi-point navigation

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

  • Click the [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 the navigation, you can click the [Publish Point] again, and then select the point, the robot will point and point cruising in between.

  • 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 it according to your own needs, and observe the motion state of the robot 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, you 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, open the sample file as follows, you can modify and replace it according to your needs; at this time, the [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 the omnidirectional car and the differential car is 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 
  # The absolute value of the maximum linear velocity in the x direction, unit: m/s 
  # 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 that it can be moved back, unit: m/s 
  # The minimum x velocity for the robot in m/s, negative for backwards motion. 
  min_vel_x : - 0.6 
  # The absolute value of the maximum linear velocity in the y direction, unit: m/s. 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: m/s. Differential robot is 0 
  # The minimum y velocity for the robot in m/s 
  min_vel_y : - 0.3 
 … 
  # The limit 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 limit acceleration of the robot in the y direction, it is 0 for the differential robot 
  # The y acceleration limit of the robot in meters/sec^2 
  acc_lim_y : 10.0 
... .. 

Other parameter files can be opened, combined with annotations and courseware, and modified according to their 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, the map is incrementally built and optimized when loop closures are detected. The online output of the node is the local map, which contains the most recent 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 Subscription topic

nametypeParse
odomnav_msgs/OdometryOdometer. Required if parameter subscribe_depth or subscribe_stereo is true; and odom_frame_id is not set.
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 scan point cloud stream.
left/image_rectsensor_msgs/ImageLeft eye corrected image.
left/camera_infosensor_msgs/CameraInfoLeft eye camera parameters.
right/image_rectsensor_msgs/ImageRight eye corrected image.
right/camera_infosensor_msgs/CameraInfoRight eye camera parameters.
goalgeometry_msgs/PoseStampedPlan a path to this goal using the current online map.
rgbd_imagertabmap_ros/RGBDImageRGB-D sync image, only if subscribe_rgbd is true.

7.4.2 Post topic

nametypeParse
infortabmap_ros/Infortabmap information.
mapDatartabmap_ros/MapDataGraph and latest node data for rtabmap.
mapGraphrtabmap_ros/MapGraphrtabmap graphics
grid_mapnav_msgs/OccupancyGridMaps generated by laser scanning occupy the grid.
proj_mapnav_msgs/OccupancyGridDeprecated, use /grid_map instead of Grid/FromDepth=true
cloud_mapsensor_msgs/PointCloud2A 3D point cloud generated from a local grid.
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 grid.
scan_mapsensor_msgs/PointCloud22D scans or 3D point clouds generated from 3D scans.
labelsvisualization_msgs/MarkerArrayConvenience method for displaying graph labels in RVIZ.
global_pathnav_msgs/PathThe planned pose of the planned global path. Published only once per planned path.
local_pathnav_msgs/PathPlan future local poses corresponding to the global path. Posted every time the map is updated.
goal_reachedstd_msgs/BoolA plan status message whether the goal was successfully achieved.
goal_outgeometry_msgs/PoseStampedPlan the current metric target sent from rtabmap's topology planner. For example, you can connect to move_base via move_base_simple/goal.
octomap_fulloctomap_msgs/OctomapGet octomap. Available only when rtabmap_ros is built with octomap.
octomap_binaryoctomap_msgs/OctomapGet octomap. Available only when rtabmap_ros is built with octomap.
octomap_occupied_spacesensor_msgs/PointCloud2octomap The point cloud of the occupied space(obstacles and ground). Available only when rtabmap_ros is built with octomap.
octomap_obstaclessensor_msgs/PointCloud2A point cloud of obstacles on the octomap. Available only when rtabmap_ros is built with octomap.
octomap_groundsensor_msgs/PointCloud2octomap's point cloud. Available only when rtabmap_ros is built with octomap.
octomap_empty_spacesensor_msgs/PointCloud2Blank point cloud for octomap. Available only when rtabmap_ros is built with octomap.
octomap_gridnav_msgs/OccupancyGridProject the octomap into a 2D occupancy raster map. Available only when rtabmap_ros is built with octomap.

7.4.3 Services

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 label 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 building.
resumestd_srvs/EmptyRestoring the map.
trigger_new_mapstd_srvs/EmptyA new map will start.
backupstd_srvs/EmptyBackup the database to "database_path.back"(default ~/.ros/rtabmap.db.back).
set_mode_localizationstd_srvs/EmptySet location-only mode.
set_mode_mappingstd_srvs/EmptySet the mapping mode.
set_labelrtabmap_ros/SetLabelSet the label to the latest node or the specified node.
set_goalrtabmap_ros/SetGoalPlan to set topology goals.
octomap_fulloctomap_msgs/GetOctomapGet octomap. Only available if rtabmap_ros was built with octomap
octomap_binaryoctomap_msgs/GetOctomapGet octomap. Only available if rtabmap_ros was built with octomap

7.4.4 Parameters

nametypeDefaultsParse
subscribe_depthbooltrueSubscribe to depth images
subscribe_scanboolfalseSubscribe to lidar data
subscribe_scan_cloudboolfalseSubscribe to Laser 3D Point Cloud
subscribe_stereoboolfalseSubscribe to binocular images
subscribe_rgbdboolfalseSubscribe to the rgbd_image topic
frame_idstringbase_linkFrame attached to 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 diagonal of the 6x6 covariance matrix are set to this value
queue_sizeint10The size of the message queue for each synchronization topic.
publish_tfbooltruePublish TF from /map to /odom.
tf_delaydouble0.05 
tf_prefixstring' 'The prefix to add to the generated tf.
wait_for_transformbooltrueThe wait for the transform when the tf transform is still unavailable(the maximum wait time for a transform is seconds).
wait_for_transform_durationdouble0.1wait_for_transform wait time.
config_pathstring' 'Path to a configuration file containing RTAB mapping parameters. Parameters set in the startup file will override those in the configuration file.
database_pathstring.ros/rtabmap.dbPath to 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_syncboolfalseUse approximate time synchronization of incoming messages. If false, note that the odometry input must have the exact same timestamp as the input image
rgbd_camerasint1The number of RGB-D cameras to use(when subscribe_rgbd is true). Currently, up to 4 cameras can be synchronized simultaneously.
use_action_for_goalboolfalseUse actionlib to send metrics targets to move_base.
odom_sensor_syncboolfalseFor each node added to the graph, adjust the image and scan pose relative to the odometry pose.
gen_depthboolfalseA depth image is generated from a scanned cloud projection to an RGB camera, taking into account the displacement of the RGB camera from the odometry and lidar frames.
gen_depth_decimationint1Reduce the image size of the received camera information(creates a smaller depth image)
gen_depth_fill_holes_sizeint0Fill empty pixels to that size. Interpolate values from adjacent depth values. 0 means disabled.
gen_depth_fill_iterationsdouble0.1Maximum depth error(m) to interpolate.
gen_depth_fill_holes_errorint1The number of iterations to fill blanks.
map_filter_radiusdouble0.0Loads data for only one node within the filter radius(use 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 you are not subscribed to any map cloud maps, raster maps, or project maps, clear the corresponding data.
latchbooltrueIf true, the last message published on the map topic will be saved.
map_always_updatebooltrueAlways update occupancy raster map
map_empty_ray_tracingbooltruePerform ray tracing to fill the unknown space of invalid 2D scan rays(assuming invalid rays to be 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 visualization interface of RTAB-Map. It is a wrapper for RTAB-MapGUI library. It serves the same purpose as rviz, but with RTAB-Map specific options.

RGB-D Mapping

7.5.1. Subscription topic

nametypeParse
odomnav_msgs/OdometryOdometer. Required if parameter subscribe_depth or subscribe_stereo is 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(use left/image_rect instead).
rgb/camera_infosensor_msgs/CameraInfoRGB camera metadata. If the parameter subscribe_stereo is true, this option is not required(use left/camera_info instead).
depth/imagesensor_msgs/ImageRegister the 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 corrected 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 parameter subscribe_odom_info is true.
infortabmap_ros/InfoStatistics for rtabmap.
mapDatartabmap_ros/MapDatartabmap's graph and latest node data.
rgbd_imagertabmap_ros/RGBDImageRGB-D sync image, only if subscribe_rgbd is true.

7.5.2 parameter configuration

nametypeDefaultsParse
subscribe_depthboolfalseSubscribe to depth images
subscribe_scanboolfalseSubscribe to lidar data
subscribe_scan_cloudboolfalseSubscribe to Laser Scan Point Cloud.
subscribe_stereoboolfalseSubscribe to binocular images.
subscribe_odom_infoboolfalseSubscribe to odometer information messages.
subscribe_rgbdboolfalseSubscribe to the rgbd_image topic.
frame_idstringbase_linkThe coordinate system attached to the mobile base.
odom_frame_idstring' 'The coordinate system of the odometer. If empty, rtabmapviz will subscribe to the odom topic for odometers. If set, get odometer from tf.
tf_prefixstring' 'The prefix to add to the generated tf.
wait_for_transformboolfalseWhen the tf transform is still unavailable, wait for the transform(up to 1 second).
queue_sizeint10Message queue size per synchronization topic.
rgbd_camerasint1The number of RGB-D cameras to use(when subscribe_rgbd is true). Currently, up to 4 cameras can be synchronized simultaneously.

7.5.3 the required tf conversion

  • base_link → sensor coordinate system

  • odom → base_link

  • map → odom

Pure visual 2D mapping and navigation
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/中文