Radar: Preparation of SLAM Mapping Software Environment

Radar: Preparation of SLAM Mapping Software Environment

02 - 阶段二执行记录:SLAM 建图软件环境准备

1. 概述

最终选型:Cartographer(理由见 01_阶段二规划 文档)


2. 已完成步骤

2.1 安装 apt 依赖 【待用户手动执行】

当前环境无 sudo 权限,以下命令需在小车上手动执行:

# 安装 Cartographersudoapt update sudoaptinstall-y ros-humble-cartographer ros-humble-cartographer-ros # 安装 Nav2 地图服务器(保存地图用)sudoaptinstall-y ros-humble-nav2-map-server # 安装 URDF 工具(编译 description 包需要)sudoaptinstall-y ros-humble-robot-state-publisher ros-humble-joint-state-publisher ros-humble-xacro 
以上三条命令也可以合并为一条执行。

2.2 设置 LIDAR_TYPE 环境变量 【已完成】

已写入 ~/.bashrc

exportLIDAR_TYPE=4ros 

源码中的 launch 文件会读取此变量,自动选择对应的雷达配置。

2.3 复制建图相关包到工作空间并编译 【已完成】

从源码目录复制了 3 个包到 ~/ydlidar_ws/src/

包名作用编译类型
yahboomcar_nav建图/导航 launch 文件 + 参数配置ament_python
yahboomcar_descriptionURDF 模型(TF 坐标关系)ament_python
yahboomcar_msgs自定义消息类型ament_cmake

编译命令:

cd ~/ydlidar_ws colcon build --symlink-install --packages-select yahboomcar_description yahboomcar_msgs yahboomcar_nav 

编译结果:3 个包全部成功(仅有 setuptools 弃用警告,不影响运行)。

2.4 TF Frame 分析 【无需修复】

分析结论:

组件Frame 名称来源
雷达驱动 /scanlaserydlidar_4ros.yamlframe_id: laser
URDF 模型laser_linkyahboomcar_X3.urdf 中固定关节
launch 静态 TFbase_link → laserlaser_bringup_launch.py

两者共存不冲突:

  • URDF 的 laser_link 用于 RViz 模型可视化
  • 静态 TF 的 laser 用于实际 /scan 数据的坐标变换
  • Cartographer 按 /scan 消息的 frame_idlaser)查 TF,走静态 TF 链路

2.5 Cartographer 配置优化 【已完成】

针对 TG30 雷达创建了两份 Cartographer 配置文件:

tg30_2d.lua(正式建图用,有 odom)
参数原值新值说明
tracking_framebase_footprint不变跟踪底盘
use_odometrytrue不变使用底盘里程计
min_range0.10.05TG30 最小 0.01m
max_range812.0TG30 最远 64m,室内取 12m
missing_data_ray_length0.55.0增大无数据射线长度
publish_frame_projected_to_2dfalsetrue2D 投影
optimize_every_n_nodes注释掉30启用全局优化
min_score0.70.65适当放宽回环检测
tg30_2d_no_odom.lua(手持测试用,无 odom)
参数说明
tracking_framebase_link无 odom,直接跟踪 base_link
published_framebase_link发布到 base_link
provide_odom_frametrueCartographer 自行生成 odom
use_odometryfalse不使用里程计
optimize_every_n_nodes20更频繁优化,补偿漂移
min_score0.55放宽匹配阈值

2.6 创建 Launch 文件 【已完成】

创建了两个新 launch 文件:

