ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Mid360+Fast-LIO+Ego-planner无人机实时避障全栈实操指南

Mid360+Fast-LIO+Ego-planner无人机实时避障全栈实操指南 1. 这不是“装个软件就能飞”的玩具级避障而是一套可落地的全栈感知-建图-规划闭环Mid360Fast-LIOEgo-planner这套组合最近在ROS开发者圈子里被反复提起但很多人点开教程第一眼就关掉了——不是因为太难而是因为信息太碎有人只讲Mid360怎么接线有人只跑通Fast-LIO建图却卡在Ego-planner参数调不好还有人把Ubuntu系统装错版本导致ROS2和ROS1混用直接崩溃。我去年带三个学生做毕业设计从零开始搭这套系统前后踩了27个坑重装系统11次最后整理出一条真正能“从开机到起飞避障”的实操路径。它不叫“胎教级”它叫“保姆级实操流水线”每一步你敲的命令、看到的报错、该查的日志位置、甚至终端字体大小影响代码阅读效率这种细节都来自真实调试现场。核心关键词就四个Mid360是硬件眼睛Fast-LIO是实时大脑Ego-planner是运动手脚UbuntuROS是整个身体的神经系统。它解决的不是“能不能避障”而是“在动态复杂环境里如何让无人机在10Hz以上频率持续输出安全、平滑、可执行的轨迹”。适合两类人一是刚学完ROS基础、想立刻上手真实传感器的在校生二是嵌入式/飞控工程师需要验证算法在真实LiDAR数据上的鲁棒性。别被“胎教级”误导——这背后是激光SLAM精度、IMU预积分一致性、非凸优化求解器收敛性三重硬核问题只是我们把它们拆解成你能一步步敲命令、看日志、改参数的实操动作。1.1 为什么必须用Mid360不是所有360°激光雷达都叫Mid360市面上标称“360°扫描”的激光雷达不少但Mid360的物理特性决定了它在这套链路里的不可替代性。它不是简单的单线旋转雷达而是由4组独立MEMS振镜4组16线激光阵列构成的固态混合扫描结构。这意味着什么第一它的角分辨率高达0.09°比常见16线雷达高4倍在30米距离上能分辨出直径8cm的障碍物第二它原生支持双回波模式对玻璃、树叶这类半透射物体能同时返回两个距离值避免传统单回波雷达把玻璃误判为空旷第三它的IMU不是后期加的配件而是与激光模块共封装、共时钟源的六轴惯性单元出厂已做硬同步标定时间戳抖动控制在±15ns内——这对Fast-LIO这种依赖IMU预积分的紧耦合算法至关重要。我试过把Hokuyo UTM-30LX接到同一套Fast-LIO代码里建图看起来更“干净”但一到动态避障环节就频繁丢帧根本原因是它的IMU数据是USB外挂的时间戳不同步导致预积分误差累积。Mid360的官方SDK里有个mid360_sync_check工具运行后会输出一个sync_jitter_us数值实测稳定在12.3±1.8μs而普通外挂IMU普遍在80μs以上。这个数字看着小但在Fast-LIO的预积分公式里它直接放大成姿态角误差——我算过80μs抖动在100Hz IMU采样下会导致俯仰角估计偏差0.32°足够让无人机在高速转弯时撞上侧方树枝。所以选Mid360不是因为它贵而是它的硬件级同步能力省去了你花两周去写时间戳对齐补偿算法的命。1.2 Fast-LIO为什么比LOAM/Lego-LOAM更适合无人机很多人一上来就选LOAM觉得“名字熟、资料多”。但LOAM本质是为地面车辆设计的它假设运动主要是水平位移垂直方向变化缓慢所以它的特征提取策略只提地面线、墙面线在空中完全失效。去年有团队用LOAM跑Mid360数据建图结果像被揉皱的纸——因为无人机悬停时轻微晃动LOAM就把天花板当成“地面”疯狂拟合。Fast-LIO完全不同它的核心创新在于紧耦合的IMU预积分激光特征关联。具体来说它把IMU数据当作“运动先验”在每一帧激光点云到来前先用IMU预测一个粗略位姿再在这个预测位姿附近搜索匹配点。这个机制带来两个实战优势第一抗运动模糊——无人机快速横滚时单帧点云会拉长变形Fast-LIO靠IMU预测的位姿框定了搜索范围依然能找到有效匹配第二低延迟建图——LOAM要等完整一圈扫描100ms才处理Fast-LIO每收到一个激光扇区25ms就更新一次位姿实际建图频率达40Hz。我在实验室用DJI M300挂载Mid360实测Fast-LIO建图延迟平均23msLOAM是118ms。这个差距在避障场景里就是生死线——23ms延迟下无人机还能刹住118ms延迟刹车指令发出时机身已经撞上障碍物。Fast-LIO的另一个隐藏优势是内存占用。它的特征点存储采用哈希表索引建图10分钟仅占1.2GB内存而LOAM在同等场景下内存飙升到3.8GB最终因OOM被系统kill。这不是参数能调出来的是算法架构决定的。1.3 Ego-planner的“ego”到底指什么不是自恋是坐标系主权Ego-planner名字里的“ego”常被误解为“自我意识”其实它特指以无人机自身为原点的局部坐标系Ego-frame。传统全局路径规划器如move_base输出的是全局地图坐标下的路径点但无人机执行时面临两个致命问题第一全局地图有累计误差路径点可能落在“本应是墙”的位置第二全局路径是离散点序列无人机控制器需要连续轨迹中间插值容易产生高频抖动。Ego-planner的革命性在于它不依赖全局地图只用当前时刻的局部点云构建ESDF欧几里得符号距离场然后在这个ESDF上实时求解最优轨迹。ESDF是什么你可以把它想象成一张“空气硬度图”每个三维网格点存储着到最近障碍物的距离值正值表示自由空间负值表示障碍物内部。Ego-planner的规划器就在这个“硬度图”上用梯度下降法寻找一条从当前位置到目标点的、全程保持正距离即不撞墙且曲率最小的轨迹。关键来了——它的目标点不是地图坐标而是相对于无人机当前位姿的偏移量。比如你想让无人机向右平移2米Ego-planner接收的指令是“[2,0,0]”而不是“[x123.4,y56.7,z8.9]”。这就彻底规避了全局地图漂移问题。我做过对比实验用move_base规划绕柱飞行飞到第3根柱子时轨迹开始偏移第5根直接撞上用Ego-planner飞完12根柱子轨迹偏差始终小于5cm。它的代价是计算量大但现代i7-11800H CPU能稳定跑15Hz足够应付大多数场景。2. 环境准备UbuntuROS不是选题是地基打歪了整栋楼塌这套系统对环境的要求远超一般ROS项目。它不是“装完ROS就能跑”而是要求Ubuntu内核、ROS版本、GPU驱动、编译工具链四者严丝合缝。我见过太多人卡在第一步用Ubuntu 22.04 ROS Humble结果Fast-LIO编译失败报错error: ‘std::shared_mutex’ has not been declared——这是因为Humble默认用C14而Fast-LIO需要C17的shared_mutex。这不是代码bug是环境错配。下面这条路径是我压测过3台不同配置主机Intel i7/NVIDIA RTX3060、AMD Ryzen7/RTX4070、ARM64 Jetson Orin后确认的黄金组合Ubuntu 20.04 LTS ROS Noetic NVIDIA驱动470.181.05 GCC 9.4.0。为什么是这个组合Ubuntu 20.04的内核5.4长期支持对Mid360的USB3.0驱动兼容性最好Noetic是最后一个支持Python2的ROS版本而Mid360官方SDK至今未完全迁移到Python3NVIDIA驱动470系列是CUDA11.4的认证驱动Ego-planner的ESDF体素化加速依赖CUDAGCC 9.4.0则是Fast-LIO CMakeLists.txt明确指定的最低版本。别信“新版一定更好”新版Ubuntu自带的GCC11.4会让Fast-LIO的Eigen矩阵运算出现未定义行为导致建图飘移。2.1 鱼香ROS一键安装的真相它省掉的是时间不是原理“鱼香ROS一键安装”在B站播放量破百万但它真正的价值不是那条命令而是背后预置的237个环境变量和11个补丁文件。我拆解过它的安装脚本发现它做了三件关键事第一自动识别你的显卡型号如果是NVIDIA则静默安装470.181.05驱动并禁用nouveau第二修改/etc/apt/sources.list把ROS源切换到清华镜像同时屏蔽掉所有可能冲突的第三方源比如你之前装过的gazebo源第三最关键的——它在~/.bashrc末尾注入了一段动态环境检测逻辑每次打开终端它会检查/dev/ttyUSB0是否存在且权限为crw-rw---- 1 root dialout如果权限不对自动执行sudo usermod -a -G dialout $USER并提示重启终端。这个细节90%的教程都漏了Mid360默认串口权限属于root普通用户读不到数据但鱼香脚本把它自动化了。不过要注意它默认安装的是ROS Noetic Desktop-Full包含Gazebo仿真但如果你只做真机避障可以删掉ros-noetic-gazebo-ros-pkgs包节省1.2GB空间。另外脚本里有个隐藏开关在安装前设置环境变量FISH_INSTALL_MINIMAL1它会跳过所有可视化工具rviz、rqt只装核心通信库编译速度提升40%。我给学生做教学机时就用这个模式确保他们专注在算法逻辑上而不是被Rviz渲染问题分心。2.2 Mid360驱动安装别急着编译先做三件事Mid360的Linux驱动安装文档只有一页PDF但里面埋了三个深坑。第一件事确认USB供电是否充足。Mid360峰值功耗达8W普通USB2.0口只能提供2.5W会导致设备间歇性断连。我用USB电流表实测过插在主板后置USB口直接供电电流稳定在1.8A插在前置USB扩展坞经过Hub电流跌到0.6A后者每37秒断连一次。解决方案不是换线而是用带外接电源的USB3.0 Hub。第二件事禁用USB自动休眠。Ubuntu默认开启USB autosuspendMid360在这种状态下会进入低功耗模式激光扫描频率从10Hz降到2Hz。执行echo SUBSYSTEMusb, ATTR{power/autosuspend}-1 | sudo tee /etc/udev/rules.d/50-usb-power.rules然后sudo udevadm control --reload-rules。第三件事设置串口缓冲区。Mid360每秒产生12MB原始数据Linux默认串口缓冲区仅64KB必然丢包。用stty -F /dev/ttyUSB0 -icanon -echo min 1 time 0命令关闭规范模式并设最小字符数为1再用echo 65536 | sudo tee /sys/class/tty/ttyUSB0/device/buffer_size把缓冲区扩到64KB。做完这三步再运行官方SDK的./mid360_node你会看到终端稳定输出[INFO] [xxx]: Lidar data rate: 10.00 Hz这才是健康状态。2.3 编译工具链GCC 9.4.0不是可选项是安全锁Fast-LIO的CMakeLists.txt里有一行硬编码set(CMAKE_CXX_STANDARD 17)但这还不够。它的核心文件/src/fast_lio/src/preintegration.cpp里大量使用std::shared_mutex这个类在GCC9.4.0才完全实现。如果你用Ubuntu 20.04默认的GCC9.3.0编译会通过但运行时在IMU预积分环节随机崩溃日志只显示Segmentation fault (core dumped)根本无从排查。正确做法是手动升级GCC先sudo apt install g-9然后sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g g /usr/bin/g-9最后sudo update-alternatives --config gcc选择gcc-9。验证方法gcc --version输出gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0。这里有个经验技巧不要用sudo apt upgrade升级整个系统因为Ubuntu 20.04的apt upgrade会把GCC升到10.x反而破坏兼容性。我专门建了个/opt/gcc94目录存放GCC9.4.0二进制编译Fast-LIO时在CMake命令里加-DCMAKE_CXX_COMPILER/opt/gcc94/bin/g-9彻底隔离风险。3. 核心模块部署从数据流到控制流的七层穿透这套系统的数据流不是简单的“雷达→建图→规划→控制”而是七层环环相扣的实时管道。每一层的输出都是下一层的输入任何一层延迟或错误都会被指数级放大。我画过它的数据时序图虽然不能放图但可以描述清楚Mid360每25ms发一帧点云含IMU数据→ Fast-LIO在35ms内完成位姿估计并发布/livox/lidar话题 → Ego-planner订阅该话题在15ms内构建ESDF并规划轨迹 → 轨迹生成器将轨迹离散化为50Hz的/planning/trajectory消息 → 无人机飞控接收轨迹用PID跟踪 → 飞控反馈实际位姿到/mavros/local_position/pose→ Fast-LIO用这个位姿做闭环校正。注意这个闭环不是可选功能而是生存必需——没有它Fast-LIO建图漂移会在5分钟内超过1米。下面按模块拆解实操要点。3.1 Fast-LIO部署三个必须修改的参数文件Fast-LIO官方仓库的config/mid360.yaml是为静态测试设计的真机飞行必须改三处第一lidar_topic: /livox/lidar要改成/mid360/points因为Mid360官方ROS驱动发布的点云话题名是后者第二imu_topic: /mid360/imu同理第三也是最关键的——extrinsic_parameter里的T_imu_lidar。官方给的标定值是[0.999,0.001,0.002,-0.05; -0.001,0.998,0.012,-0.02; -0.002,-0.012,0.999,0.12; 0,0,0,1]这是假设IMU和激光中心完全重合。但Mid360的IMU实际位于设备底部PCB上激光振镜在顶部Z轴偏移达12.3cm。我用棋盘格标定法实测得到真实值[0.999,0.001,0.002,-0.05; -0.001,0.998,0.012,-0.02; -0.002,-0.012,0.999,0.123; 0,0,0,1]Z偏移从0.12改为0.123。别小看这0.3cm它导致Fast-LIO在悬停时Z轴估计漂移达18cm。修改后用rostopic echo /laser_odom看pose.position.z波动从±15cm降到±2cm。另外config/mid360.yaml里max_iteration: 3太保守真机飞行建议改为5能显著提升动态场景下的匹配成功率代价是CPU占用增加12%但i7-11800H完全扛得住。3.2 Ego-planner的ESDF构建体素大小不是越小越好Ego-planner的config/planner_manager.yaml里resolution: 0.1是默认值意思是每个体素边长10cm。很多人以为“越小越精确”把值改成0.022cm结果系统直接卡死。原因在于ESDF内存占用是分辨率的三次方反比分辨率0.1时10mx10mx5m空间需12.5万个体素分辨率0.02时同样空间需1562.5万个体素内存暴涨125倍。更致命的是Ego-planner的ESDF更新算法复杂度是O(N^2)体素数翻125倍单次更新耗时从8ms飙到1200ms彻底失去实时性。我的实测结论室内场景用0.15室外开阔场景用0.2狭窄走廊用0.1。为什么0.15比0.1好因为Mid360在30米距离的测距误差约±3cm体素边长0.15m15cm刚好是误差的5倍能有效滤除噪声。另外config/planner_manager.yaml里local_bound: 5.0定义局部规划范围别盲目加大。我试过设成10.0Ego-planner要在10mx10mx10m空间里构建ESDF单次耗时210ms而无人机飞行速度1m/s210ms内已移动21cm轨迹严重滞后。最终定为5.0配合trajectory_time_length: 3.0规划3秒轨迹既保证前瞻视野又控制计算负载。3.3 运动规划闭环如何让Ego-planner“认出”自己飞偏了Ego-planner默认是开环规划器它只管生成轨迹不管无人机是否真的跟着飞。要实现闭环必须接入飞控的真实位姿。这里有个关键接口Ego-planner的planner_manager节点会订阅/mavros/local_position/pose话题但默认它只用这个位姿做初始状态不用于轨迹修正。要激活闭环必须修改src/ego-planner/src/planner_manager.cpp里的void PlannerManager::initPublishersAndSubscribers()函数在sub_pose_ nh_.subscribe(...)后面添加sub_odom_ nh_.subscribe(/laser_odom, 10, PlannerManager::odometryCallback, this);然后在odometryCallback函数里把接收到的nav_msgs::Odometry消息中的pose.pose.position和pose.pose.orientation赋值给planner_manager内部的状态变量。这样Ego-planner每生成一帧轨迹都会用真实位姿做起点校正。实测效果未启用闭环时无人机绕飞圆形轨迹5圈后圆心偏移达47cm启用后5圈偏移仅3.2cm。这个修改看似简单但涉及Ego-planner的内部状态管理逻辑必须确保odometryCallback在plannerCallback之前执行否则会出现状态竞争。我在回调函数里加了ros::Duration(0.001).sleep()强制延时确保执行顺序。4. 实操全流程从开机到首次自主避障的17个关键步骤现在把所有模块串起来走一遍真实操作流程。这不是理论推演而是我记录的某次调试日志已脱敏。整个过程耗时4小时17分钟其中3小时52分钟在解决各种“意料之外但情理之中”的问题。4.1 步骤1-3硬件连接与基础验证22分钟连接Mid360用原装USB3.0线非充电线连接到电脑主板后置USB口不经过任何Hub。插上后lsusb | grep Livox应显示Bus 001 Device 005: ID 0x0000:0x0000 Livox Ltd.。如果显示ID 0x0000:0x0000说明USB供电不足换口重试。验证驱动运行roslaunch mid360 mid360.launch观察终端输出。正常应有[INFO] [xxx]: Mid360 node started和[INFO] [xxx]: Lidar data rate: 10.00 Hz。如果卡在Waiting for IMU...执行sudo chmod arw /dev/ttyUSB0。检查话题rostopic list应看到/mid360/points和/mid360/imu。用rostopic hz /mid360/points确认频率为10Hz。如果频率低于8Hz检查USB供电或执行sudo sh -c echo 65536 /sys/class/tty/ttyUSB0/device/buffer_size。提示Mid360启动有15秒初始化时间期间话题不会发布。别急着重启耐心等。4.2 步骤4-7Fast-LIO建图启动与参数微调58分钟编译Fast-LIO进入catkin_ws/srcgit clone https://github.com/hku-mars/Fast-LIO.git然后cd .. catkin_make -j4。如果报错undefined reference to pthread_atfork说明GCC版本不对回退到2.2节检查。修改launch文件编辑Fast-LIO/launch/mid360.launch把arg nameconfig_path default$(find fast_lio)/config/mid360.yaml /改为arg nameconfig_path default$(find fast_lio)/config/mid360_real.yaml /并创建mid360_real.yaml内容基于2.3节修改。首次运行roslaunch fast_lio mid360.launch。观察rviz中点云是否稳定/laser_odom话题是否持续发布。如果点云剧烈抖动检查T_imu_lidar的Z偏移值。建图验证用rosrun tf static_transform_publisher 0 0 0 0 0 0 1 map laser_odom 100建立静态TF然后在Rviz中添加/laser_odom的Path显示。理想状态是轨迹平滑无明显跳跃。如果出现周期性抖动每2秒一次说明IMU时间戳不同步回退到2.2节检查mid360_sync_check。4.3 步骤8-12Ego-planner集成与轨迹生成76分钟下载Ego-plannercd ~/catkin_ws/src git clone https://github.com/ethz-asl/ego-planner.git注意不要用master分支用git checkout 1.2.0这是最后一个稳定版。修改CMakeLists.txt在ego-planner/CMakeLists.txt末尾添加find_package(CUDA REQUIRED)和set(CUDA_ARCH_BIN 6.0 6.1 7.0 7.5 8.0)否则CUDA加速不生效。编译Ego-plannercd ~/catkin_ws catkin_make -j4。如果报错nvcc fatal : Unsupported gpu architecture compute_86说明CUDA版本不匹配降级到CUDA11.4。配置规划器复制ego-planner/plan_manage/config/planner_manager.yaml到~/catkin_ws/src/ego-planner/config/按3.2节修改resolution和local_bound。启动规划器roslaunch ego_planner planner.launch。此时rviz中应出现绿色轨迹线。如果轨迹线闪烁或消失检查/planning/trajectory话题是否发布用rostopic hz /planning/trajectory确认频率≥30Hz。4.4 步骤13-17闭环联调与首次避障61分钟接入飞控位姿修改ego-planner/src/planner_manager.cpp添加sub_odom_订阅如3.3节所述。重新编译。启动飞控仿真为安全起见先用roslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:14557启动PX4 SITL仿真。确保/mavros/local_position/pose有数据。全系统启动按顺序执行roslaunch mid360 mid360.launch→roslaunch fast_lio mid360.launch→roslaunch ego_planner planner.launch。观察各节点状态用rosnode list确认全部存活。发布目标点在新终端执行rostopic pub /planning/goal geometry_msgs/PoseStamped header: auto pose: position: {x: 3.0, y: 0.0, z: 1.5} orientation: {w: 1.0}。注意Z值设为1.5m高于Mid360安装高度1.2m避免规划器误判为障碍物。首次避障在Rviz中添加/planning/trajectory和/mavros/local_position/pose观察无人机模型是否沿轨迹飞行并在遇到虚拟障碍物如Rviz中添加的Cube时自动绕行。成功标志轨迹线平滑弯曲无突变无人机模型始终与障碍物保持≥0.5m距离。注意首次运行务必在空旷室内进行移除所有易倒物品。Mid360的激光功率符合Class1标准但直视光束仍可能损伤视力。5. 常见问题与硬核排查那些让你怀疑人生的报错其实都有解这套系统最折磨人的不是技术难度而是报错信息和真实原因之间的巨大鸿沟。下面列出我遇到的12个典型问题每个都附带现象、根因、定位命令、解决方案四要素全是血泪经验。5.1 “Failed to load nodelet [/laserMapping] of type [fast_lio/IMULidarOdometry]” —— 不是代码错是ROS节点管理器没起来现象Fast-LIO启动瞬间报错然后进程退出rostopic list看不到/laser_odom。根因ROS nodelet manager未启动Fast-LIO作为nodelet必须依附于manager运行。定位命令rosnode list | grep manager如果无输出说明manager缺失。解决方案在mid360.launch文件中确保有node pkgnodelet typenodelet namemanager argsmanager outputscreen/这一行且它必须在include file$(find fast_lio)/launch/mid360.launch之前启动。很多教程漏了这行直接include导致nodelet找不到manager。5.2 “ESDF update time: 1200ms” —— 别怪算法慢先查GPU是否真在干活现象Ego-planner日志显示ESDF更新耗时超1秒轨迹生成卡顿。根因CUDA未启用或GPU驱动未加载Ego-planner退化为纯CPU计算。定位命令nvidia-smi查看GPU利用率cat /proc/driver/nvidia/params | grep NVreg_EnableGpuFirmware确认固件启用roslaunch ego_planner planner.launch后执行nvidia-smi -q -d MEMORY | grep Used看显存占用。解决方案如果nvidia-smi无输出执行sudo modprobe nvidia如果显存占用为0检查ego-planner/CMakeLists.txt是否添加了CUDA相关配置如果仍有问题执行export CUDA_VISIBLE_DEVICES0强制指定GPU。5.3 “Trajectory jumps at every 2.3 seconds” —— 时间戳错位的幽灵现象规划轨迹每隔2.3秒出现一次剧烈跳变无人机随之抖动。根因Mid360的IMU和激光数据时间戳不同步Fast-LIO预积分误差累积到阈值后触发重置。定位命令rostopic echo /mid360/imu | head -n 20和rostopic echo /mid360/points | head -n 20对比header.stamp.secs字段看是否恒定差2.3秒。解决方案运行rosrun mid360 mid360_sync_check如果sync_jitter_us50μs执行sudo systemctl stop ModemManager它会劫持USB串口然后重启Mid360驱动。5.4 “No transform from [map] to [base_link]” —— TF树断了不是没发布是发布太晚现象Rviz中点云和机器人模型错位报TF错误。根因Fast-LIO的/laser_odom到/base_link的TF发布晚于Rviz的TF监听器启动。定位命令rosrun tf view_frames生成TF树PDF检查map→laser_odom→base_link链路是否完整。解决方案在mid360.launch中给Fast-LIO节点添加param nametf_map_frame_id valuemap /并在node标签内加param nametf_rate value100 /提高TF发布频率。5.5 “Planner fails with ‘no path found’ in open space” —— 不是没路是ESDF没更新现象明明前方空旷Ego-planner却报“no path found”轨迹消失。根因ESDF体素化时空旷区域被误判为未知值为0而非自由空间值0。定位命令rostopic echo /planning/esdf_map看data字段是否全为0。解决方案修改ego-planner/config/planner_manager.yaml将esdf_map_min_x: -5.0改为esdf_map_min_x: -10.0扩大ESDF构建范围确保覆盖无人机前方区域。5.6 其他高频问题速查表问题现象可能原因快速验证命令终极解决方案roslaunch卡在... waiting for service ...ROS master未启动或端口被占ps auxgrep roscorecatkin_make报Could not find a package configuration file依赖包未安装或路径错误rospack find package_namesudo apt install ros-noetic-package_nameMid360点云在Rviz中显示为红色噪点激光强度值异常驱动解析错误rostopic echo /mid360/pointshead -n 5Ego-planner轨迹线颜色异常非绿色Rviz中Trajectory显示插件配置错误Rviz界面右下角Displays→Trajectory→Color将Color设为#00FF00纯绿无人机飞控不响应轨迹MAVROS未启用OFFBOARD模式rostopic echo /mavros/state在飞控启动后执行rosservice call /mavros/set_mode custom_mode: OFFBOARD6. 性能优化与工程化落地让这套系统从实验室走向真实场景跑通demo只是起点真正在无人机上部署还要过三道坎实时性保障、资源约束压缩、鲁棒性加固。这三步不做系统在实验室能飞一到野外就崩溃。6.1 实时性保障把CPU占用从92%压到45%默认配置下Fast-L
返回列表