yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
RDK X5 Robot📖
01. RDK-X5-Robot Introduction
  • 1.Introduction
  • 2.Common Problem Analysis
  • 3.Battery and charger usage precautions
  • 4.TF card expand capacity
02. Assembly Tutorial
  • Assembly Tutorial
  • Assembly Video-1
  • Assembly Video-2
  • Assembly Video-3
  • Assembly Video-4
03. Remote Control Course
  • 1.Mobile APP remote control
  • 2.USB Wireless Controller Remote Control
04. ROS Driver Board Course
  • 1. Introduction of extension board
  • 2. Set up STM32 development environment
  • 3. Key control buzzer sound
  • 4. FreeRTOS application
  • 5. Serial communication
  • 6. SBUS model remote control
  • 7. CAN bus communication
  • 8. RGB color light strip
  • 9. Timer interrupt control PWM servo
  • 10. Control serial steering gear
  • 11. Nine-axis attitude sensor to obtain data
  • 12. Control motor forward and reverse
  • 13. The timer captures encoder data
  • 14. Theory of robot kinematics analysis
  • 15. PID control robot motion
05. Basic Control Course
  • 1.Update expansion board firmware
  • 2.Install Python driver library
  • 3.Set the car type
  • 4.Open and close APP program control
  • 5.Turn hotspot mode on and off
  • 6.Buzzer sound
  • 7.Control the motor to rotate forward and reverse
  • 8.Controlling robot movement
  • 9.OLED display
  • 10.Control fans and lighting effects
06. Development Environment
  • 1. Virtual machine installation and use
  • 2. Linux Basics
  • 3. Remote connection
  • 4. Multi-machine communication configuration
  • 5. Bind device ID
  • 6. Image installation and backup
07. ROS2 Basic Course
  • 1. Introduction to ROS2
  • 2. ROS2 install Humble
  • 3. ROS2 development environment
  • 4. ROS2 workspace
  • 5. ROS2 function package
  • 6. ROS2 node
  • 7. ROS2 topic communication
  • 8. ROS2 service communication
  • 9. ROS2 action communication
  • 10. ROS2 custom interface message
  • 11. ROS2 parameter service case
  • 12. ROS2 meta-function package
  • 13. ROS2 distributed communication
  • 14. ROS2 DDS
  • 15. ROS2 time related API
  • 16. ROS2 common command tools
  • 17. ROS2 rviz2 use
  • 18. ROS2 rqt toolbox
  • 19. ROS2 Launch startup file configuration
  • 20. ROS2 recording and playback tool
  • 21. ROS2 URDF model
  • 22. ROS2 Gazebo simulation platform
  • 23. ROS2 TF2 coordinate transformation
08. Robot Chassis Control Course
  • 1. PID algorithm theory
  • 2. Robot information release
  • 3. Robot control
  • 4. Robot state estimation
  • 5. Robot calibration
  • 6. Robot trajectory tracking
  • 7. URDF Model
09. LiDAR Course
  • 1. Introduction and use of lidar
  • 2. Lidar obstacle avoidance
  • 3. Lidar tracking
  • 4. Lidar guard
  • 5. Lidar patrol
  • 6. gmapping mapping algorithm
  • 7. Cartographer mapping algorithm
  • 8. Navigation and obstacle avoidance
  • 9. App Mapping and Navigation
10. OpenCV Course
  • 1. Getting started with OpenCV
  • 2. OpenCV geometric transformation
  • 3. OpenCV Image Processing
  • 4. OpenCV image beautification
  • 5. QR code creation and recognition
11. Mipi Camera Course
  • 1. Camera driver
  • 2. Adjust the color HSV value
  • 3. Color recognition
  • 4. Color Tracking
  • 5. Color Follow
  • 6. QR code instructions
  • 7. Face Detection
  • 8. Object Detection
  • 9. Visual line patrol-OpenCV
  • 10. Visual line patrol-deep learning
  • 11. Human body tracking
  • 12. Gesture control
12. Depth Camera Course
  • 1. Use of Depth Camera
  • 2. Camera intrinsic calibration
  • 3. ROS+OpenCV Basics
  • 4. AR Vision
  • 5. Color Tracking
  • 6. Object Tracking
  • 7. RTAB-Map 3D Mapping Navigation
13. Multi-robot Synchronous Control
  • Multi-vehicle synchronous control
Remote login control
  • 1. VNC and SSH remote login
  • 2. Jupyter lab login and case code running
Download
  • System_File
  • Code
  • VM_File
  • Software_Tools
  • Hardware_Info
  • Firmware
  • Instruction_Manual
  • ROS2_Basic_VM
Download ZIP

