PrometheusV3配置
1.下载PrometheusV3_DDS代码
安装命令如下,建议一行一行执行,如果有问题,能更好找出是哪一步出现问题
#新开终端将代码下载到Home目录下
#下载源代码,指定PrometheusV3_DDS分支,这是专为XRCE_DDS准备的(PX4 - XRCE_DDS - PrometheusV3)
git clone -b PrometheusV3_DDS https://gitee.com/amovlab/Prometheus.git
2.编译源代码
源代码下载完毕后,需要编译,后面才能程序运行起来
#进入Prometheus目录下
cd Prometheus/
#colcon编译common部分,涉及prometheus_msgs和quadrotor_msgs
colcon build --base-paths Modules/common
#如果出现如下图所示
是因为缺少 pcap 的开发库,可以通过以下命令安装所需的依赖库:
#安装pcap
sudo apt install libpcap-dev
#进入Prometheus目录下
cd Prometheus/
#再colcon编译common部分
colcon build --base-paths Modules/common
#正常情况如下图所示,common部分编译完成
#将Prometheus环境变量加入.bashrc中
echo "source ~/Prometheus/install/setup.bash" >> ~/.bashrc
点击文件夹Home,Ctrl+h 将隐藏的.bashrc文件显示出来,点击打开,正常情况,拉到最下,会显示添加了ROS2,ws_ros2和Prometheus这三个环境变量。如下图所示
注意
.bashrc文件 非常重要,请谨慎操作,不要随便删除,Ctrl+h 将隐藏的.bashrc
继续,打开新终端,自动刷新环境变量,下面还需要编译uav_control部分
#类似的uav_control运行也需要一些组件和依赖编译前安装
#该包是 ROS 2 中常用的诊断工具库
sudo apt install ros-humble-diagnostic-updater
# GeographicLib 是一个地理空间计算库
sudo apt install libgeographic-dev
#进入Prometheus目录下
cd Prometheus/
#colcon编译uav_control部分
colcon build --base-paths Modules/uav_control
#正常编译成功如下图所示
3.检查是否安装正确
安装好后,检查方法就是:启动地面站,PX4仿真,XRCE_DDS连接PX4,启动命令如下
#首先桌面启动QGC地面站
#启动PX4仿真
cd PX4-Autopilot
make px4_sitl gz_x500
#启动DDS连接PX4飞控
MicroXRCEAgent udp4 -p 8888
正常情况如下图所示:
做好上述准备工作之后,就是启动Prometheus控制程序:uav_control
#这条命令就是启动Prometheus控制程序,通过DDS连接PX4飞控获取信息,之后为控制命令发送做准备
ros2 launch prometheus_uav_control uav_control_main_outdoor_launch.py
正常情况如下图所示,程序正常运行会显示,所设置的各个参数值
然后程序尝试通过DDS连接飞控px4,正常情况会连接上PX4飞控获取信息
接着稍等一下,程序设置为从Hold模式自动进入Offboard,然后解锁起飞(这里并不需要使用遥控器,主要考虑是前期重点是command控制部分,暂时不加入遥控器,避免前期复杂化)
无人机会持续悬停,飞行模式Offboard,在command模式下,然后持续显示获取的无人机相关信息,如位置,经纬度,电池等
全过程如视频所示
无人机会一直保持悬停状态,直到用户终止程序“ros2 launch prometheus_uav_control uav_control_main_outdoor_launch.py”,可以Ctrl+c或者直接关闭这个终端
至此PX4,XRCE_DDS,PrometheusV3整个系统联动运行没有问题,通信链路都正 常。接下来就是使用uav_command_pub程序来发送控制指令,控制无人机飞行
警告
由于在最新PX4中会检测是否连接遥控器,如果没有连接遥控器,即使在Position定点模式下也无法解锁,所以要运行上述控制程序,需要保持无人机在Hold模式,默认打开是Hold模式,但是如果改变了,在启动Prometheus控制程序前,请手动在QGC地面站中将飞行模式切换为Hold,然后再启动Prometheus控制程序,如下图所示。
在小节“3.部署PrometheusV3”,中启动了PX4,DDS,PrometheusV3的情况下,
无人机处于command状态,悬停等待命令发送
这时候运行uav_command_pub程序,这个程序的作用就是用来让用户发送控制指令,控制无人机飞行
ros2 launch prometheus_uav_control uav_command_pub_launch.py