ROS2+PX4开发环境配置

一、ROS2安装

Ubuntu18.04的ros2版本:Eloquent
参考网址:https://docs.ros.org/en/eloquent/Installation/Linux-Install-Debians.html

二、PX4相关环境安装

首先需要安装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桥接器

ROS2+PX4开发环境配置_第1张图片

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项。
ROS2+PX4开发环境配置_第2张图片

然后更改其中的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,注意其是否已经初始化成功,否则订阅不到传感器消息。

你可能感兴趣的:(自动驾驶,人工智能,机器学习)