一、ROS2安装
Ubuntu18.04的ros2版本:Eloquent 参考网址:https://docs.ros.org/en/eloquent/Installation/Linux-Install-Debians.html
二、PX安装相关环境
首先需要安装PX4的编译环境见(主要是编译和下载最新固件,也可用于软件在环)https://docs.px4.io/master/en/dev_setup/dev_env_linux_ubuntu.html 参考网址:
- FastDDS安装:https://docs.px4.io/master/en/dev_setup/fast-dds-installation.html
- 使用PX4-ROS2桥接器:https://docs.px4.io/master/en/ros/ros2_comm.html
1、安装JavaSDK8
Java SDK8下载网址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载Linux x64 Compressed Archive包 解压软件包/usr/local,即执行下列命令
cd /usr/local tar -zxvf <download_path>/jdk-8u301-linux-x64.tar.gz
然后用户需要配置环境变量~/.bashrc,root用户需要配置/root/.bashrc,我是这两个文件都配置了,在这两个文件中末尾添加如下内容
# Java export JAVA_HOME=/usr/local/jdk1.8.0_301 #jdk安装目录 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH}
测试java安装成功与否
java -version
2、安装Gradle
构建Fast-RTPS-Gen需要安装Gradle,建议通过sdkman来安装Gradle 首先执行以下安装命令sdkman
curl -s "https://get.sdkman.io" | bash
然后重新打开终端执行以下命令
sdk install gradle 7.2
3、源码安装Foonathan memory
为了构建FastDDS我们需要安装foonathan_memory
git clone https://github.com/eProsima/foonathan_memory_vendor.git cd foonathan_memory_vendor mkdir build && cd build cmake .. cmake --build . --target install
**注意:**如果最后一步失败,如果使用失败sudo来安装
4、源码安装Fast DDS
注意FastDDS的版本需要是1.8.2及以上
git clone --recursive https://github.com/eProsima/Fast-DDS.git -b v1.8.2 ~/FastDDS-2.0.0 cd ~/FastDDS-1.8.2 mkdir build && cd build cmake -DTHIRDPARTY=ON -DSECURITY=ON ..
make -j$(nproc --all)
sudo make install
5、源码安装Fast-RTPS-Gen
Fast-RTPS-Gen是Fast RTPS(DDS)的IDL生成工具,必须在FastDDS之后安装。
git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git -b v1.0.4 ~/Fast-RTPS-Gen \
&& cd ~/Fast-RTPS-Gen \
&& ./gradlew assemble \
&& sudo ./gradlew install
注意:如果提示找不到JAVA_HOME的话,我们回到章节2.1配置一下JAVA的环境变量到/root/.bashrc,然后进入root用户下执行安装指令
sudo su
./gradlew install # not insert sudo
三、构建PX4-ROS2桥接器
ROS 2 使用 px4_msgs和 px4_ros_com包以确保匹配的消息定义用于创建客户端和代理代码(这很重要),并且还消除了在构建 ROS 代码时对 PX4 存在的要求。
- px4_msgs包含 PX4 客户端消息定义。构建此项目时,它会生成相应的 ROS 2 兼容 IDL 文件。
- px4_ros_com构建px4_msgs项目,然后使用生成的 IDL 文件创建(和构建)ROS 2 代理。
可以在px4_msgs/msg中找到ROS应用程序可以访问的uORB主题子集
1、安装一些依赖
sudo apt install python3-colcon-common-extensions
sudo apt install ros-foxy-eigen3-cmake-module
sudo pip3 install -U empy pyros-genmsg setuptools
2、构建ROS2PX4工作区
创建工作区目录
mkdir -p /mnt/e/px4_ros_com_ros2/src
克隆px4_ros_com和px4_msgs包在src目录下
cd /mnt/e/px4_ros_com_ros2/src
git clone https://github.com/PX4/px4_ros_com.git
git clone https://github.com/PX4/px4_msgs.git
构建工作区,需要很长时间,耐心等待即可
cd ~/px4_ros_com_ros2/src/px4_ros_com/scripts
source build_ros2_workspace.bash
四、配置PX4及测试
**注意:**此配置需要最新版本的PX4固件,我测试的是2021.9.3的master版本,之前的发行版也还没有rtps的参数配置,需要自己在console中用命令行启动,或者在启动脚本中配置。
1、编译下载最新的固件
需要已经安装完PX4工具链的编译环境,见第二章节中提供的官方文档
cd ~/PX4-Autopilot
make px4_fmu-v5_rtps
make px4_fmu-v5_rtps upload
如果只使用软件在环则使用如下的命令
cd ~/PX4-Autopilot
make px4_fmu-v5_rtps gazebo_typhoon_h480 # 使用typhoon_h480模型
1、通过QGC配置PX4的rtps
将Pixhawk与QGC地面站进行连接,然后在参数设置中找到RTPS项。
然后更改其中的RTPS_CONFIG参数将其在Pixhawk4的TELEM2口输出,如下图所示
更改后重启Pixhawk4,在参数配置中Serial项查看和更改波特率
2、测试
需要USB转串口芯片连接Pixhawk4的TELEM2口(推荐FT232芯片)在电脑终端中执行
micrortps_agent -t UART -d /dev/ttyUSB0 -b 921600
软件在环则不需要硬件连接,直接执行下面命令
micrortps_agent -t UDP
然后另开一个终端执行ros2 topic list即可看到px4的消息主题,如果订阅消息没有输出或遇到问题,注意检查以下几点
- 串口设备和串口波特率配置
- 软件版本,PX4一定是2021年9月3日之前的最新版本。
- 如果连接的是Pixhawk,注意其是否已经初始化成功,否则订阅不到传感器消息。