保姆级教程:在Ubuntu 18.04上从零搭建PX4-Avoidance避障仿真环境(含ROS Melodic和Gazebo)
当第一次接触无人机自主避障仿真时,很多人会被复杂的依赖关系和配置步骤劝退。我曾花了整整三天时间解决各种环境报错,从Planner abort: missing required data到Gazebo黑屏问题。这份教程将带你绕过所有坑点,用最可靠的方式在Ubuntu 18.04上搭建完整的PX4-Avoidance仿真环境。
1. 系统准备与环境检查
在开始之前,请确保你的Ubuntu 18.04系统满足以下基础条件:
- 磁盘空间:至少预留50GB可用空间(Gazebo模型下载会占用大量空间)
- 内存:推荐8GB以上,4GB内存运行Gazebo可能卡顿
- 显卡驱动:必须安装专有驱动(NVIDIA用户需通过
nvidia-smi验证驱动状态)
小技巧:在终端执行lsb_release -a确认系统版本,输出应包含Ubuntu 18.04。如果使用虚拟机,务必启用3D加速功能。
1.1 配置Ubuntu软件源
首先更新软件源并升级现有包:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl gnupg2 lsb-release添加ROS官方仓库密钥:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C6542. ROS Melodic完整安装
PX4-Avoidance强烈依赖ROS Melodic的特定功能包,建议安装完整桌面版:
sudo apt install -y ros-melodic-desktop-full初始化rosdep时,国内用户可能会遇到连接问题。这里有个稳定的解决方案:
sudo rosdep init rosdep update --include-eol-distros将ROS环境变量永久添加到bashrc:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc关键验证步骤:新建终端执行roscore,如果能看到started core service [/rosout]输出,说明ROS安装成功。
3. PX4开发环境配置
3.1 安装PX4工具链
官方推荐使用脚本自动安装依赖:
wget https://raw.githubusercontent.com/PX4/Firmware/master/Tools/setup/ubuntu.sh sudo bash ubuntu.sh --no-nuttx常见问题:如果脚本执行失败,可能是网络问题导致。可以尝试分段安装:
sudo apt install -y python-argparse git-core wget zip \ python-empy qtcreator cmake build-essential genromfs3.2 下载PX4固件
建议使用特定版本以保证兼容性:
cd ~ git clone https://github.com/PX4/Firmware.git --branch v1.12.3 cd Firmware make px4_sitl_default gazebo首次编译会下载Gazebo模型,可能需要较长时间。可以通过export GZ_SIM_RESOURCE_PATH=~/.gazebo/models指定模型下载路径。
4. 避障功能包专项配置
4.1 创建工作空间
建议为避障功能单独创建工作空间:
mkdir -p ~/avoidance_ws/src cd ~/avoidance_ws/src catkin_init_workspace克隆Avoidance仓库到工作空间:
git clone https://github.com/PX4/avoidance.git cd .. catkin_make -j$(nproc)4.2 环境变量关键配置
编辑~/.bashrc文件,在末尾添加以下内容:
# PX4-Avoidance环境配置 source ~/avoidance_ws/devel/setup.bash source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware ~/Firmware/build/px4_sitl_default export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware/Tools/sitl_gazebo export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:~/avoidance_ws/src/avoidance/avoidance/sim/models执行source ~/.bashrc使配置生效。验证环境变量是否正确:
echo $GAZEBO_MODEL_PATH | grep "avoidance"5. 避障仿真实战测试
5.1 修改launch文件
编辑避障启动文件以避免常见错误:
gedit ~/avoidance_ws/src/avoidance/avoidance/launch/avoidance_sitl_mavros.launch找到以下参数并修改:
<arg name="gui" default="true"/> <arg name="world" default="$(find avoidance)/sim/worlds/single_sphere.world"/>5.2 启动避障仿真
推荐使用3相机配置启动,兼容性最好:
roslaunch local_planner local_planner_sitl_3cam.launch如果遇到Planner abort: missing required data错误,尝试以下解决方案:
- 检查Gazebo是否正常加载了无人机模型
- 确认
~/.bashrc中所有路径配置正确 - 重新编译工作空间:
catkin_make -j$(nproc)
5.3 控制无人机飞行
在新终端中依次执行:
# 切换到OFFBOARD模式 rosrun mavros mavsys mode -c OFFBOARD # 解锁电机 rosrun mavros mavsafety arm在RViz中使用2D Nav Goal指定目标点,无人机将自动规划路径并避开障碍物。通过rqt_reconfigure可以实时调整飞行参数:
rosrun rqt_reconfigure rqt_reconfigure6. 高级调试与优化技巧
6.1 Gazebo性能优化
如果Gazebo运行卡顿,可以尝试以下方法:
# 降低渲染质量 gedit ~/.gazebo/gui.ini找到[rendering]部分,修改为:
fps=30 texture=low6.2 避障算法参数调整
局部规划器参数存放在~/avoidance_ws/src/avoidance/local_planner/cfg/params.cfg中,重要参数包括:
| 参数名 | 默认值 | 说明 |
|---|---|---|
| max_speed | 3.0 | 最大飞行速度(m/s) |
| safety_distance | 0.5 | 最小障碍物距离(m) |
| goal_acceptance_radius | 0.3 | 目标点容差半径(m) |
6.3 常见问题解决方案
Gazebo黑屏问题:
export LIBGL_ALWAYS_SOFTWARE=1 roslaunch local_planner local_planner_sitl_3cam.launchMAVROS连接超时: 检查~/.bashrc中的PX4_HOME_LAT和PX4_HOME_LON是否设置为有效GPS坐标
点云显示异常: 在RViz中检查Fixed Frame是否设置为map,并确认local_pointcloud话题已订阅