PX4 与 MAVROS 实现offboard

2023-05-16

目录

一、虚拟机仿真环境

1. 创建工作空间        

2. 创建ROS节点功能包

3. 运行PX4的gazebo仿真

4. 启动PX4与Mavros之间的连接

二、真机控制

1.硬件连接

2.软件设置

3.出现问题


Ubuntu:20.04 ,已安装ROS、MAVROS、PX4,gazebo

机载电脑:jetson nano,已安装ROS、MAVROS

以上软件安装过程不再赘述,网络上都有安装教程。

一、虚拟机仿真环境

1.创建工作空间        

          新建文件夹,并将该文件夹变成工作空间(即catkin_ws 空间

         1)创建源码文件夹(src文件夹

mkdir   -p   ~/catkin_ws/src

cd    ~/catkin_ws/src

catkin_init_workspace  // 初始化文件属性,使之成为源代码文件夹,是在src 文件夹使用该命令

       2)编译工作空间文件夹(catkin_ws文件夹

             回到src文件的上层文件夹进行工作空间编译

cd   ~/catkin_ws  

catkin_make                 //编译工作空间,是在catkin_ws文件夹使用该命令

source devel/setup.bash     //将工作空间的信息添加到环境变量,方便系统寻找

2. 创建ROS节点功能包

        1)在catkin_ws/src目录中(源码文件夹),创建功能包  offboard_pkg,运行命令:

cd src

catkin_create_pkg offboard_pkg  roscpp  std_msgs   geometry_msgs   mavros_msgs

        2)添加功能包的源码文件(C++/Python编写)

                在创建的功能包文件夹(offboard_pkg)的源码文件夹(src文件夹),

             即定位到目录~/catkin_ws/src/offboard_pkg/src/,新建一个文件offboard_node.cpp

                打开官方MAVROS Offboard control example链接,然后复制进去

        3)修改CMakeLists.txt,以编译源码文件

          打开目录~/catkin_ws/src/offboard_pkg/下的CMakeLists.txt   添加下面的两行

                add_executable(offboard_node   src/offboard_node.cpp)

                target_link_libraries( offboard_node ${catkin_LIBRARIES})

        4)进行功能包的编译

                然后到目录~/catkin_ws下,运行命令:

catkin_make   #编译功能包

3.    运行PX4的gazebo仿真

        1)如果你要在gazebo中仿真,打开PX4的固件文件夹(PX4-Auopilot),打开终端运行命令

make  px4_sitl  gazebo_iris   //打开模拟环境  

        2)打开QGroundControl,在地面站上进行观察是否连接上gazebo的无人机,连接则表示正常打开

4.  启动PX4Mavros之间的连接

        1) 在终端下运行命令(新开一个终端):

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

        2)启动PX4Mavros之间的连接之后,在节点功能包所在的catkin_ws目录下运行命令

rosrun offboard_pkg offboard_node,

                          然后进入gazebo中进行观察。

       若要在任意终端运行节点命令要在终端窗口source一下工作空间的setup.bash 文件,比如我的就是

  source amov_ros/devel/setup.bash   #amov_ros 是我的工作空间

二、真机控制

1.硬件连接

使用飞控的TELEM2和机载电脑的USB

由于飞控TELEM2是串口,所以要使用TTLUSB模块连接

2.软件设置

1)配置Pixhawk上的Telem2作为MAVLINK端口

        MAV_1_CONFIG = TELEM 2

        MAV_1_MODE = Onboard    

        SER_TEL2_BAUD = 921600 8N1    // 这里我设置成230400 8N1

一开始参数里可能只有MAV_1_CONFIG,搜不到其他的参数,只需要先把MAV_1_CONFIG设置为TELEM2,然后把飞控重启后就有了。

2)在机载电脑上启动MAVROS和PX4的连接

roslaunch  mavros px4.launch fcu_url:=/dev/ttyUSB0:230400

        我这里用的是jetson nanoUSB,所以就是dev/ttyUSB0,这个按照自己实际情况写就好了。最后的230400是波特率,就是1)中设置的SER_TEL2_BAUD,改成设置的值就行了。(如果用的是串口的话,应该是dev/ttyTSH**代表序号)

        USB0是指插入的顺序是第一个,所以是USB0,如果是第二个插入机载电脑,则是USB1,系统根据插入顺序分配端口。