Welcome to RDK X5 Robot repository

6. gmapping mapping algorithm

gmapping mapping algorithm

gmapping mapping algorithm6.1. Program Function Description6.2. Introduction to Gmapping6.3, Program code reference path6.4, Program startup6.4.1, Map creation6.4.2, map saving6.4.3, view the topic communication node graph6.4.4, view TF tree

6.1. Program Function Description

After the programs on the virtual machine and the car are started, the car is controlled by the handle or keyboard. The car will use the radar scanning data during the movement, use the gmapping algorithm to build a map, and save the map after the construction is completed. This process is visualized in rviz.

6.2. Introduction to Gmapping

wiki: http://wiki.ros.org/gmapping/

ros2 gmapping: https://github.com/Project-MANAS/slam_gmapping

  • Gmapping is only applicable to points with less than 1440 laser points in a single frame. If the number of laser points in a single frame is greater than 1440, then the problem [[mapping-4] process has died] will appear.
  • Gmapping is based on the RBpf particle filter algorithm, and the real-time positioning and mapping processes are separated. Positioning is performed first and then mapping.
  • Gmapping has made two major improvements on the RBpf algorithm: improved proposal distribution and selective resampling.

Advantages: Gmapping can build indoor maps in real time, and the amount of calculation required to build small scene maps is small and the accuracy is high.

Disadvantages: As the scene increases, the number of particles required increases, because each particle carries a map, so the memory and amount of calculation required to build a large map will increase. Therefore, it is not suitable for building large scene maps. And there is no loop detection, so the map may be misaligned when the loop is closed. Although increasing the number of particles can make the map closed, it comes at the cost of increasing the amount of calculation and memory.

1684831254419

6.3, Program code reference path

After SSH connects to the car, the location of the function source code is,

/home/sunrise/yahboomcar_ws/src/yahboomcar_nav/launch/map_gmapping_launch.py

The source code of the virtual machine is located at,

xxxxxxxxxx
/home/yahboom/yahboomcar_ws/src/yahboomcar_rviz/launch/yahboomcar_mapping_launch.py

6.4, Program startup

6.4.1, Map creation

Open the virtual machine terminal and enter,

xxxxxxxxxx
ros2 launch yahboomcar_rviz yahboomcar_mapping_launch.py

After SSH connects to the car, input in the terminal,

xxxxxxxxxx
ros2 launch yahboomcar_nav map_gmapping_launch.py

image-20241113175240458

Unlock the [L1] key on the handle to control the movement of the car. If you do not use the handle, you can use the keyboard to control, input in the SSH car terminal,

xxxxxxxxxx
ros2 run yahboomcar_ctrl yahboom_keyboard

[Slowly move the car] to start building the map until the complete map is built.

image-20241113202151404

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

In addition, the path of gmapping related configuration parameters is,

xxxxxxxxxx
/home/sunrise/yahboomcar_ws/src/slam_gmapping/params/slam_gmapping.yaml

You can modify it as needed, compile and run.

6.4.2, map saving

Input in the car terminal,

xxxxxxxxxx
ros2 launch yahboomcar_nav save_map_launch.py

The map saving path is as follows:

xxxxxxxxxx
/home/sunrise/yahboomcar_ws/src/yahboomcar_nav/maps/yahboom_map

1684831343375

Includes a .pgm image and a .yaml file. Among them, the .yaml file content is as follows:

xxxxxxxxxx
image: yahboom_map.pgm
mode: trinary
resolution: 0.05
origin: [-10, -10, 0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.25

Parameter analysis:

  • image: the path of the map file, which can be an absolute path or a relative path
  • mode: this attribute can be one of trinary, scale or raw, depending on the selected mode, trinary mode is the default mode
  • resolution: the resolution of the map, meters/pixels
  • origin: the 2D pose (x, y, yaw) of the lower left corner of the map, where yaw is rotated counterclockwise (yaw=0 means no rotation). Currently, many parts of the system will ignore the yaw value.
  • negate: whether to invert the meaning of white/black and free/occupied (the interpretation of the threshold is not affected)
  • occupied_thresh: pixels with an occupation probability greater than this threshold are considered fully occupied.
  • free_thresh: pixels with an occupation probability less than this threshold are considered fully free.

6.4.3, view the topic communication node graph

Virtual machine terminal input,

xxxxxxxxxx
ros2 run rqt_graph rqt_graph

1685088327419

6.4.4, view TF tree

Open the virtual machine terminal, input,

xxxxxxxxxx
#Save tf tree
ros2 run tf2_tools view_frames
#View tf tree
evince frames.pdf

1685088121603

Lidar patrol
Cartographer mapping algorithm

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/中文