如何在Ubuntu 20.04上快速部署PX4-Avoidance?完整安装教程
PX4-Avoidance是一个基于ROS的无人机避障系统,提供了本地规划器、全局规划器和安全着陆规划器三种避障算法,可帮助无人机实现实时障碍物检测与自主避障功能。本教程将详细介绍如何在Ubuntu 20.04系统上快速部署PX4-Avoidance,从环境准备到仿真测试,让你轻松掌握无人机避障系统的搭建方法。
一、准备工作:系统环境与依赖安装
1.1 安装ROS Noetic
PX4-Avoidance需要ROS环境支持,Ubuntu 20.04推荐安装ROS Noetic版本:
# 添加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 install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
# 安装ROS桌面完整版(包含Gazebo模拟器)
sudo apt install ros-noetic-desktop-full
# 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.2 安装基础依赖工具
# 安装ROS构建工具
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# 初始化rosdep
sudo apt install python3-rosdep
sudo rosdep init
rosdep update
# 安装catkin工具
sudo apt install python3-catkin-tools
1.3 安装MAVROS与地理数据集
MAVROS用于无人机与地面站的通信,是PX4与ROS之间的桥梁:
# 安装MAVROS
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
# 安装地理信息数据集
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod +x install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
1.4 安装避障系统依赖
PX4-Avoidance需要点云库和八叉树地图等依赖:
sudo apt install libpcl1 ros-noetic-octomap-*
二、编译PX4-Avoidance源码
2.1 创建工作空间并克隆代码
# 创建catkin工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
# 克隆PX4-Avoidance源码
git clone https://gitcode.com/gh_mirrors/px/PX4-Avoidance
2.2 编译项目
# 编译整个工作空间
catkin build -w ~/catkin_ws
# 设置环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
提示:如果需要发布模式编译(优化性能),可使用命令:
catkin build -w ~/catkin_ws --cmake-args -DCMAKE_BUILD_TYPE=Release
三、配置PX4固件与Gazebo仿真环境
3.1 安装PX4固件
# 克隆PX4固件源码
cd ~
git clone https://github.com/PX4/Firmware.git --recursive
cd ~/Firmware
# 安装PX4依赖
./Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
# 安装Gstreamer插件(用于仿真相机)
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer-plugins-base1.0-dev
3.2 初始化仿真环境
# 编译并运行一次仿真(生成SDF模型文件)
export QT_X11_NO_MITSHM=1
make px4_sitl_default gazebo
# 运行后按Ctrl+C退出
# 设置Gazebo环境变量
echo ". ~/Firmware/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/Firmware ~/Firmware/build/px4_sitl_default" >> ~/.bashrc
echo "export GAZEBO_MODEL_PATH=\${GAZEBO_MODEL_PATH}:~/catkin_ws/src/PX4-Avoidance/avoidance/sim/models:~/catkin_ws/src/PX4-Avoidance/avoidance/sim/worlds" >> ~/.bashrc
echo "export ROS_PACKAGE_PATH=\${ROS_PACKAGE_PATH}:~/Firmware" >> ~/.bashrc
source ~/.bashrc
四、运行避障仿真测试
4.1 本地规划器仿真(推荐)
本地规划器(local_planner)基于3DVFH+算法,计算资源需求低,适合实时避障场景。支持多种传感器配置:
4.1.1 立体相机配置
roslaunch local_planner local_planner_stereo.launch
4.1.2 深度相机配置
roslaunch local_planner local_planner_depth-camera.launch
4.1.3 三相机配置(前、左、右)
roslaunch local_planner local_planner_sitl_3cam.launch
启动后,在新终端中执行以下命令使无人机进入OFFBOARD模式并解锁:
rosrun mavros mavsys mode -c OFFBOARD
rosrun mavros mavsafety arm
无人机将先上升到目标高度,可通过rqt_reconfigure工具调整目标高度参数:
在RViz中点击"2D Nav Goal"按钮设置目标点,无人机将自主规划路径并避障:
4.2 全局规划器仿真
全局规划器(global_planner)基于八叉树地图,可规划全局最优路径,但计算资源需求较高:
roslaunch global_planner global_planner_stereo.launch
启动后会看到无人机在森林环境中,同样通过OFFBOARD模式解锁:
rosrun mavros mavsys mode -c OFFBOARD
rosrun mavros mavsafety arm
无人机将先悬停在3.5米高度,在RViz中设置目标点后,系统会生成避障路径:
五、常见问题解决
5.1 Gazebo中无相机数据
检查相机话题是否发布:
rostopic list | grep camera
若缺少/camera/depth/points话题,需安装Gazebo ROS插件:
sudo apt install ros-noetic-gazebo-ros-pkgs
5.2 无人机不响应目标点
确保无人机已进入OFFBOARD模式并解锁:
# 检查模式
rosrun mavros mavsys mode -c OFFBOARD
# 解锁
rosrun mavros mavsafety arm
5.3 避障路径规划异常
可通过rqt_reconfigure工具调整避障参数:
rosrun rqt_reconfigure rqt_reconfigure
六、项目结构与扩展
PX4-Avoidance项目主要包含三个核心模块:
- 本地规划器:local_planner/ - 实时避障算法,适合资源有限的平台
- 全局规划器:global_planner/ - 基于地图的全局路径规划
- 安全着陆规划器:safe_landing_planner/ - 地形分析与安全着陆点检测
每个模块都提供了配置文件和启动脚本,可根据实际需求修改参数或扩展功能。
总结
通过本教程,你已成功在Ubuntu 20.04上部署了PX4-Avoidance避障系统,并通过Gazebo仿真验证了其功能。该系统支持多种传感器配置和避障算法,可根据实际应用场景选择合适的方案。如需在硬件上运行,还需配置相应的深度相机和飞控参数。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






