7. cartographer Mapping algorithm7.1 Description of program functionality7.2 Introduction to the Cartographer7.3 Application Code Reference path7.4. Program Startup7.4.1. Build the diagram7.4.2. Map saving7.4.3. View the topic communication graph7.4.4 View the TF tree
After the programs on the VM and the car are started, the car is controlled by the controller or keyboard. The car uses the radar scan data to build a map and saves the map after the map is built. This process is visualized in rviz.
Cartographer:https://google-cartographer.readthedocs.io/en/latest/
Cartographer ROS2:https://github.com/ros2/cartographer_ros
Cartographer is an open-source 2D and 3D SLAM (simultaneous localization and mapping) library supported by ROS systems. Method building algorithm based on graph optimization (multi-threaded backend optimization, cere constructed problem optimization). Data from multiple sensors (e.g., LIDAR, IMU, and camera) can be combined to simultaneously calculate the position of the sensor and map the environment around the sensor.
The cartographer source code consists of three main parts: cartographer, cartographer_ros, and ceres-solver (back-end optimization).
cartographer采用的是主流的SLAM框架,也就是特征提取、闭环检测、后端优化的三段式。由一定数量的LaserScan组成一个submap子图,一系列的submap子图构成了全局地图。用LaserScan构建submap的短时间过程累计误差不大,但是用submap构建全局地图的长时间过程就会存在很大的累计误差,所以需要利用闭环检测来修正这些submap的位置,闭环检测的基本单元是submap,闭环检测采用scan_match策略。cartographer的重点内容就是融合多传感器数据(odometry、IMU、LaserScan等)的submap子图创建以及用于闭环检测的scan_match策略的实现。
cartographer_ros is run under ROS and can accept various sensor data in the form of ROS messages
After processing, it is published as a message for debugging and visualization.
After SSH connection car, the location of the function source code is located at,
xxxxxxxxxx
/userdata/yahboomcar_ws/src/yahboomcar_nav/launch/map_gmapping_launch.py
The virtual machine side source code is located at,
xxxxxxxxxx
/home/yahboom/dev_ws/src/yahboomcar_rviz/launch/yahboomcar_mapping_launch.py
Open the virtual machine terminal and type,
xxxxxxxxxx
ros2 launch yahboomcar_rviz yahboomcar_mapping_launch.py
After SSH connects to the car, terminal input,
xxxxxxxxxx
ros2 launch yahboomcar_nav map_cartographer_launch.py
Handle [L1] key unlock, control car movement. If you do not use the handle, you can use the keyboard control, the car terminal input,
xxxxxxxxxx
ros2 run yahboomcar_ctrl yahboom_keyboard
【 Slowly move the cart 】 Start to build the map until the complete map is built.
Note: When building the drawing, the slower the better the effect (especially the rotation speed should be slower), the faster the speed, the effect will be very poor.
In addition, the path of cartographer configuration parameters is,
xxxxxxxxxx
/userdata/yahboomcar_ws/src/yahboomcar_nav/params/cartographer_config.lua
You can modify it according to your needs, compile and run it.
Car terminal input:
xxxxxxxxxx
ros2 launch yahboomcar_nav save_map_launch.py
The map can be saved as follows:
xxxxxxxxxx
/userdata/yahboomcar_ws/src/yahboomcar_nav/maps
Includes a.pGM image and a.YAML file. The.yaml file contains the following contents::
xxxxxxxxxx
image /userdata/yahboomcar_ws/src/yahboomcar_nav/maps/yahboom_map.pgm
mode trinary
resolution0.05
origin -5.95 -3.26 0
negate0
occupied_thresh0.65
free_thresh0.25
Parameter analysis:
Virtual machine terminal input,
xxxxxxxxxx
ros2 run rqt_graph rqt_graph
To view the cartographer node details, enter,
xxxxxxxxxx
ros2 node info /cartographer_node
ros2 node info /occupancy_grid_node
Open the virtual machine terminal and type,
xxxxxxxxxx
#保存tf树# Save tf tree
ros2 run tf2_tools view_frames.py
#查看tf树#View tf tree
evince frames.pdf