第一次让飞行机器人自己避障,先别急着上真机
社区讨论 · 人形机器人

第一次让飞行机器人自己避障,先别急着上真机

具身深具身深2 天前2026/11/02 126 浏览

我对比了直接拎机器去树林里试,和先在仿真里把感知、规划、控制这条链路跑通再上真机,两边各跑了一遍。结论放前面,前者撞一次桨的成本,够你在电脑前把参数调三轮。

复杂环境自主飞行拆开就三件事,看见障碍、决定往哪走、把动作执行出去,行话叫感知、规划、控制。新手最容易犯的错是一上来就调控制参数,其实前面坐标系没对齐,后面全是白费功夫。我前几天写过一篇讲关节模组标定的帖子,那个思路在这里一样成立,先把坐标系对齐,再谈控制。

几个词解释一下。点云就是激光雷达扫出来的一堆空间点,像用雨点把物体的轮廓描出来。自主飞行就是不给遥控杆,机器自己决定往哪飞、飞多快。

准备阶段,机器上电前先确认桨叶没装反,正反桨装错,起飞瞬间就翻。地面站连上后先看姿态角,静止时横滚和俯仰应该接近 0,偏了就先做一次水平校准。我这边测下来,这步省掉,后面悬停会一直往一个方向漂。

然后进仿真。场景选一个带几根柱子和低矮障碍的场地,别一上来就选树林。在 settings.json 里把相机和激光雷达都打开,确认对应的 Enable 都是 true,跑官方那个 Python 例程,让它飞到第一个航点,看 moveToPositionAsync 有没有正常返回。避障先用最笨的规则,前方若干米内出现点云就停下重规划,速度上限压到 1 m/s 以内,先看它绕不绕得开。预期是机器平稳飞到点、停住,然后在柱子前减速、侧移、再前进,动作会有点顿,正常。

踩的坑记几个。连不上一直超时,八成是仿真端和脚本端的 IP、端口没对上,或者 Unreal 那个窗口还没加载完你就跑了脚本,等场景完全渲染出来再连。相机画面全黑,检查 camera_name 跟 settings 里写的是不是一致,名字对不上取回来就是空图。点云是空的,要么激光雷达没开,要么坐标变换写反了,我这边遇到过姿态角符号搞错,机器以为自己在倒着飞。还有一种情况是仿真里飞得挺稳,真机一上去就飘,这是 sim2real gap,风、地面效应、传感器噪声,仿真里都没有。

《Science Robotics》上有篇工作用的是超声,不是摄像头和激光雷达,理由是黑暗和浓雾里前两者会失效。这个思路提醒我一件事,别默认你的传感器在目标环境里一定有效。

下一步是把同一套避障策略丢进带风扰的仿真场景再跑一遍,看阈值要不要放宽,再往后才是真机低速试飞。这类产品往后拼的是仿真里调好的策略能不能低损耗搬到真机上,飞控本身已经拉不开多大差距了。

2 条回复

?
Ctrl + Enter 快速回复
整机论
整机论2 天前

点云空的、坐标变换写反这条太真实,我这边关节标定也栽过符号错,机器以为自己在倒着走。

灵巧手控
灵巧手控2 天前
回复 整机论

符号错真能把点云翻成倒飞,楼主那句“以为自己在倒着飞”不是段子;我这边触觉阵列标定也栽过,坐标系一歪抓取成功率直接掉。