3.出现问题

1)报错权限问题

                                 “FCU: DeviceError:serial:open: Permission denied”

解决方法是给对应的串口权限或者USB口权限

sudo chmod 777 /dev/ttyTHS1   #这是参考别的文章出现的问题,这里作为参考

        虽然这样子mavros就正常运行了,但是节点信息会卡在xxxxxx start xxxxxxx,然后/mavros/state中的connected是false。这个问题卡了我一天,后来我把波特率往下降到460800以下就能正常使用了(有大佬指出是因为数据线太长,导致传输过程中到达不了那么高的波特率,所以不能成功连接,还有个可能是芯片原因,如果用CH340芯片,则最大波特率是115200)。

2)报错timesync的异常:RTT too high for timesync: 19.32 ms.

        解决方法是:

sudo gedit /opt/ros/melodic/share/mavros/launch/px4_config.yaml

        把文件中的第12行改为

timesync_rate: 0.0

3)不带参数的连接命令

        编辑飞控连接  px4.launch文件的命令行是

sudo gedit  /opt/ros/melodic/share/mavros/launch /px4.launch

 然后更改默认的连接端口,即

<arg name="fcu_url" default="/dev/ttyACM0:57600" />

修改成

<arg name="fcu_url" default="/dev/ttyUSB0:230400" />

最后开启时候,直接运行

        roslaunch  mavros  px4.launch

即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4 与 MAVROS 实现offboard 的相关文章

  • px4: v2的主板刷写v2的固件

    v2的主板刷写v2的固件 fengxuewei 64 fengxuewei Legion Y7000 2019 PG0 src Firmware changwei rc span class token function make span
  • 飞行机器人(七)仿真平台XTDrone + PX4编译

    0 编译PX4固件 参考仿真平台基础配置教程 xff08 中文详细教程 xff09 仿真平台基础配置 语雀 yuque com https www yuque com xtdrone manual cn basic config 按照教程
  • px4 avoidance笔记

    最近在用px4官方的avoidance代码跑硬件避障 xff0c 官方介绍了只要生成符合sensor msgs PointCloud2点云信息就能使用 xff0c 因此为了应用长基线双目 xff0c 没有使用realsense的相机 xff
  • PX4飞控之PWM输出控制

    PX4飞控之PWM输出控制 多旋翼电调如好盈XRotor xff0c DJI通用电调等都支持PWM信号来传输控制信号 常用的400Hz电调信号对应周期2500us xff0c 一般使用高电平时间1000us 2000us为有效信号区间 xf
  • PX4进入系统控制台以及运行程序

    这里提供进入控制台两种办法 1 运行 Tools mavlink shell py dev ttyACM0 是我进入Px4系统控制台的命令 xff0c 进入之后应该是这样 Pixhawk src Firmware Tools mavlink
  • PX4 ---- Mixer

    文章目录 Mixer 混合控制 作用输入输出装载混控文件MAVROS代码解析总结示例MAINAUX Mixer 混合控制 作用 经过位置控制和姿态控制后 xff0c 控制量通过 actuator controls发布 xff0c 其中 co
  • PX4 -- EKF2

    文章目录 EKF2参数高度估计Range Finder滤波 单变量更新单变量更新对多变量的影响 EKF2 参数 EKF2 中有一类 GATE 参数 当测量值在 VAR GATE 范围内才会更新值 高度估计 四种高度控制方法 xff1a 气压
  • PX4模块设计之六:PX4-Fast RTPS(DDS)简介

    64 TOC PX4模块设计之六 xff1a PX4 Fast RTPS DDS 简介 基于PX4开源软件框架简明简介的框架设计 xff0c 逐步分析内部模块功能设计 PX4 Fast RTPS DDS 具有实时发布 订阅uORB消息接口
  • PX4模块设计之十三:WorkQueue设计

    PX4模块设计之十三 xff1a WorkQueue设计 1 WorkQueue启动2 WorkQueue接口2 1 基本接口2 2 辅助接口2 3 WorkQueue任务函数2 3 1 Flat Build2 3 2 Protected
  • PX4模块设计之二十一:uORB消息管理模块

    PX4模块设计之二十一 xff1a uORB消息管理模块 1 uORB模块构建模式2 uORB消息管理函数2 1 状态查询2 2 资源利用2 3 模块启动2 4 模块停止3 uORB消息接口3 1 消息主题注册3 2 消息主题去注册3 3
  • PX4模块设计之三十三:Sensors模块

    PX4模块设计之三十三 xff1a Sensors模块 1 Sensors模块简介2 模块入口函数2 1 主入口sensors main2 2 自定义子命令custom command2 3 模块状态print status 重载 3 Se
  • PX4模块设计之三十九:Commander模块

    PX4模块设计之三十九 xff1a Commander模块 1 Commander模块简介2 模块入口函数2 1 主入口commander main2 2 自定义子命令custom command 3 Commander模块重要函数3 1
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • 【px4】运行mavsdk中的offboard example

    运行MAVSDK中的offboard例子时无人机不执行 想控制无人机前后左右移动 xff0c 在按照官方教程实现offboard 插件的时候 发现用action插件能正常起飞和降落 但是一旦执行到offboard的插件代码的时候就会自动降落
  • pixhawk px4 commander.cpp

    对于复杂的函数 xff0c 要做的就是看函数的输入是什么 来自哪里 xff0c 经过处理后得到什么 给谁用 xff0c 这样就可以把程序逻辑理清 中间的分析就是看函数如何处理的 span class hljs keyword extern
  • MAVROS +ardupilot +gazebo 无人机集群仿真 (一)

    MAVROS 43 ardupilot 43 gazebo 无人机集群仿真 xff08 一 xff09 无人机仿真环境搭建仿真软件安装仿真环境测试无人机多机仿真apm launch文件修改修改 iris ardupilot world修改
  • PX4飞控的PPM接收机

    xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
  • mavlink模块中接收offboard模式下的mavlink消息流

  • Offboard例程的python版本

    因为python的库很丰富 xff0c 有现成的解方程库 xff0c 比如sympy 自己写了一份python版本的自动起飞2m的程序 假设自定义的包名为offb xff0c 在offb下新建scripts文件夹 xff0c 将py文件放在
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感

