Ubuntu18.04的ros2版本:Eloquent
参考网址:https://docs.ros.org/en/eloquent/Installation/Linux-Install-Debians.html
首先需要安装PX4的编译环境见(主要是编译和下载最新固件,也可用于软件在环)https://docs.px4.io/master/en/dev_setup/dev_env_linux_ubuntu.html
参考网址:
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
构建Fast-RTPS-Gen需要安装Gradle,建议通过sdkman来安装Gradle
首先执行以下命令安装sdkman
curl -s "https://get.sdkman.io" | bash
然后重新打开一个终端执行以下命令
sdk install gradle 7.2
为了构建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来安装
注意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
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
ROS 2 使用 px4_msgs和 px4_ros_com包以确保匹配的消息定义用于创建客户端和代理代码(这很重要),并且还消除了在构建 ROS 代码时对 PX4 存在的要求。
可以在px4_msgs/msg中找到ROS应用程序可以访问的uORB主题子集
sudo apt install python3-colcon-common-extensions
sudo apt install ros-foxy-eigen3-cmake-module
sudo pip3 install -U empy pyros-genmsg setuptools
创建工作区目录
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固件,我测试的是2021.9.3的master版本,之前的发行版也还没有rtps的参数配置,需要自己在console中用命令行启动,或者在启动脚本中配置。
需要已经安装完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模型
将Pixhawk与QGC地面站进行连接,然后在参数设置中找到RTPS项。
然后更改其中的RTPS_CONFIG参数将其在Pixhawk4的TELEM2口输出,如下图所示
更改后重启Pixhawk4,在参数配置中Serial项查看和更改波特率
需要USB转串口芯片连接Pixhawk4的TELEM2口(推荐FT232芯片)在电脑终端中执行
micrortps_agent -t UART -d /dev/ttyUSB0 -b 921600
软件在环则不需要硬件连接,直接执行下面命令
micrortps_agent -t UDP
然后另开一个终端执行ros2 topic list即可看到px4的消息主题,如果订阅消息没有输出或遇到问题,注意检查以下几点