配置使用ROS版本为Neotic
1 配置
1.1 加载固定翼无人机编队跟踪控制工程文件
cp -r ~/XTDrone/coordination/fixed_wing_formation_control ~/catkin_ws/src
1.2 加载一些用到的功能包
sudo apt-get install ros-noetic-serial #根据自己的ROS版本修改
sudo apt-get install libpcap-dev
sudo apt-get install ros-noetic-velocity-controllers
sudo apt-get install ros-noetic-gazebo-msgs
1.3 安装一些必要的依赖
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs ~/catkin_ws/src #若已在基础配置中完成则忽略此步骤
cp -r ~/XTDrone/sitl_config/ugv/* ~/catkin_ws/src
cp -r ~/XTDrone/sitl_config/gazebo_plugin/velodyne ~/catkin_ws/src
1.4 将launch文件装入PX4的launch文件夹中
cd ~/catkin_ws/src/fixed_wing_formation_control/launchfile
cp fixed_wing_formation_control.launch ~/PX4_Firmware/launch
1.5 在/catkin_ws/devel/include下创建一个功能包fixed_wing_formation_control,并将/catkin_ws/src/fixed_wing_formation_control/headerfile中的头文件拷贝到创建的fixed_wing_formation_control中。
mkdir -p ~/catkin_ws/devel/include/fixed_wing_formation_control
cd ~/catkin_ws/src/fixed_wing_formation_control/headerfile
cp Formation_control_states.h FWcmd.h Fw_cmd_mode.h Fw_current_mode.h Fwmonitor.h FWstates.h Leaderstates.h ~/catkin_ws/devel/include/fixed_wing_formation_control
备注:一定要先执行这个一步之后再编译,否则会出现如下报错:
1.6 编译
cd ~/catkin_ws
catkin build
编译的过程中可能会出现如下报错:
错因分析:task_main.cpp文件中的参数“airspeed“与Leaderstates. msg文件中的参数名不同。
解决方法:
a.打开Leaderstates. msg文件,检查参数名是否为:air_speed,如下图所示。
b.打开task_main.cpp文件,将173行的代码中的airspeed修改为air_speed,然后保存,如下面两张图所示。
c.修改完成后再次编译
cd ~/catkin_ws
catkin build
出现下图所示的情况,则说明编译成功。
2 启动仿真
2.1 借助bash文件一键启动
cd ~/catkin_ws/src/fixed_wing_formation_control/scripts/
bash multi_uav_sim_ba_3vtol.sh
这个过程中可能出现如下报错:
2.1.1 报错1:
错因分析:
这个问题是由于ROS在Noetic版本中xacro包的路径有所变化导致的。launch文件中尝试使用xacro来生成URDF时,指定的路径不正确。Noetic版本中,xacro命令行工具的路径应该是/opt/ros/noetic/lib/xacro/xacro
。
也就是说ROS neotic中/opt/ros/noetic/share/xacro下没有xacro.py
而是在opt/ros/noetic/lib/xacro/xacro中,如下两张图所示。
解决方法:
打开fixed_wing_formation_control.launch,将其中的xacro.py中的.py去掉后并保存,具体修改位置如下两图所示。文件路径:/home/ray/PX4_Firmware/launch
2.1.2 报错2
错因分析:#!/usr/bin/env python用的是pyhton2,而neotic用的是python3。
解决办法:将/home/ray/catkin_ws/src/catvehicle/src下的所有py文件中的#!/usr/bin/env python修改为#!/usr/bin/env python3并保存即可。如下列几张图所示。
2.1.3 报错3:
错因分析及解决方法:说明gazebo进程已经被占用,需要输入如下两条命令关闭之前的gazebo进程。
killall gzserver
killall gzclient
2.1.4 再次启动仿真:
cd ~/catkin_ws/src/fixed_wing_formation_control/scripts/
bash multi_uav_sim_ba_3vtol.sh
正常启动后的效果如下图所示:
2.2 启动QGC地面站
进入你的QGC地面站的安装位置,然后在该文件在中打开终端,输入以下命令即可打开地面站。
./QGroundControl.AppImage
正常打开后的界面如下:
至此,配置结束,剩下的教程可参考官方教程。
备注:我打开地面站之后,GPS显示的是Disabled,所以导致无法解锁,因此飞机不能起飞。目前这个问题还没有解决,后续解决后会及时更新,如果有会的大佬可以私信交流。
参考:固定翼无人机编队跟踪无人车 · 语雀