前期复现FastDrone,先跑通FastDrone自带的仿真,但尚未与飞控集成,然后就搭建了纯软件仿真(稍后补上参考文档),采用双目VINS做定位,仿真的效果非常好,使用Intel Realsense相机+Nvidia Jeston板子+四轴搭建真机(稍后补上),办公室照明不错,测试VINS偶尔会发散,轨迹是锯齿状的,换大场地测试,光照条件变差,VINS轨迹总是发散,想办法增加了光源,结果EGO-planner自动执行了短短几十秒就由于定位漂移致炸鸡------无人机撞到障碍物坠落。最近拜访了高飞老师的无人机公司,受启发,果断换激光雷达,用MID360替换双目,原想十拿九稳,结果遇到一大坑,查了快一周,仔细看rviz,发现了问题根源,终于解决了,发现不止自己遇到了,就分享给大家。
EGO-planner报错: ERROR! the drone is in obstacle. This should not happen.
Faster-LIO替换VINS,遇到问题,
bash
iter=5,time(ms)=0.058,rebound.
[ERROR] [1776337886.013669837]: ERROR! the drone is in obstacle. This should not happen.
[ERROR] [1776337886.013683083]: Ran out of pool, index=100 58 16
[ERROR] [1776337886.013695521]: Unable to handle the initial or end point, force return!
[ERROR] [1776337886.013707564]: a star error
iter=5,time(ms)=0.06,rebound.
plan_success=0
refine_success=0
[drone 0 replan 94842]==============================================
[ERROR] [1776337886.013877139]: Ran out of pool, index=100 73 3
[ERROR] [1776337886.013888504]: Unable to handle the initial or end point, force return!
[ERROR] [1776337886.013899499]: a star error, force return!
[ERROR] [1776337886.013922661]: ERROR! the drone is in obstacle. This should not happen.
[ERROR] [1776337886.013936150]: Ran out of pool, index=100 72 4
[ERROR] [1776337886.013947585]: Unable to handle the initial or end point, force return!
[ERROR] [1776337886.013959527]: a star error
iter=5,time(ms)=0.062,rebound.
用双目VINS测试没有遇到此问题,改用了Faster-LIO后,出现此问题,一开始按报错排查planner代码,A*、优化等,找不出原因,后面看到有人在参考博客评论说是Odom的z坐标为负数导致,我尝试修改了代码,验证无效,不管怎么动,始终在障碍里,好像这个障碍与机体绑定了,我就看原始点云,调整rviz显示点云效果,确实看到一个几乎贴着雷达中心的点,令人难以置信,一般LIO对点云输入都会过滤的,怎么可能出现这种问题?
发现确实是代码有错误,src/pointcloud_preprocess.cc 改正前后,

验证解决了。
同时看到有用Fast-LIO2的也遇到了,Fast-LIO2源码可能有相似的漏网之鱼问题,条件是使用avia_handler函数,且feature_enabled为false。
