最近学习用到了ROS和PX4,ROS的安装和使用wiki上写得很详细,而PX4官方的教程则让我这个小白比较困惑,所以写这篇博客记录一下,防止以后自己遗忘,也供小白参考。下面是我参考官方教程安装和运行PX4仿真的步骤,如有错误,还请各位指出,以免误导他人。
安装PX4
- 下载源代码(指定版本1.12.3,最新版本可能会有问题)
git clone -b v1.12.3 https://github.com/PX4/PX4-Autopilot.git --recursive
- 安装依赖
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
以上安装完成后重启
可能需要安装额外的依赖
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
- 编译
cd PX4-Autopilot
make px4_sitl gazebo
编译完成后出现gazebo仿真界面,表示安装成功,然后退出进行下一步
安装MAVROS
二进制安装
sudo apt-get install ros-${ROS_DISTRO}-mavros ros-${ROS_DISTRO}-mavros-extras ros-${ROS_DISTRO}-mavros-msgs
安装GeographicLib
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh
如果提示没有权限,则需要添加执行权限
PX4仿真
- 添加环境变量
在~/.bashrc后添加以下环境变量
source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo
- 启动PX4仿真
roslaunch px4 posix_sitl.launch
- 在新的终端中启动mavros,与仿真的PX4进行通信
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
或者将2、3合成一步
roslaunch px4 mavros_posix_sitl.launch
- 查看mavros和PX4连接情况
rostopic echo /mavros/state
- 运行自己的ROS节点(官方offboard教程)
rosrun offboard_py offb_node.py
硬件运行PX4
硬件运行与软件仿真不同在于PX4的运行和mavros与PX4的通信,将飞控板通过USB连接电脑就运行PX4了,然后在终端运行
roslaunch mavros px4.launch fcu_url:=/dev/ttyACM0:57600
或者
roslaunch mavros px4.launch
就能使电脑上mavros与PX4飞控进行通信
多机仿真
启动多机仿真
roslaunch px4 multi_uav_mavros_sitl.launch
默认有三个无人机,可以修改launch文件修改无人机个数,同时在offboard里面mavros话题和服务要添加uav0/1/2