一、背景
笔记脱胎于官网文档,讲解较为清楚。存在部分坑,写下来给自己之后使用提供便利
ROS 2-PX4架构提供了ROS 2和PX4之间的深度集成,允许ROS 2订阅者或发布者节点直接与PX4 uORB主题接口。
使用ROS 2-PX4可以方便完成应用程序开发。所以对无人机控制方向的学习很有必要。
本文为2023年7月,PX4版本为v1.14,对于低版本可跳转到官网切换版本。
从PX4 v1.14开始,ROS 2使用uXRCE-DDS中间件,取代了1.13版本中使用的FastRTPS中间件(v1.13不支持uXRCE-DDS)。
二、安装
1、安装版本
Ubuntu | 20.04 |
ROS 2 | Foxy |
PX4 | v1.14 |
2、安装流程
(1)安装PX4
官网给的教程很简单,几行代码即可。但是实际操作问题很多,网络问题为最大问题。
解决网络问题后会很简单
cd
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
#下载px4源码,注意--recursive,起到作用是把所有代码都下载下来,编译的时候不会出现依赖缺失
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
cd PX4-Autopilot/
make px4_sitl
#编译px4代码,时间比较久也可能会出错
#编译过程出错绝大部分是因为在git 下载的时候没有把代码下载完全出现错误
#我安装了很多次,发现只要下载的内容都有一般不会出错。
(2)安装ROS 2
此处推荐小鱼的一键安装ROS2
根据提示安装ROS2 Foxy版本即可
wget http://fishros.com/install -O fishros && . fishros
(3)设置Micro XRCE-DDS代理和客户端
为了使ROS 2与PX4通信,uXRCE-DDS客户端必须在PX4上运行,并连接到在配套计算机上运行的微型XRCE-DDS代理。
所以需要安装DDS代理以及客户端
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
使用连接到模拟器上运行的uXRCE-DDS客户端的设置启动代理:
MicroXRCEAgent udp4 -p 8888
(4)构建并运行ROS 2工作区
构建工作区
若要创建和生成工作区,请执行以下操作:
-
打开一个新终端。
-
使用以下方法创建并导航到新的工作区目录:
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
3. 克隆示例存储库和px4_msgs 到目录(分支默认克隆,对应我们运行的PX4版本):
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
4、将 ROS 2 开发环境源到当前终端中,并使用以下命令编译工作区:
cd ..
source /opt/ros/foxy/setup.bash
colcon build
运行示例
1.导航到工作区目录的顶层并获取 ROS 2 环境
cd ~/ws_sensor_combined/
source /opt/ros/foxy/setup.bash
2.更新源
source install/local_setup.bash
3.启动示例
ros2 launch px4_ros_com sensor_combined_listener.launch.py
如果这有效,您应该看到在启动 ROS 侦听器的终端/控制台上打印的数据:
RECEIVED DATA FROM SENSOR COMBINED
================================
ts: 870938190
gyro_rad[0]: 0.00341645
gyro_rad[1]: 0.00626475
gyro_rad[2]: -0.000515705
gyro_integral_dt: 4739
accelerometer_timestamp_relative: 0
accelerometer_m_s2[0]: -0.273381
accelerometer_m_s2[1]: 0.0949186
accelerometer_m_s2[2]: -9.76044
accelerometer_integral_dt: 4739
至此安装完成,下一步编写代码控制无人机运动+接受无人机信息