发布时间:2026/8/30 6:54:25
从零搭智能小车(4):传感器集成与 SLAM 初探 这个月过的有点充实先是在闲鱼买了二手的RPLIDAR A3和JY901S IMU然后等货期间把古月居的ROS入门21讲看了一下以前也没接触过这个关注的公众号Datewhale正好推了个AI夏令营本来想报智能体项目因为限定是在校学生我报名的时候已经满了只能报了个SKILL项目边学边练两头忙活就把写文章记录这事给忘了明天返校了今天补一下时间长了怕想不起来了。折腾了两周底盘终于不再乱飘了。之前把rpm_per_mps从 184 修正到 176 之后1 米直线测试的误差缩到了 2cm 以内虽然还是开环积分但至少 RViz 里的轨迹和实际车头能对上号。这一阶段的目标是把手头这两样东西——RPLIDAR A3 和 JY901S IMU——真正接到系统里让车从盲跑变成有感知再试着跑通 gmapping输出第一张地图。一、先搞定 TF 树不然后面全是乱的之前底盘节点chassis_driver.py只发布了odom → base_link的 TF雷达和 IMU 装上去之后ROS 的坐标系链是断的。没做这一步就去开 SLAM点云会直接飘在原地或者根本对不上车体。我的安装方式雷达用铝型材支架架在车头正上方离地约 15cmIMU 用海绵垫固定在底盘几何中心X 轴朝前、Y 轴朝左、Z 轴朝上。海绵减震是必须的直接拧在碳纤维板上电机的振动会把加速度计的数据彻底污染。先用static_transform_publisher把两个静态 TF 挂上# base_link 到 laserrosrun tf static_transform_publisher0.1800.15000base_link laser100# base_link 到 imurosrun tf static_transform_publisher000.08000base_link imu100这里有个细节RPLIDAR A3 的官方 ROS 包rplidar_ros默认发布的 frame_id 是laserJY901S 的wit_ros_imu包默认是imu_link我为了统一把 IMU 的改了一下不然 TF 树会分叉。建议大家在 launch 文件里用remap或者改驱动参数不要像我一样先手动发 static_tf 试错半小时。二、RPLIDAR A3知道了为什么叫点云雷达驱动直接git clone官方包编译没什么坑。启动节点roslaunch rplidar_ros rplidar_a3.launch第一次看 RViz 里刷出 360° 点云的时候确实有点激动。A3 的扫描频率最高能到 10Hz我先用 115200 波特率跑后续如果做高速避障再切 256000。室内环境下 5m 以内的障碍物轮廓很清晰但黑色吸光物体和玻璃还是会有漏扫这个属于硬件物理限制后面写测试用例的时候得专门记一笔。这里有个小经验A3 的 USB 转接板带独立 5V 供电口我直接拿了一根 USB 转 DC 5.5×2.1mm 的线接到 多路电源 的 5V 输出上这样不需要占用 PC 的 USB 口供电转接板工作稳定很多。短线 独立供电是跑雷达的基本礼仪。三、JY901S IMU零偏比想象中难搞维特智能的 JY901S 接的是 STM32 的 UART2PA2/PA3但我没走 STM32 转发而是直接拉了一根 TTL 转 USB 线接 PC用wit_ros_imu包解析。原因是 STM32 上已经没有多余的串口中断资源做数据透传而且 IMU 的帧率 50~100Hz走底盘节点转发容易丢包。接线注意 TX/RX 交叉VCC 接 5V 或者 3.3V 都行JY901S 是宽压的。驱动跑起来之后先看/imu话题的linear_acceleration和angular_velocity。静态放置时Z 轴加速度应该在 9.8 左右XY 接近 0。但我第一次看数据X 轴有 0.3m/s² 的零偏Y 轴也有 0.15 左右。查了半天发现是海绵垫太薄舵机齿轮的振动传上来了。换了一块 5mm 厚的减震棉之后零偏降到 0.05 以内能接受。磁力计部分更头疼。室内环境铁磁干扰多航向角yaw会缓慢漂移。我现在的做法是IMU 只用来提供高频的角速度和加速度航向还是主要依赖雷达的 scan-to-scan 匹配来修正。后续如果做室外测试可能得上扩展卡尔曼滤波EKF做融合但现阶段robot_pose_ekf包先不急着开先把单传感器跑稳。四、gmapping第一张地图TF 齐了、传感器数据流通了就可以上 SLAM。我选的是 gmapping因为 ROS Noetic 支持成熟参数调好理解对 1:10 小车这种低速平台够用了。launch 文件核心配置nodepkggmappingtypeslam_gmappingnameslam_gmappingparamnamedeltavalue0.05/paramnamexminvalue-5.0/paramnamexmaxvalue5.0/paramnameyminvalue-5.0/paramnameymaxvalue5.0/paramnamemaxUrangevalue4.0/paramnamelinearUpdatevalue0.2/paramnameangularUpdatevalue0.1//nodedelta是地图分辨率0.05m 对一个轴距 255mm 的小车来说够细了。maxUrange设成 4 米是因为室内走廊最宽也就 3 米A3 的有效测距 5~6 米留点余量。我用teleop_twist_keyboard控制着车来回走速度压得很低大概 0.3m/s。阿克曼车不能原地转所以转弯必须带前进速度这一点在建图时反而成了优势——雷达始终有平移分量scan matching 比差速车原地打转要稳定。地图保存rosrun map_server map_saver-flab_map生成的lab_map.pgm能看到墙体轮廓但拐角处有些模糊这是因为我的里程计还是开环的虽然rpm_per_mps标过但轮胎打滑和地面不平还是会造成累积误差。下一步必须把 STM32 的编码器反馈接进chassis_driver.py把开环改成闭环地图质量才能上去。五、rosbag 与测试用例既然定位是测试验证方向光跑通不够得留下可复现的数据。这个阶段我养成了两个习惯1. 每次测试先录 bagrosbag record-Otest_$(date%Y%m%d_%H%M%S).bag /cmd_vel /odom /scan /imu /tf /tf_static命名带时间戳方便回溯。录完之后用rosbag info看消息数量和时间跨度确认没有丢话题。回放的时候注意--clock参数不然 TF 的时间戳对不上。2. 输出第一批测试用例我按等价类划分和边界值分析写了 10 条基础用例覆盖底盘、雷达、IMU 三个模块。举几个例子用例编号测试项输入/操作预期结果优先级TC-001底盘直线精度指令 0.5m/s持续 2s实际位移 1.0m ± 5cmP0TC-002舵机中位保护发送角度 0°底盘节点限幅到 60°不异常P0TC-003雷达帧率静止状态统计/scan频率稳定在 10Hz ± 0.5P1TC-004IMU 零偏静置 30s采集加速度XYZ 合模 9.8 ± 0.2P1TC-005急停响应运行中发送0x15急停帧电机 PWM 归零200ms 内停车P0TC-006地图闭合沿走廊走回起点gmapping 终点与起点重合误差 10cmP2写用例的时候发现一个问题阿克曼车的最小转弯半径左右不对称左 1.3m / 右 1.3m这在设计路径覆盖测试时必须考虑。我专门加了一条 TC-007验证左向和右向的转弯半径差异是否在机械标定范围内。六、阶段总结与下一步到这一步小车的软件架构已经变成teleop_twist_keyboard ──/cmd_vel──► chassis_driver.py ──0xAA──► STM32 │ ┌─────────────────────┼─────────────────────┐ ▼ ▼ ▼ /odom /scan /imu │ │ │ └─────────────────────┼─────────────────────┘ ▼ gmapping │ ▼ map_serverTF 树完整了传感器数据流打通了gmapping 能出图也建立了基础的测试文档规范。但问题还很明显里程计是开环的轮胎打滑和地面材质变化会让 SLAM 地图扭曲必须上编码器闭环。IMU 的航向漂移还没解决后续需要用 EKF 把 IMU 和雷达做融合。测试用例目前只有 10 条偏功能验证缺少异常测试比如串口突然断开、雷达数据丢包、电池低压保护。下一阶段P2 收尾 P3 起步的重点是编码器反馈接入、EKF 多传感器融合、以及把测试用例扩充到 30 条以上覆盖边界和异常场景。另外CAN 总线的学习也该排上日程了毕竟企业里没人用 TTL 串口做整车通信。当然这些都要等十月一放假的时候看看有没有时间还准备搞个二手的深度相机。附录本阶段参考与工具ROS Noetic Ubuntu 20.04rplidar_ros驱动包wit_ros_imu驱动包维特智能 GitHubgmappingmap_serverteleop_twist_keyboard阿克曼适配版自研chassis_driver.pyPython pyserial rospy标定工具卷尺 手机秒表 RViz低成本高精度

