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

Copilot Prompt 工程实战:如何设计高效提示词提升开发效率

背景痛点:提示词写得越随意,返工越频繁 第一次把 GitHub Copilot 请进 IDE 时,我以为“会说话就能写代码”。结果三天后,同一段逻辑被它反复生成三种完全不同的写法:变量命名一会儿匈牙利、一会儿驼峰;边界条件时而 <= 时而 <;最离谱的是把 async/await 和 .then 混在一个文件里。问题根源不在模型,而在我的提示词——太模糊、太短、没有上下文。总结下来,开发者最容易踩的坑集中在三点: 1. 任务描述像“帮我写个排序”这种一句话,模型只能猜数据规模、猜稳定性需求,结果当然随缘。 2. 上下文缺失,Copilot 只能看到当前打开的文件,对项目里已有的工具函数、类型定义、测试风格一无所知,于是“重复造轮子”或“风格打架”

AI绘画隐私保护方案:麦橘超然本地部署实践

AI绘画隐私保护方案:麦橘超然本地部署实践 1. 为什么本地AI绘画正在成为创作者刚需 你有没有过这样的经历:输入一段精心构思的提示词,点击生成,几秒后画面出现——但心里却隐隐不安?那些关于人物肖像、产品原型、未发布设计稿的图像,正悄然上传至某个远程服务器,存入不可见的数据库。在AI绘画工具遍地开花的今天,数据不出本地已不再是技术极客的执念,而是职业插画师、独立设计师、品牌视觉负责人的真实工作底线。 麦橘超然(MajicFLUX)离线图像生成控制台,正是为这一需求而生。它不是又一个云端API的网页包装,而是一套真正“关上门就能用”的本地解决方案:模型预置、服务自启、全程离线、零网络外传。更关键的是,它不靠牺牲画质换隐私——通过float8量化与CPU卸载双引擎,在RTX 3060(12GB显存)甚至GTX 1660 Super(6GB显存)上,仍能稳定输出1024×1024分辨率、电影级质感的AI图像。 这不是理论推演,而是我们连续三周在真实创作场景中验证过的落地路径。下文将完全跳过概念铺垫,直击三个核心问题: * 它如何从根源上切断数据外泄可能?

Tasmota智能家居固件完整入门指南:从零搭建本地化控制体系

Tasmota作为一款专为ESP8266和ESP32微控制器设计的开源固件,能够将普通的WiFi模块升级为功能强大的智能设备。这款免费开源软件支持MQTT协议和多种通信标准,是智能家居DIY项目的首选解决方案。 【免费下载链接】Tasmotaarendst/Tasmota: Tasmota 是一款为 ESP8266 和 ESP32 等微控制器设计的开源固件,能够将廉价的WiFi模块转换为智能设备,支持MQTT和其他通信协议,广泛应用于智能家居领域中的各种DIY项目。 项目地址: https://gitcode.com/GitHub_Trending/ta/Tasmota 为什么选择Tasmota:本地化控制的革命性优势 在智能家居领域,数据隐私和控制权已成为用户最关心的问题。传统的云依赖型设备存在诸多痛点:服务中断风险、数据泄露隐患、功能受限等问题。Tasmota通过完全本地化运行模式,彻底解决了这些痛点。 核心优势对比分析: 控制维度传统云方案Tasmota本地方案响应速度200-500ms20-50ms网络依赖必须联网局域网可用数据安全云端存储本地存储功能扩展厂商限

比肩英伟达Jetson Orin NX-国产机器人大脑RDK-S100评测

比肩英伟达Jetson Orin NX-国产机器人大脑RDK-S100评测

提起机器人开发平台,目前行业内较为流行的当属英伟达的Jetson Orin 和高通的RB5。凭借英伟达成熟的GPU技术,以及高通在手机SoC领域积累的高性能优势,二者能够较为顺畅地将既有技术栈迁移至机器人平台。然而,这些企业均来自国外。那么,国内是否也有同样出色的机器人平台呢?答案是肯定的——这正是本文将要为大家介绍的地瓜机器人RDK-S100。 地瓜机器人源自以自动驾驶SoC闻名业界的地平线机器人,目前专注于机器人相关领域的研发。近年来,公司已陆续推出X3、X5等芯片组平台,并实现大规模量产。而此次介绍的S100芯片组,则是其最新一代产品,对应地平线J6平台。与英伟达Orin Nano模组及高通RB5模组类似,S100芯片组同样采用SIP模组形式供货,集成有S100主控芯片、DDR内存及PMIC等关键部件。而RDK-S100,正是基于该SIP模组打造的官方评估板。 本文将从硬件,软件两个方面,大致介绍一下RDK-S100。 硬件介绍 开发板的外包装,正面是开发板的名称,背面的文字说明了开发板硬件的配置。 包装内包含开发板一个(SIP模组和散热器已经安装上去),电源一个