资讯详情

基于Jetson的自主轮椅系统:从感知到控制的工程实践

📅 2026/10/20 10:21:52 | 华诺云谱 👁 阅读
基于Jetson的自主轮椅系统:从感知到控制的工程实践
1. 从能动到会想自主轮椅到底在解决什么问题轮椅这个东西看起来结构简单无非是轮子、座椅、电机加个控制器。但真正做过辅助移动设备的人都知道普通电动轮椅和自主轮椅之间隔着一道巨大的鸿沟。普通电动轮椅本质上是把人的手部推力换成了电机扭矩操控权完全在人手里——你得时刻盯着前方判断距离决定往左还是往右。对于手部功能退化、认知负荷承受能力下降的用户来说这种全程手动的模式反而成了一种负担。自主轮椅要解决的核心问题就一个把怎么走这件事从人脑转移到车载计算平台上让人只需要表达去哪或者干什么这种高层意图。这个转移过程涉及三个层面的能力建设——感知层要知道周围有什么决策层要判断该怎么绕过去控制层要精确地执行转向和速度指令。这三层缺一不可而且必须在移动平台上实时完成不能像实验室里那样跑一秒算三秒。我之所以对这个方向特别感兴趣是因为它和自动驾驶汽车在技术栈上有大量重叠但约束条件完全不同。自动驾驶面对的是结构化道路、车道线、交通规则而轮椅面对的是室内走廊、电梯间、突然出现的行人、半开的门、地上的电线。场景更碎、更不可预测但速度更低、容错空间反而更大。这意味着你可以用更便宜的传感器、更轻量的模型但必须把鲁棒性做到极致。NVIDIA Jetson 系列在这个场景里几乎是天然的选择。它的算力足够跑视觉模型功耗又控制在电池能接受的范围内尺寸也塞得进轮椅座椅下方。一个机器人学专业的学生用 Jetson 做自主轮椅本质上是在做一个低速限定场景下的自动驾驶系统只不过这个系统的服务对象更具体、需求更明确、反馈更直接。这篇文章适合谁看如果你正在做移动机器人、辅助设备、边缘视觉推理相关的项目或者你是一个想从仿真走向实车的机器人方向学生这里面的选型逻辑、踩坑经验和调试方法应该能帮你省下不少时间。我不会只给你一个用了什么的清单而是把每个决策背后的权衡讲清楚让你能根据自己的场景做调整。2. 硬件选型为什么是 Jetson为什么是这些传感器2.1 Jetson 型号的取舍逻辑Jetson 家族型号很多从 Nano 到 Orin 系列算力和价格跨度极大。做自主轮椅选哪个不能只看算力峰值得看三个实际约束功耗预算、物理尺寸、推理延迟。轮椅的电池通常是 24V 或 36V 铅酸或锂电池组容量在 20Ah 到 40Ah 之间。如果给计算平台分配 30W 的持续功耗对续航的影响大约是多少简单算一下30W 在 24V 下是 1.25A如果电池是 30Ah理论上满打满算能撑 24 小时但实际要考虑电机占大头、转换损耗、不能放空等因素计算平台占 10% 到 15% 的功耗预算是比较合理的。所以 Jetson 的功耗模式必须能压到 15W 到 30W 这个区间。Nano 系列功耗低但算力有限跑轻量分割模型勉强够用但如果你想同时跑目标检测加深度估计加路径规划就会捉襟见肘。Orin 系列算力充裕但高功耗模式下的散热和供电设计对轮椅这种移动平台来说是个挑战。实际项目里比较稳妥的选择是 Orin NX 或 Xavier NX 这个档位能在 15W 到 25W 模式下提供足够的 TOPS 来跑实时视觉模型同时尺寸和散热都好处理。注意Jetson 的功耗模式不是软件里随便设一下就行它和载板设计、散热方案强相关。如果你选了高功耗模式但散热没跟上芯片会降频实际推理延迟反而比低功耗模式更差。2.2 传感器组合不是越多越好自主轮椅的感知需求可以拆成三类障碍物检测、定位与建图、用户意图输入。障碍物检测最直接的是深度相机比如 RGB-D 相机。它能同时给彩色图和深度图深度图直接告诉你前方 0.5 米处有个东西彩色图帮你判断那是什么。相比激光雷达深度相机的成本低一个数量级分辨率也更高缺点是视场角有限、强光下深度质量下降。室内轮椅场景下这个缺点可以接受。激光雷达的优势是全向扫描和精确测距但一个 2D 激光雷达只能扫一个平面对于悬空的桌角、低矮的门槛这类障碍物会漏检。3D 激光雷达价格又上去了。所以常见做法是深度相机做主感知超声波或红外测距做近距补盲激光雷达可选配用于建图。定位与建图方面轮式编码器加 IMU 做里程计是标配。编码器给粗略位移IMU 给姿态变化两者融合能撑住短时间内的位姿估计。但轮子打滑时里程计会漂所以需要视觉或激光做闭环修正。室内场景下用深度相机跑视觉里程计或者用 2D 激光跑扫描匹配都是可行方案。用户意图输入这块容易被忽略。自主轮椅不是完全无人用户得能告诉它去厨房或者停。常见的输入方式包括语音、触摸屏、摇杆切换模式。语音方案在嘈杂环境下识别率会掉触摸屏对某些用户又不方便。实际项目里往往是多种方式并存默认走自主模式用户随时可以接管。2.3 电机驱动与底层控制接口轮椅的电机通常是直流有刷或无刷电机驱动器接收模拟电压或 PWM 信号来控制转速和方向。Jetson 不能直接驱动电机中间需要一个微控制器做底层闭环。常见做法是用一块 STM32 或 Arduino 作为下位机接收 Jetson 发来的速度指令转换成 PWM 输出给驱动器同时读取编码器反馈做 PID 闭环。这个架构的好处是分工明确Jetson 负责重计算的感知和规划微控制器负责硬实时的电机控制。两者之间用串口或 CAN 通信。串口简单但速率有限CAN 更可靠但需要额外收发器。对于轮椅这种低速平台串口在 115200 波特率下足够用。实操心得下位机固件里一定要做看门狗和急停逻辑。如果 Jetson 因为某种原因卡死或通信中断下位机必须在几百毫秒内把电机速度降到零。这个逻辑不能依赖上位机必须在下位机独立实现。3. 感知栈搭建从原始像素到前方有障碍3.1 深度相机的数据流与预处理深度相机输出的原始数据通常是一对图像RGB 图和深度图深度图每个像素值是距离单位毫米或米。但原始深度图有很多无效值——黑色物体吸收红外、透明物体穿透、远处超出量程这些位置深度值为零或异常大。预处理的第一步是无效值过滤。简单做法是设一个有效距离范围比如 0.3 米到 5 米超出范围的置零。然后做空洞填充用邻域有效值的中值或均值补上。这一步不做的话后续障碍物检测会把无效值当成极远处从而忽略导致漏检。第二步是坐标变换。深度图是相机坐标系下的你需要把它转到轮椅坐标系通常以两轮中心为原点前方为 X 轴。这需要相机的内外参标定。外参就是相机安装在轮椅上的位置和角度内参是相机自身的焦距和光心。标定不准的话你算出来的障碍物距离和实际差很多规划出来的路径就会撞上去。第三步是降采样。原始深度图可能是 640x480 甚至更高直接在上面做逐像素处理很浪费算力。通常降到 160x120 或 320x240 就够用了因为障碍物检测不需要那么高的空间分辨率。3.2 障碍物检测的两种路线路线一基于几何的方法。把深度图转成点云然后做地面分割和聚类。地面分割的假设是地面大致水平用 RANSAC 拟合一个平面平面以上的点就是障碍物。聚类用欧式距离聚类把相邻的点归成一团每团算一个包围盒。这个方法不依赖训练数据可解释性强但对地面不平、坡度变化敏感。路线二基于学习的方法。直接用深度图或 RGB 图跑语义分割网络把像素分类成地面、障碍物、人、家具等。Jetson 上可以跑轻量分割模型比如基于 MobileNet 或 EfficientNet 的编码器-解码器结构。这个方法的优势是能区分障碍物类型对地面变化更鲁棒缺点是需要标注数据且模型推理有延迟。实际项目里常见的是混合方案用几何方法做快速初筛把疑似障碍物的区域抠出来再用轻量分类网络判断是不是真障碍物。这样既保证了速度又降低了误报。3.3 定位与建图的轻量化实现室内轮椅不需要厘米级全局定位但需要知道我在走廊的哪个位置以及我相对于上次走过的路径偏了多少。常见做法是跑视觉里程计加回环检测或者用 2D 激光跑粒子滤波。视觉里程计用深度相机的话可以提取 ORB 或 FAST 特征点做帧间匹配估计运动。Jetson 上跑 ORB-SLAM 的轻量配置是可行的但要注意特征点数量要限制不然 CPU 占用会飙。另一种更轻的方案是用光流法估计平面运动假设场景大致在一个平面上用稀疏光流算位移和旋转。精度差一些但资源消耗小很多。建图方面如果只是做局部避障不需要全局地图用滚动窗口的局部栅格地图就够了。每帧把障碍物投影到栅格上栅格分辨率 5 厘米左右窗口大小 4 米乘 4 米。这个地图只用于局部路径规划不追求全局一致性。注意轮椅在走廊里走的时候两侧墙壁在深度图上会形成两条平行线。如果定位漂了这两条线在栅格地图上就会歪导致规划出的路径贴着墙走。所以定位修正的频率不能太低建议每 2 到 3 秒至少做一次闭环修正。4. 规划与控制让轮椅走得稳、停得住4.1 局部路径规划的选择局部规划器的任务是在当前栅格地图上找一条从当前位置到局部目标点的无碰撞路径。常见算法有动态窗口法DWA、时间弹性带TEB、以及基于采样的 RRT 变种。DWA 的思路是在速度空间里采样多组线速度和角速度模拟未来一小段时间的轨迹选一条不撞障碍物且最接近目标方向的。它的优点是计算量小、实时性好适合 Jetson 这种算力有限的平台。缺点是容易陷入局部最优比如遇到 U 型障碍物会来回震荡。TEB 把路径当成一条弹性带同时优化路径长度、平滑度和与障碍物的距离。效果比 DWA 好但优化过程需要迭代计算量更大。在 Jetson 上跑 TEB 需要限制迭代次数和路径点数量不然帧率会掉。实际项目里如果场景比较简单走廊、房间DWA 调好参数就够用了。参数调优的重点是速度采样范围和障碍物膨胀半径。膨胀半径设太小会贴着障碍物走设太大会导致窄通道过不去。一般设成轮椅实际半径加 10 到 15 厘米的安全余量。4.2 速度平滑与乘坐舒适性轮椅和汽车不一样乘坐者直接坐在上面急加速、急转弯、频繁启停都会让人不舒服甚至晕眩。所以控制层必须做速度平滑。具体做法是在规划器输出和电机指令之间加一个低通滤波或斜率限制。比如线速度变化率限制在 0.3 米每二次方秒角速度变化率限制在 0.5 弧度每二次方秒。这样即使规划器输出跳变实际执行也是渐变的。另一个技巧是转弯时降速。当角速度指令超过某个阈值时自动把线速度按比例降下来。这符合人的驾驶直觉也能减少侧倾感。4.3 急停与安全兜底自主系统必须有兜底机制。感知可能漏检规划可能出错通信可能中断所以需要多层安全防护。第一层是感知层的紧急障碍物检测。在深度图正前方一个窄条区域内如果检测到距离小于 0.4 米的障碍物直接触发急停不经过规划器。这个逻辑要独立于主感知流程用最简单的阈值判断实现保证响应速度。第二层是下位机的看门狗。如果超过 500 毫秒没收到上位机指令下位机自动把速度降到零。第三层是物理急停按钮。用户手边必须有一个能直接切断电机使能的按钮这个按钮不经过任何软件逻辑。实操心得急停触发后不要自动恢复。必须让用户手动确认后才能重新进入自主模式。自动恢复在调试时很方便但在实际使用中可能导致反复急停-恢复-急停的震荡用户体验极差。5. 调试过程中那些文档不会写的事5.1 深度相机的安装角度比你想的更重要深度相机装高了地面盲区大近处的小障碍物看不到。装低了远处视野被地面占满有效检测距离短。装平了走廊尽头的地面反射可能干扰深度计算。经过反复试比较合适的安装高度是离地 60 到 80 厘米俯仰角向下 10 到 15 度。这个角度下近处 0.3 米到远处 4 米的地面都能覆盖同时前方障碍物的立面也能看到。相机要尽量装在轮椅中轴线上偏左或偏右会导致左右感知不对称规划出的路径会偏向一侧。5.2 轮式里程计的标定不能偷懒编码器给出的脉冲数要转换成实际位移需要知道轮子直径和减速比。但实际轮子有磨损、气压变化、打滑理论值往往不准。必须做实际标定让轮椅直线走 5 米记录编码器脉冲数反算有效轮径。左右轮分别标定因为两个电机的特性可能有差异。标定不准的直接后果是走直线会跑偏走弧线半径不对。在窄走廊里几度的偏差累积几米后就会撞墙。5.3 Jetson 的散热设计决定持续性能Jetson 在跑视觉模型时发热很大如果散热片太小或风扇风量不够芯片温度会很快冲到降频阈值。降频后推理时间可能从 30 毫秒跳到 80 毫秒规划周期跟不上轮椅就会一顿一顿的。散热方案上铝制散热片加涡轮风扇是比较稳妥的。风扇转速要能根据温度自动调节不然一直全速转噪音大还费电。另外Jetson 的载板要留足够的通风空间不要把它封在密闭盒子里。5.4 电源噪声会干扰传感器轮椅电机启停时电流变化很大会在电源线上产生尖峰和纹波。如果深度相机和 Jetson 共用一路电源电机一启动相机可能就掉线或出噪点。解决办法是给计算平台和传感器单独做一路稳压加足够的滤波电容和磁珠。电机驱动器的电源线要尽量短并且和信号线分开走线。如果条件允许用独立的电池给计算平台供电是最干净的方案。6. 从 demo 到可用还差哪些工程化工作6.1 启动流程与状态管理实验室里跑 demo通常是手动开终端、逐个启动节点、手动设初始位姿。实际使用不可能这样。需要做一个启动管理上电后自动初始化传感器、加载地图、进入待命状态用户按一个按钮就开始自主模式。状态机要清晰待命、自主导航、手动接管、急停、故障。每个状态之间的切换条件要明确切换时的动作要定义好。比如从自主切到手动要先平滑降速再交还控制权不能直接跳变。6.2 日志与远程监控出问题的时候你需要知道当时感知看到了什么、规划算了什么、控制发了什么。所以关键数据要打日志深度图关键帧、障碍物列表、规划路径、速度指令、电机反馈。日志存在本地出问题后可以回放分析。如果条件允许加一个轻量的远程监控页面能看到当前状态和关键指标。调试阶段这个非常有用不用一直跟着轮椅跑。6.3 用户交互的容错设计用户输入不可能总是准确的。语音可能识别错触摸可能点偏。所以交互层要做确认和撤销。比如用户说去厨房系统先复述即将前往厨房请确认用户确认后再执行。执行过程中用户随时可以喊停。另外用户意图和系统建议冲突时以用户为准。如果用户坚持要往某个方向走即使系统判断有障碍物也应该先停下来解释而不是直接拒绝执行。7. 这套方案还能往哪些方向延伸自主轮椅的技术栈搭好之后很多能力是可以复用的。比如把轮椅换成移动底盘加机械臂感知和规划层几乎不用改只需要加机械臂的运动规划。或者把场景从室内扩展到园区道路加上 GPS 和更远距的感知就变成了低速配送车的雏形。从学习角度来说这个项目覆盖了移动机器人最核心的几个模块传感器标定、数据融合、视觉推理、路径规划、运动控制、系统集成。每一个模块单独拿出来都有很深的坑可以挖组合在一起又能训练系统级思维。对于机器人学专业的学生来说这是一个非常好的综合实践载体。我在实际调试中体会最深的一点是感知和规划的参数不是调一次就完事的。换了场地、换了光照、换了地面材质之前调好的参数可能就不适用了。所以系统要有一定的自适应能力或者至少要有方便的在线调参接口。把参数写死在代码里后期维护会非常痛苦。最后分享一个小技巧在轮椅上加一个小的显示屏实时显示深度图的俯视图和规划出的路径。调试的时候一眼就能看出感知和规划是否一致比看日志快得多。这个屏幕不需要高分辨率一个几英寸的 HDMI 小屏就够但能省下大量排查时间。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