相关新闻

2026/8/30 6:49:25

基于Bluestein变换的近远场转换:FDTD/COMSOL远场方向图计算工具

简介:本资源是一款面向电磁仿真工程师与高校科研人员的Matlab远场计算工具,专为解决FDTD/COMSOL等全波仿真结果难以高效转换为远场辐射图这一实际问题而设计。工具基于夫琅禾费衍射理论与Bluestein DFT算法实现高精度远场变换,支持自定义FFT参…

2026/8/30 6:49:25

从API到编码代理:DeepSeek Harness 工作流搭建与400报错排查

如果你最近在本地搭过编码代理,大概率见过这个画面:某个长任务跑完,终端里突然蹦出一个“妈”字,紧接着一声“妈,任务做完了”的提示音从扬声器里冒出来。这不是 DeepSeek 学会叫人了,而是我给自己那套 Dee…

2026/8/30 6:49:25

数据-物理混合图神经网络:结构地震响应代理模型的新思路

做结构抗震分析的人,最熟悉的矛盾大概是:有限元时程分析算得准,但太慢。一次完整的弹塑性时程分析,在复杂结构上可能要跑几小时甚至几天;而震后快速评估、区域韧性分析、城市级地震风险筛查,往往需要计算几…

2026/8/30 7:09:26

