ROS2+PX4开发环境配置

2023-05-16

一、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桥接器

在这里插入图片描述

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,注意其是否已经初始化成功,否则订阅不到传感器消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS2+PX4开发环境配置 的相关文章

  • (五)GPIO标准接口函数

    目录 一 什么是GPIO的标准接口函数二 GPIO标准接口函数三 GPIO口号四 出错的解决方法 xff1a 五 编译内核出错 一 什么是GPIO的标准接口函数 前面访问GPIO的方法 xff1a request mem region 申请
  • Ubuntu20.04安装Navigation功能包

    Ubuntu20 04安装Navigation功能包 1 在用户目录下 xff08 xff09 创建工作空间目录 xff1a nevigation ws src xff1b cd mkdir p nevigation src 2 进入到 n
  • 麻将胡牌算法 极速(速度接近理论极限)

    此麻将胡牌算法优点 xff1a 1 可处理多赖子牌 xff08 万能牌 xff09 2 算法速度极快 xff1a 1ms可大约计算1W 43 副手牌是否可胡 xff08 带赖子 0 08us左右 xff09 xff0c 不带赖子的牌型更快
  • C语言中的输入输出流和缓冲区(重点)详解

    导读 xff1a C语言中我们用到的最频繁的输入输出方式就是scanf 与printf scanf xff1a 从标准输入设备 键盘 读取数据 xff0c 并将值存放在变量中 printf xff1a 将指定的文字 字符串输出到标准输出设备
  • pipenv的基本使用

    1 虚拟环境 虚拟环境是用于依赖项管理和项目隔离的python工具 xff0c 它可以将python程序和pip包管理工具安装在本地的隔离目录中 xff08 非全局安装 xff09 在实际开发中 xff0c 不同项目可能需要的python版
  • 多线程、多进程守护工具

    span class token keyword import span os span class token keyword import span sys span class token keyword import span ti
  • sqlalchemy case when分组查询统计

    1 需求 根据过滤条件将设备按升级状态分组 xff0c 统计总数和各个状态的数量 2 原始数据 3 原生sql语句 span class token keyword select span span class token function
  • 一致性哈希算法

    1 各位看官老爷 xff0c 请移步大佬博客 https www zsythink net archives 1182 2 goalng的脚本测试详见 https xie infoq cn article 78043810ecc807d18
  • git重命名远程分支名称

    例如 xff0c 已经在远程分支的master创建了一个名为feature add device的分支 xff0c 现在想将其更名为hotfix add device 1 重命名远程分支对应的本地分支 span class token fu
  • golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)

    要求 密码中允许出现数字 大写字母 小写字母 特殊字符 xff08 64 amp xff09 xff0c 但至少包含其中2种且长度在8 16之间 xff08 四种符号任意满足三种即可 xff09 span class token keywo
  • golang生成分组树状结构

    1 需求 获取分组导航树 2 实现 span class token keyword package span main span class token keyword import span span class token punct
  • 蓝桥杯快速通关篇,pwm方波输出

    pwm方波输出 文章目录 pwm方波输出前言pwm是什么蓝桥桥杯是怎么考pwm输出的具体步骤官方库中的标准例程 修改代码时钟和GPIO输出频率的初始化不同占空比的pwm波输出验证程序是否工作 总结 xff08 重要 xff09 调用 xff
  • python实现文件断点下载

    1 需求 实现文件的断点下载 2 实现 xff1a span class token comment usr bin python span span class token comment encoding 61 utf 8 span s
  • shell脚本移动文件

    需求 移动 iotdata data edge ota file store 下的所有文件到 iotdata data edge download ota目录下 并删除旧目录 shell命令 span class token functio
  • golang字符串列表操作(求包含、交集、并集、差集)

    span class token keyword func span span class token function ContainsString span span class token punctuation span src s
  • golang获取postgres或clickhouse连接

    span class token keyword package span edgedb span class token keyword import span span class token punctuation span span
  • grpc-gateway插件:让客户端通过调http接口来远程调用grpc服务

    背景 xff1a 公司内部各服务 java pyhton go 想调取中台数据中心数据 xff0c 中台有两种服务搭建选择 xff1a 1 REST http请求 2 RPC 远程过程调用 实现及遇到的坑 使用Go将HTTP JSON转编码
  • ubuntu安装和卸载python3.8

    背景 xff1a 工作中 xff0c 可能会分配虚拟机给到开发者 xff0c 开发者需要在上面调试 xff0c 开发 xff0c 打包等操作 xff0c 依赖python环境 操作 网上安装步骤很多 xff0c 但很多文章描述的不够清晰 x
  • golang单例模式加载服务配置

    golang中单例模式体现在很多地方 xff0c 比如init函数 xff0c 当包被导入的时候只会被执行一次 实现单例模式有很多种方式 xff0c 这里给出几种简单的实现 xff1a 互斥锁 对全局共享变量加锁 xff0c 如果该变量不是
  • go面试题

    1 json包在使用的时候 xff0c 结构体里的变量不加tag能不能正常转成json里的字段 xff1f 如果变量首字母小写 xff0c 则为private 无论如何不能转 xff0c 因为取不到反射信息 如果变量首字母大写 xff0c