随机推荐

  • STM32使用C标准库time.h里面的时间时钟函数

    标准C里面已经定义好时间日期库time h xff0c 在嵌入式里面并没有被限制使用 下面我们看一下怎样在IAR中使用time h库 有四个与时间相关的类型 xff1a clock t time t size t 和 tm 类型 clock
  • ros 学习之计算机视觉资料总结

    ros 学习之计算机视觉 ros高效编程Visual ServoingAugmented Reality xff08 AR xff09 Perception and object recognitionvisual odometry 古月居
  • 数字信号处理 离散时间信号

    1 时域离散信号 xff1a 对模拟信号进行等间隔采样 xff0c 即得到时域离散信号 xff08 时间离散 xff0c 但是幅度没有量化 xff0c 离散 xff09 1 xff09 例如 对连续信号Xa t 以等间隔T对其进行采样 xf
  • 复指数函数

    复指数信号 百度百科 复指数信号是指数信号的指数因子是复数时 xff0c 称之为复指数信号 复指数信号在物理上是不可实现的 xff0c 但是它概括了多种情况 利用复指数信号可以表示常见的普通信号 xff0c 如直流信号 指数信号 正弦信号等
  • Make 详解

    1 windows的IDE中自带Makefile 但是unix和linux需要自己写 2 makefile除了指定文件的编译顺序和规则以外 xff0c 也可以执行操作系统的命令 3 make 是一个命令工具 xff0c 是一个解释makef
  • 四旋翼无人机飞行控制算法H∞控制

    PID控制之所以被广泛应用 xff0c 就是因为它是一个无模型控制器 也就是说 xff0c 不管控制对象是什么 xff0c PID控制器的公式都是现成的 xff0c 然后你去修改三个参数试凑就行了 这对理论基础较差的工程技术人员来说用起来是
  • 【无标题】

    linux常用的压缩格式为 xff1a zip tar gz tar tar bz2等 xff0c 不同的方式消耗的时间和压缩比差异比较大 1 zip zip r test zip test r 表示当前test是个目录 2 解压命令 xf
  • 【无标题】

    如下是读取16bit音频raw文件的程序 xff0c 其中的short就是为了16bit准备的 xff0c 一般的固定频率的单频 xff08 1khz之类 xff09 的音频文件是固定的循环 xff0c 比如1khz是每8个点循环一次 xf
  • select 的使用

    select是在指定时间内 xff08 最后一个参数指定的时间 xff09 轮询指定fd集合的接口 1 需要包含的头文件 include lt sys time h gt select是在指定时间内轮询 xff0c 所以有时间相关的参数 i
  • KEIL修改背景色

    本篇文章借鉴 于旺园先生的 平时在用keil软件比较多 xff0c 看白色背景比较多有点伤眼睛 xff0c 现在我们来设置一下keil的背景 xff0c 来保护我们的眼睛吧 效果图 xff1a 1 打开配置界面 color amp font
  • QT表格的实现

    本文章复制于别人的博客 xff0c 是因为我怕原创者把原著删掉 xff0c 所以就复制下来了 xff0c 如有冒犯 xff0c 请多见谅 xff01 一 简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件 xff0c
  • QT 表格

    在公司公示Qt开发一段时间 xff0c 表格用到不少 xff0c 所以 xff0c 今天在这做个总结 xff0c 防止以后忘记 下面为个人模拟Windows资源管理器的一个表单 xff08 写的比較粗糙 xff0c 谅解一下 xff09 一
  • 格力空调红外编码

    格力空调遥控器红外编码透析 xff08 长码 xff09 2016年11月04日 13 13 19 阅读数 xff1a 5516 格力空调遥控器 xff08 YB0F2 xff09 红外码组成如下 xff0c 按解码顺序排列 起始码 xff
  • android相机Camera.Parameters所有的参数值

    最近两天一直在看android相机的参数设置 xff0c Camera Parameters中属性值非常的多 xff0c 我索性就把就调用的flatten 方法 xff0c 将设置的参数值都打印出来了 xff0c 方便以后查看 xff0c
  • 酒店管理项目

    数据库介绍 user表 xff1a 这是一个管理员的表 xff0c 用于存储可对后台进行操作的人员信息表 xff0c 其中重要的字段包括包括主键ID xff0c 与权限等级 xff0c 密码 room表 xff1a 作为存储房间信息的表 x
  • 无人机——电池、电机、螺旋桨搭配

    1 电机 1 xff09 电机KV值 KV值是每1V的电压下电机每分钟空转的转速 例如KV800 在1V的电压下空转转速是800转每分钟 那么10V的电压下是8000转每分钟的空转转速 KV值越小 xff0c 同等电压下转速越低 xff0c
  • 姿态和位置,四旋翼的控制流程

    xfeff xfeff 姿态和位置计算 xff1a EKF 位置控制 xff1a PID 姿态控制 xff1a 姿态环是直接P控制 xff0c 姿态率是PID控制 主要是滤波算法和姿态算法还有PID算法 滤波算法主要是将获取到的陀螺仪和加速
  • Jetson nano 通过 vnc 实现远程桌面控制(已在nano实现)

    目录 一 linux环境 xff1a Ubuntu 18 04 二 nano设置VNC服务 三 设置开机自启动 四 设置静态IP 一 linux环境 xff1a Ubuntu 18 04 jetson nano用的是ubuntu18 04的
  • make px4_sitl_default gazebo出错

    出现错误时候 xff0c 可以在固件文件夹下先更新下 make clean sudo apt get update sudo apt get upgrade 错误1 xff1a 编译make px4 sitl default gazebo
  • PX4 与 MAVROS 实现offboard

    目录 一 虚拟机仿真环境 1 创建工作空间 2 创建ROS节点功能包 3 运行PX4的gazebo仿真 4 启动PX4与Mavros之间的连接 二 真机控制 1 硬件连接 2 软件设置 3 出现问题 Ubuntu xff1a 20 04 x