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

7. Cartographer mapping algorithm

Cartographer Mapping Algorithm

 

Cartographer Mapping Algorithm7.1, Program Function Description7.2, Cartographer Introduction7.3, Program code reference path7.4, Program startup7.4.1, Map building7.4.2, map saving7.4.3, view the topic communication node graph7.4.4, view TF tree

7.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 cartographer algorithm to build a map, and save the map after the construction is completed. This process is visualized in rviz.

7.2, Cartographer Introduction

Cartographer: https://google-cartographer.readthedocs.io/en/latest/

Cartographer ROS2: https://github.com/ros2/cartographer_ros

  • Cartographer

Cartographer is a 2D and 3D SLAM (simultaneous localization and mapping) library supported by Google's open source ROS system. The mapping algorithm is based on the method of graph optimization (multi-threaded backend optimization, problem optimization built by cere). It can combine data from multiple sensors (such as LIDAR, IMU and camera) to synchronously calculate the position of the sensor and draw the environment around the sensor.

The source code of cartographer mainly includes three parts: cartographer, cartographer_ros and ceres-solver (backend optimization).

cartographer adopts the mainstream SLAM framework, which is a three-stage feature extraction, closed-loop detection and backend optimization. A certain number of LaserScans form a submap, and a series of submaps constitute a global map. The short-term cumulative error of using LaserScan to construct submaps is not large, but the long-term process of using submaps to construct global maps will have a large cumulative error, so closed-loop detection is needed to correct the position of these submaps. The basic unit of closed-loop detection is submap, and closed-loop detection adopts scan_match strategy. The key content of cartographer is the creation of submaps that integrate multi-sensor data (odometry, IMU, LaserScan, etc.) and the implementation of scan_match strategy for closed-loop detection.

  • cartographer_ros

cartographer_ros runs under ROS and can receive various sensor data in the form of ROS messages. After processing, it is published in the form of messages for easy debugging and visualization.

7.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

7.4, Program startup

7.4.1, Map building

Open the virtual machine terminal and enter,

xxxxxxxxxx
ros2 launch yahboomcar_rviz yahboomcar_mapping_launch.py

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

xxxxxxxxxx
ros2 launch yahboomcar_nav map_cartographer_launch.py

image-20241113203120795

Unlock the [L1] button on the handle to control the car's movement. If you don't use the handle, you can use the keyboard to control the car's terminal input,

xxxxxxxxxx
ros2 run yahboomcar_ctrl yahboom_keyboard

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

image-20241113203317692

Note: When building the 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 cartographer related configuration parameters is,

xxxxxxxxxx
/home/sunrise/yahboomcar_ws/src/yahboomcar_nav/params/cartographer_config.lua

You can modify it as needed, compile and run.

7.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 picture and a .yaml file. Among them, the .yaml file content is as follows:

xxxxxxxxxx
image: yahboom_map.pgm
mode: trinary
resolution: 0.05
origin: [-3.8, -2.79, 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.

7.4.3, view the topic communication node graph

Virtual machine terminal input,

xxxxxxxxxx
ros2 run rqt_graph rqt_graph

1685092744116

7.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

1685092942688

 

gmapping mapping algorithm
Navigation and obstacle avoidance

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