## 参考资料 1. hdl_graph_slam包中的 README.md 文件 2. [CSDN博客:hdl_graph_slam](https://blog.csdn.net/Seinlvan/article/details/119115908) ## 消息类型 #### 话题:/scan Type: sensor_msgs/LaserScan 发布频率: 20 hz angle_min, angle_max:雷达扫描的最小角度和最大角度 angle_increment:扫描点之间的角度增量,用来确定扫描的分辨率 time_increment:扫描点之间的时间增量,如果每个扫描点对应一个测量时间,则可以用来计算扫描的频率 scan_time:完成一次扫描所需要的时间 rangle_min, rang_max:雷达测量的最大和最小范围(距离),距离范围外的反射波视为无效 **ranges:包含每个扫描点测距值的数组。数组的长度对应扫描分辨率,每个值表示从雷达到检测到的物体的直线距离** intensitiess:每个扫描点的反射强度值数组,可以用于判断物体的材质或用于后期处理,如滤波等 ![2024-09-25 08-35-49 的屏幕截图](/home/mj/图片/2024-09-25 08-35-49 的屏幕截图.png) ### 后端实现, 节点名称: hdl_backend ``` Node [/hdl_backend] Publications: * /hdl_graph_slam/map_points [sensor_msgs/PointCloud2] * /hdl_graph_slam/markers [visualization_msgs/MarkerArray] * /hdl_graph_slam/odom2pub [geometry_msgs/TransformStamped] * /hdl_graph_slam/read_until [std_msgs/Header] * /rosout [rosgraph_msgs/Log] Subscriptions: * /aligned_points [sensor_msgs/PointCloud2] * /clock [rosgraph_msgs/Clock] * /laser_odom [nav_msgs/Odometry] Services: * /hdl_backend/get_loggers * /hdl_backend/set_logger_level * /hdl_graph_slam/save_map ``` 何师兄给的数据中, 回放的时候是有里程计数据的,话题名称是/odom 但后端不用这个数据,是用前端匹配的/laser_odom 自己实现的/laser_odom的消息: ``` --- header: seq: 3616 stamp: secs: 1626936142 nsecs: 297182351 frame_id: "odom" child_frame_id: "laser" pose: pose: position: 位置 x: -22.39583396911621 y: 3.211024045944214 z: 0.0 orientation: 朝向,这里错了要改 x: 0.0 y: 0.0 z: -0.8115295767784119 w: 0.584311306476593 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] twist: twist: linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] --- ```