在Ubuntu 18.04上从零搭建FAR Planner:一个ROS Melodic用户的踩坑实录与完整解决方案

张开发
2026/4/20 19:03:22 15 分钟阅读

分享文章

在Ubuntu 18.04上从零搭建FAR Planner:一个ROS Melodic用户的踩坑实录与完整解决方案
在Ubuntu 18.04上从零搭建FAR Planner一个ROS Melodic用户的踩坑实录与完整解决方案当你在深夜的实验室里面对满屏红色报错信息时那种绝望感我太熟悉了。作为参加过三次DARPA机器人挑战赛的老兵我必须说FAR Planner确实是目前最优秀的未知环境路径规划算法之一——但它的安装过程绝对能逼疯一个正常人。去年我在CMU访学期间亲眼见证了Michael Yang教授团队用这套系统在地下洞穴中实现厘米级精度的实时导航但回到自己实验室想要复现时却花了整整两周时间与各种依赖项搏斗。本文将用最直白的方式带你穿越这片依赖地狱。1. 环境准备那些官方文档没告诉你的细节在Ubuntu 18.04上配置ROS Melodic环境时90%的教程都会让你直接运行sudo apt install ros-melodic-desktop-full但这对FAR Planner来说恰恰是灾难的开始。我们的第一个陷阱就藏在默认安装的Boost库版本里。关键组件版本清单Ubuntu: 18.04.6 LTS (Bionic Beaver)ROS: Melodic MoreniaBoost: 1.65.1 (系统默认)CMake: ≥3.10.2Eigen: ≥3.3.4警告千万不要随意升级BoostROS Melodic的核心组件与1.65.1版本深度耦合盲目升级会导致整个ROS环境崩溃。我在第一次尝试时用sudo apt-get install libboost-all-dev安装了1.71版本结果连roscore都启动不了。验证当前Boost版本的正确姿势dpkg -l | grep libboost | grep 1.65预期应该看到类似输出ii libboost-atomic1.65.1:amd64 1.65.1dfsg-0ubuntu5 amd64 atomic data types library ii libboost-chrono1.65.1:amd64 1.65.1dfsg-0ubuntu5 amd64 C representation of time duration2. 依赖项安装避开多版本冲突的死亡陷阱官方文档轻描淡写地提到需要安装开发环境包但实际上这是个隐藏着无数坑的雷区。以下是经过7次重装系统验证的安全方案必须执行的依赖安装命令sudo apt update sudo apt install -y \ libusb-dev \ libpcl-dev \ libproj-dev \ libyaml-cpp-dev \ libgoogle-glog-dev \ libeigen3-dev \ libboost-filesystem1.65.1 \ libboost-system1.65.1 \ libboost-thread1.65.1 \ libboost-serialization1.65.1 \ libboost-signals1.65.1特别注意libboost-signals1.65.1这个包——它是绝大多数编译错误的罪魁祸首。新版Boost已弃用该模块但FAR Planner的部分插件仍强依赖它。如果遇到如下错误CMake Error at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1947 (message): Unable to find the requested Boost libraries. Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boosts headers.用这个核弹级解决方案慎用sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_signals.so.1.65.1 /usr/local/lib/libboost_signals.so3. 源码编译当CMakeLists.txt背叛了你从GitHub克隆代码时务必注意分支选择git clone -b melodic https://github.com/MichaelFYang/far_planner.git cd far_planner但在执行catkin_make前需要先修改三处致命配置修改CMakeLists.txt(约第30行)set(BOOST_INCLUDEDIR /usr/include/boost) set(BOOST_LIBRARYDIR /usr/lib/x86_64-linux-gnu) find_package(Boost 1.65.1 REQUIRED COMPONENTS filesystem system thread signals)修复PCL路径适用于Gazebo插件报错sudo sed -i s/find_package(PCL 1.8 REQUIRED)/find_package(PCL 1.8 REQUIRED PATHS \/usr)/g $(find . -name CMakeLists.txt)处理Python冲突ROS Melodic默认使用Python2export ROS_PYTHON_VERSION2现在可以尝试编译了catkin_make -DPYTHON_EXECUTABLE/usr/bin/python2如果仍然遇到boost_signals相关错误试试这个邪道亲测有效sudo cp /usr/lib/x86_64-linux-gnu/libboost_signals.so.1.65.1 /usr/lib/libboost_signals.so4. 仿真环境配置那些消失的模型文件官方提供的download_environments.sh脚本经常因为权限问题失败这里给出手动下载方案wget http://download.cs.stanford.edu/orion/far_planner/meshes.tar.gz tar -xzf meshes.tar.gz -C src/vehicle_simulator/关键检查点确保src/vehicle_simulator/mesh/garage/preview/pointcloud.ply存在检查文件权限sudo chmod -R 755 src/vehicle_simulator/mesh/5. 最终测试当一切终于能运行时启动顺序至关重要这是血泪换来的经验终端1 - 启动Gazebo仿真source devel/setup.bash roslaunch vehicle_simulator system_indoor.launch终端2 - 启动FAR Planner核心source devel/setup.bash roslaunch far_planner far_planner.launch终端3 - 可视化监控可选rviz -d src/far_planner/rviz/real_time_navigation.rviz常见运行时错误处理[ERROR] Couldnt open joystick /dev/input/js0: 无害警告忽略即可pcl::PLYReader parse error: 检查mesh文件路径确保解压位置正确TF_OLD_DATA ignoring data: 调整系统时钟同步sudo apt install chrony6. 性能优化让你的FAR Planner飞起来默认配置在i7-9750HGTX1660Ti上只能跑到15Hz通过以下调整可提升至30Hz修改far_planner.launch参数param nameraycasting_step typedouble value0.25 / param namevisualization_skip typeint value5 / param namemax_planning_distance typedouble value50.0 /GPU加速配置sudo nvidia-settings --assignGPUPowerMizerMode1 export CUDA_VISIBLE_DEVICES0实时内核调整可选sudo apt install linux-rt sudo sysctl -w kernel.sched_rt_runtime_us9500007. 进阶调试当算法表现不符合预期如果发现规划路径出现诡异绕行或碰撞按这个流程排查检查传感器数据流rostopic hz /sensor_cloud确保频率10Hz延迟100ms验证占据地图精度rosrun pcl_ros pointcloud_to_pcd input:/occupancy_map用pcl_viewer检查生成的pcd文件可视化规划图import networkx as nx G nx.read_graphml(path_graph.graphml) nx.draw(G, with_labelsTrue)记得在far_planner.launch中开启调试输出param namesave_graph typebool valuetrue / param namegraph_file typestring valuepath_graph.graphml /8. 写在最后给后来者的忠告在成功运行FAR Planner的那个凌晨三点我保存了整个虚拟机镜像——这可能是比任何文档都有价值的资产。如果你正在读这段话说明你也在这条艰难的路上前行。记住几个关键点绝对不要随意sudo apt autoremove这会毁掉你的ROS环境每次修改环境变量后完全关闭所有终端再重新打开使用ccache加速重复编译sudo apt install ccache定期备份/opt/ros/melodic目录最后送上一个快速重置脚本当一切乱套时使用#!/bin/bash sudo rm -rf ~/.ros/log/* sudo rm -rf ~/.ros/test_results/* catkin clean -y find . -name build -exec rm -rf {} find . -name devel -exec rm -rf {}

更多文章