XSS 过滤 安全加固实战:配置、检测与影响评估

XSS 过滤 安全加固实战:配置、检测与影响评估工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 围绕「XSS 过滤」,本文提供可落地的技术指南,并在关键…

2026/8/30 7:09:26

RBAC 权限 安全加固实战:配置、检测与影响评估

RBAC 权限 安全加固实战:配置、检测与影响评估工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 围绕「RBAC 权限」,本文提供可落地的技术指南,并在关…

2026/8/30 7:09:26

JWT 安全 安全加固实战:配置、检测与影响评估

JWT 安全 安全加固实战:配置、检测与影响评估工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 围绕「JWT 安全」,本文提供可落地的技术指南,并在关键…

2026/8/30 7:09:26

超级群站系统:多站点统一管理的架构设计与实战部署指南

简介:最新域名超级群站开源系统源码是一款面向SEO从业者、域名投资者及建站开发者的轻量级PHP建站工具,专为养域名、养权重场景设计,适用于关键词流量站、蜘蛛池、企业官网及个人博客等多类站点快速部署。资源包共251个文件,含49个…

2026/8/30 7:09:26

Egg中间件

下面按“它是什么 → 什么时候加载 → 什么触发 → 原理 → 如何开发”来说明 Egg 的 HTTP 中间件。 1. Egg 中间件是什么? Egg 基于 Koa,所以 Egg 的中间件本质上就是 Koa 中间件: async function middleware(ctx, next) {// 请求进入时执行…

2026/8/30 7:04:26

阿里开源Java八股文终极版:系统性刷题与面试进阶指南

"阿里官方上线!号称国内Java八股文天花板(终极版)首次开源"这个消息一出来,我朋友圈里瞬间炸了锅。做Java的、准备跳槽的、带新人的,几乎都在转这个资源。我第一次看到标题的时候,第一反应是&quo…

2026/8/30 0:03:35

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/30 0:03:35

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/30 0:03:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/30 0:03:35

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/30 0:03:35

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/30 0:03:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…