随机推荐

  • golang windows弹窗功能实现

    代码示例 span class token keyword package span main span class token keyword import span span class token punctuation span s
  • golang获取windows系统有线活跃网卡及IP配置

    代码 span class token keyword package span network span class token keyword import span span class token punctuation span
  • !!!Chapter 2 The Physical Layer

    2 1 The Theoretical Basis for Data Communication Fourier Analysis Any reasonably behaved periodic function g t with peri
  • 启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)

    背景 xff1a go代码启动以后里面涉及到修改ip地址等操作 xff0c 需要管理员权限 打包好的exe文件双击执行默认是没有管理员权限的 xff0c 那么修改ip就会提示需要管理员权限 解决方法1 xff1a 右键以管理员权限运行exe
  • k8s外部访问pod内部容器的端口-NodePort

    一 如何从外部网络访问 Kubernetes的Pod IP和Cluster IP都只能在集群内部访问 xff0c 而我们通常需要从外部网络上访问集群中的某些服务 xff0c Kubernetes提供了下述几种方式来为集群提供外部流量入口 二
  • python断点下载文件

    使用pytohn编码实现文件的断点下载 span class token keyword import span os span class token keyword import span json span class token k
  • 异常检测(1)—初识异常检测

    1 概念 异常一般是指与标准值 xff08 预期值 xff09 有偏离的样本点 xff0c 也就是跟绝大部分数据 长的不一样 异常往往是 有价值 的事情 xff0c 我们对异常的成因感兴趣 2 类别 有监督 xff1a 数据集有标签无监督
  • 【git】在GitHub上下载历史版本

    GitHub上的项目很多都是从简单到复杂 xff0c 一点点迭代的 当我们需要看懂别人的代码时 xff0c 按照别人commit的历史版本一步一步跟踪 xff0c 或许是个好办法 这时候我们就要用到下载历史版本功能了 1 git clone
  • 实时操作系统UCOS学习笔记1----UCOSII简介

    前面我们所有的实验都是跑的裸机程序 xff08 裸奔 xff09 xff0c 从本章开始 xff0c 我们开始介绍UCOSII xff08 实时多任务操作系统内核 xff09 UCOSII简介 UCOSII的前身是UCOS xff0c 最早
  • 欢聚时代YY/测试实习面试

    去到YY大楼 xff0c 虽然在番禺但是附近很多楼在施工中了 大楼就在万达后面 前台登记 xff0c 小姐姐会让你出示邀请邮件 xff0c 然后直接上去就行了 达到楼层 xff0c 二维码签到 然后找地方坐一下等待面试 一轮是技术面 xff
  • 基于卡尔曼滤波的气压计高度解算

    ax ay az为归一化的加速度数据 1代表重力加速度 gx gy gz 为加速度数据 单位rad s altitude为气压计测量得到的海拔数据 欧拉角 float pitch roll yaw 世界坐标系下机体加速度 float ax
  • Kali安装Xfce4

    Kali安装Xface4 一 配置kali源并更新二 解决报错1 签名无效2 依赖报错 三 安装xfce4 一 配置kali源并更新 此处使用的是gedit编辑器 xff0c gedit etc apt sources list xff0c
  • 串口转WIFI的工作方式理解

    串口无线 AP xff08 COM AP xff09 串口无线 STA xff08 COM STA xff09 和 串口无线 AP 43 STA xff08 COM AP 43 STA xff09 3 个模式 串口WIFI模块是基于Uart
  • 典型环节的频率特性(建议收藏)

    自控笔记 5 3典型环节频率特性 控制系统种类繁多 xff0c 传递函数复杂 xff0c 但任何形式的传递函数都是由有限的典型环节组成 因此 xff0c 掌握典型环节的频率特性是使用频域法分析系统的基础 如下表所示 xff0c 构成系统的最
  • 【WINAPI】CreateSemaphore_信号量

    WINAPI CreateSemaphore 信号量 1 注册信号量函数1 1 参数1 2 返回值 2 释放信号量函数2 1 参数2 2 返回值 3 WaitForSingleObject3 2 参数3 3 返回值 4 例子4 1 运行结果
  • MAVROS二次开发(一)MAVROS的安装

    MAVROS二次开发 一 MAVROS的安装 1 参考网址 https dev px4 io v1 10 en ros mavros installation html https github com mavlink mavros tre
  • MAVROS二次开发(二)(三)添加自定义消息

    MAVROS二次开发 二 MAVROS消息添加 1 自定义rostopic消息 路径 xff1a catkin ws src mavros mavros msgs msg 自定义消息文件名称 xff1a CrawlControlStatus
  • MAVROS二次开发(四)添加消息处理插件

    MAVROS二次开发 四 添加消息处理插件 mavros插件所在路径 xff1a catkin ws src mavros mavros src plugins 1 自定义消息处理插件的编写 参考代码 xff1a catkin ws src
  • MAVROS二次开发(五)进行测试

    MAVROS二次开发 五 进行测试 1 测试环境 PX4 xff1a v1 10 1 xff08 含自定义mavlink消息收发 xff09 ROS xff1a KineticUbuntu xff1a 16 04LTSQGC xff1a S
  • ROS2+PX4开发环境配置

    一 ROS2安装 Ubuntu18 04的ros2版本 xff1a Eloquent 参考网址 xff1a https docs ros org en eloquent Installation Linux Install Debians