文件用途启动命令
map_cartographer_test_launch.py无底盘手持测试ros2 launch yahboomcar_nav map_cartographer_test_launch.py
map_cartographer_tg30_launch.py正式建图(底盘到后用)ros2 launch yahboomcar_nav map_cartographer_tg30_launch.py
测试版 launch 启动的内容:
  1. 雷达驱动(4ros_ydlidar_launch.py
  2. 静态 TF:base_footprint → base_link(高度 0.0815m)
  3. 静态 TF:base_link → laser(位移 + yaw 旋转)
  4. Cartographer 节点(无 odom 模式)
  5. 栅格地图发布节点
正式版 launch 启动的内容:
  1. 底盘 + 雷达(laser_bringup_launch.py
  2. Cartographer 节点(有 odom 模式)
  3. 栅格地图发布节点

3. 当前工作空间文件结构

~/ydlidar_ws/src/ ├── ydlidar_ros2_driver-master/ # 雷达驱动(阶段一已编译) ├── yahboomcar_description/ # URDF 机器人模型 ← 新增 │ ├── urdf/yahboomcar_X3.urdf # X3 小车模型 │ └── meshes/ # 3D 模型文件 ├── yahboomcar_msgs/ # 自定义消息 ← 新增 ├── yahboomcar_nav/ # 导航建图包 ← 新增 │ ├── launch/ │ │ ├── map_cartographer_test_launch.py ← 新建(手持测试) │ │ ├── map_cartographer_tg30_launch.py ← 新建(正式建图) │ │ ├── map_cartographer_launch.py # 原始 launch │ │ ├── save_map_launch.py # 保存地图 │ │ └── ... │ └── params/ │ ├── tg30_2d.lua ← 新建(有 odom 配置) │ ├── tg30_2d_no_odom.lua ← 新建(无 odom 配置) │ ├── lds_2d.lua # 原始配置 │ └── dwb_nav_params.yaml # 导航参数 

4. TF 坐标链

手持测试模式(无底盘)

map → odom → base_link → laser ↑ ↑ ↑ Cartographer 静态TF 静态TF 自动生成 (0,0,0.0815) (0.0435,0,0.11,yaw=π) 
base_footprint 在手持模式下通过静态 TF 连接到 base_link

正式建图模式(有底盘)

map → odom → base_footprint → base_link → laser ↑ ↑ ↑ ↑ SLAM 底盘编码器 URDF固定关节 静态TF +EKF 

5. 底盘的操作流程

# 第一步:安装 apt 依赖(如果还没装)sudoaptinstall-y ros-humble-cartographer ros-humble-cartographer-ros sudoaptinstall-y ros-humble-nav2-map-server sudoaptinstall-y ros-humble-robot-state-publisher ros-humble-joint-state-publisher ros-humble-xacro # 第二步:安装底盘驱动(根据底盘型号)# 具体命令待底盘到了再确定# 第三步:启动建图 ros2 launch yahboomcar_nav map_cartographer_tg30_launch.py # 第四步:遥控小车在房间里慢速移动,RViz 中观察地图构建 rviz2 # 添加 Map + LaserScan 显示# 第五步:建图满意后保存 ros2 launch yahboomcar_nav save_map_launch.py # 地图保存到 ~/ydlidar_ws/src/yahboomcar_nav/maps/yahboomcar.pgm + .yaml

6. 手持测试建图流程(可选,底盘到之前)

# 前提:已安装 Cartographer(sudo apt install ...)# 第一步:启动 ros2 launch yahboomcar_nav map_cartographer_test_launch.py # 第二步:手持雷达在房间里慢慢走(要求平稳,不能快速移动)# 第三步:在另一个终端打开 RViz 观察 rviz2 # 添加 Map 显示(topic: /map)# 添加 LaserScan 显示(topic: /scan)# 第四步:保存地图 ros2 launch yahboomcar_nav save_map_launch.py 
注意:手持建图精度较低,仅作为验证 Cartographer 是否正常工作。正式地图需等底盘到了重建。

7. 阶段二完成状态

序号步骤状态
2.1安装 apt 依赖待用户手动执行
2.2设置 LIDAR_TYPE 环境变量已完成
2.3复制并编译建图相关包已完成
2.4TF Frame 分析已完成(无需修复)
2.5Cartographer 配置优化已完成
2.6创建 Launch 文件已完成

Read more

《MySQL 亿级数据表平滑分表实践:基于时间分片的架构演进》

《MySQL 亿级数据表平滑分表实践:基于时间分片的架构演进》

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? * 专栏导航: 码农阿豪系列专栏导航 面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️ Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻 Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡 全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀 目录 * 《MySQL 亿级数据表平滑分表实践:基于时间分片的架构演进》 * 引言 * 一、为什么我们需要分表? * 1.1 单表数据量过大的问题 * 1.2 分表方案选型 * 二、

By Ne0inhk
VS code 安装依赖包出现的一系列报错:node.js

VS code 安装依赖包出现的一系列报错:node.js

场景: VS code安装依赖包的一系列报错 问题描述 问题1:VS code使用npm install 安装包的时候,出现 **npm:无法将“npm项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符:1 +npm i +CategoryInfo:ObjectNotFound:(npm:String) (],CommandNotFoundException 4FullyQualifiedErrorId :CommandNotFoundException** 因为没有安装node.js,所以识别不了,下面安装node.js: 参考https://blog.ZEEKLOG.net/weixin_42182741/article/details/152072795 感谢大佬提供的详细教程! 安装之后,

By Ne0inhk
测试飞快、生产卡死:你的 SQL 性能瓶颈,被这项技术破解了

测试飞快、生产卡死:你的 SQL 性能瓶颈,被这项技术破解了

每日一句正能量 >无论生活怎样,希望你保持自律,保持清醒,昨日之深渊,今日之浅淡。敬大家也敬自己! 前言 你是否遇到过这样的场景:一个看似复杂的SQL,在测试环境运行飞快,一到生产环境就“卡死”,一查执行计划,发现子查询生成了一个巨大的中间结果集,导致后续操作全部陷入性能泥潭? 如果你正被此类场景困扰,那么,是时候认识一项改变游戏规则的技术:金仓数据库(KingbaseES)「基于代价的连接条件下推」。它不仅是技术优化,更是应对复杂业务查询的“性能终结者”。 一、 为什么你的复杂SQL会“爆内存”? 在金融、政务等复杂业务系统中,为了逻辑清晰,SQL常常被写成这样: SELECT * FROM (SELECT DISTINCT * FROM 巨表_A) AS 子查询结果,      筛选表_B WHERE 子查询结果.关键ID = 筛选表_B.关键ID

By Ne0inhk
SQL Server 2025安装教程

SQL Server 2025安装教程

软件介绍 SQL Server是由微软推出的关系型数据库管理系统,它提供了可靠的数据存储、数据管理和数据分析功能。SQL Server支持多种数据处理功能,包括事务处理、数据分析、报表生成和数据挖掘等,因此在企业和组织中得到广泛应用。 软件安装包领取 感兴趣可直接无套路获取 【SQL Server 2025】安装包 无需转发,无套路,即可领取 👇👇👇 (仅作学术分享,不可商用,支持正版) 软件安装流程 1.打开文件夹,点开文件夹,鼠标右键,以管理员的身份运行 2.点击【安装】,再点击第一个; 3.点击 4.先勾选,再点击 5.点击 6.点击 7.不要勾选,再点击 8.先勾选,确认好想要安装的途径,再点击 9.

By Ne0inhk