Mavros控制无人机在gazebo环境下进行双目SLAM

2023-05-16

Mavros控制无人机在gazebo环境下进行双目SLAM

在这里先放参考,键盘控制主要是从初接触ROS时的turtlesim功能包下的键盘控制节点得到的方法。

参考

  • ROS tutorial-turtle_teleop_key,键盘控制程序
  • Mavros wiki,弄清话题的含义和数据类型

话题

使用了两种不同的话题:

  • setpoint_velocity/cmd_vel_unstamped
  • setpoint_raw/local

两者都是Mavros订阅的话题,其中

  • 前者的解释是,Send velocity setpoint to FCU,数据类型是geometry_msgs::Twist,这也是海龟速度控制的话题,分6方向线速度和角速度。
  • 后者的解释是,Send RAW setpoint messages to FCU and provide loopback topics (PX4),数据类型是mavros_msgs::PositionTarget

以下是两种信息内容的定义:

# This expresses velocity in free space broken into its linear and angular parts.
Vector3  linear
Vector3  angular
# Message for SET_POSITION_TARGET_LOCAL_NED
#
# Some complex system requires all feautures that mavlink
# message provide. See issue #402.

std_msgs/Header header

uint8 coordinate_frame
uint8 FRAME_LOCAL_NED = 1
uint8 FRAME_LOCAL_OFFSET_NED = 7
uint8 FRAME_BODY_NED = 8
uint8 FRAME_BODY_OFFSET_NED = 9

uint16 type_mask
uint16 IGNORE_PX = 1 # Position ignore flags
uint16 IGNORE_PY = 2
uint16 IGNORE_PZ = 4
uint16 IGNORE_VX = 8 # Velocity vector ignore flags
uint16 IGNORE_VY = 16
uint16 IGNORE_VZ = 32
uint16 IGNORE_AFX = 64 # Acceleration/Force vector ignore flags
uint16 IGNORE_AFY = 128
uint16 IGNORE_AFZ = 256
uint16 FORCE = 512 # Force in af vector flag
uint16 IGNORE_YAW = 1024
uint16 IGNORE_YAW_RATE = 2048

geometry_msgs/Point position
geometry_msgs/Vector3 velocity
geometry_msgs/Vector3 acceleration_or_force
float32 yaw
float32 yaw_rate

两者都可以根据其中的参数控制线速度角速度,具体内容可见代码。

引起我注意的还有一个话题,是mavros发布的,为setpoint_raw/target_local (mavros_msgs/PositionTarget),其描述为Local target loopback,这个loopback不是很懂。

代码

按话题,有两个:

  • Twist,TwistControl
  • PositionTarget,PositionTargetControl

实验

  • 实验一,飞的最好,建图最差
  • 实验二,飞的一般,建图一般
  • 实验三,飞的最差,建图最差

存在一个共性的问题,回环不上。

程序使用

我后来一直用Twist控制的程序。

指令表:

按键作用
T切Offboard,解锁,起飞到制定高度,短暂盘旋,控制交回键盘
H个方向速度设为0,旨在保持原位
L切Land模式
W加X向线速度
S减X向线速度
A加Y向线速度
D减Y向线速度
page up加油门
page down减油门
home(left)加偏航角速度
end(right)减偏航角速度

两者都是按T起飞,由于程序设计存在一定问题,Offboard到达预定高度悬停结束后需要按住H保持;

PositionTarget程序中经常掉出Offboard,但是Twist中只要掉出了,随便长按一个键不撒就能回到Offboard,所以我后来一直用Twist,其实是由于程序没写好。我在实验里经常用H给无人机时间获取特征点。

Bug及改进建议

Bug很明显是在Offboard模式上,无人机进到该模式后,不仅需要发布消息的频率不低于 2 H z 2Hz 2Hz,还有消息不能断,因为一断就相当于没有RC,failsafe生效直接掉出Offboard;

  • 在for循环中加入判断,没有键盘输入则无人机保持原位;但也有问题,键盘按的没那么快,这个判断总能触发,导致无人机动作很卡顿,跳跃
  • 别的办法一直发消息,没想出来

还有就是在代码上,有很多可以改进的地方,我曾尝试写一个Mavros+PX4类,后来发现current_posecurrent_state的回调函数必须静态,又拿不到类数据,写个this指针传的话,回调函数又变成两个参数,mavros不匹配,遂罢。

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

Mavros控制无人机在gazebo环境下进行双目SLAM 的相关文章

  • PX4-12-飞行任务框架

    飞行任务指的是PX4的modules flight mode manager组件 xff0c 用于控制指令平滑 PX4的FlightTask框架设计还是比较有趣的 xff0c 不论从软件架构还是控制算法方面 xff0c 都是值得好好学习的代
  • AcmeROS-2-ROS2架构

    在前面的分享中 xff0c 我们讲了 在嵌入式设备中运行ROS2 AcmeIot 3 在嵌入式设备中运行ROS2 PX4中的ROS2桥接应用 PX4 16 ROS2Bridge 在AcmeGCS中支持ROS2 AcmeGCS 18 支持RO
  • 自动驾驶控制算法-模型预测MPC

    本文记录一下MPC控制算法的学习过程和自己的理解 xff0c 初步接触控制算法 xff0c 理解肯定不是很完善 xff0c 重在记录思考的过程 背景 随着自动驾驶技术以及机器人控制技术的不断发展及逐渐火热 xff0c 模型预测控制 MPC
  • MySQL保留2位小数

    1 round x d xff0c 四舍五入 round x 其实就是round x 0 也就是默认d为0 select round 109 456 2 109 46 2 TRUNCATE x d xff0c 直接截取需要保留的小数位 se
  • PCB原理图绘制(种草立创eda)

    首先 xff0c 相对于我们平时所用的ad 这个就很适合我们英文不好的中国人了 然后这个一站式搞定 xff0c 画完商城下单就可以做我们的板子了 整个设计界面也很友好 xff0c 封装库也不需要我们自己封装 很多商城里面都有 xff0c 可
  • 操作系统学习-练习题个人总结(三)

    操作系统学习 练习题个人总结 xff08 三 xff09 第二章 操作系统硬件基础 一 第二章 中断和特权级 课前测试 1 错题解析 从用户态到内核态的转换是由 xff08 中断硬件 xff09 完成的 解析 xff1a 扩展资料 xff1
  • c++转换python返回的字符串

    PyArg Parse可以将python返回参数转换为c 43 43 类型 对于字符串转换用 xff0c 如下方法 xff1a xff08 格式必须这样 xff0c 其他方式都转换不了 xff09 char p 61 NULL PyArg
  • Esp8266天猫精灵_RGB灯_非点灯平台

    arduino接入阿里云 天猫精灵 云智能APP RGB灯 鉴于很多平台的物联网设备数量都受到限制 xff0c 比如说blinker xff0c 免费的只有5个 xff0c 使用了物联网里的老大哥阿里云 xff0c 性能稳定 xff0c 生
  • C++day09 类域(全局作用域、类作用域、块作用域)和深拷贝、写时复制、短字符串优化、第三方库优化短字符

    文章目录 1 总体目录框架2 类域 xff08 1 xff09 全局作用域 xff08 2 xff09 类作用域 xff08 3 xff09 块作用域 xff08 4 xff09 具体代码 3 std string底层实现 1 总体目录框架
  • 一天入门TM4C123GH6PM(从STM32进行比较学习)

    从STM32到TM4C123 主要内容 xff1a 一 系统时钟 二 GPIO相关 三 通用定时器相关 四 PWM相关 五 UART通信相关 写在前面 xff1a 进入TI的学习 xff0c 说明STM32 已经掌握的差不多了 xff0c
  • ffmpeg 报错Encoder (codec h264) not found for output stream #0:0

    使用ffmpeg 制作流媒体的视频文件 同样的命令在本地的windows环境是正常的 xff0c 在linux 上就不行了 报错了 根据最后一行的提示 xff0c Encoder codec h264 not found for outpu
  • Datax定时增量读取MongoDB到本地配置文件

    Datax定时增量读取MongoDB到本地配置文件 功能 1 gt DataX实现读取MongDB 2 gt 按照时间增量读取 3 gt 定时执行 xff08 使用调度工具自行实现 xff09 代码 span class token pun
  • 我们为什么需要自动化运维?

    随着企业服务器和交换机数量越来越多 xff0c 当到达几百台 xff0c 上千台服务器和交换机之后 xff0c 服务器和交换机日常管理也逐渐繁杂 xff0c 每天如果通过人工去频繁的更新或者部署及管理这些服务器和交换机 xff0c 势必会浪
  • C语言字符数组与字符串的使用及加结束符'\0'的问题

    1 字符数组的定义与初始化 字符数组的初始化 xff0c 最容易理解的方式就是逐个字符赋给数组中各元素 char str 10 61 I a m h a p p y 即把10个字符分别赋给str 0 到str 9 10个元素 如果花括号中提
  • Ubuntu之桌面安装及启动级别切换

    一 需求说明 某开发测试环境操作系统为Ubuntu20 04 给开发人员安装了xrdp 一次远程桌面连接过程中异常奔溃后无法再次远程连接 重启xrdp服务后所有人连接远程连接均出现闪退 为了进一步排查和测试需要搭建一个xrdp测试环境 当前
  • 如何将windows中的文件上传到虚拟机中?

    今天在linux系统中装了mysql xff0c 本来是用wget命令在官网下载的 xff0c 后来实在是慢 等了几分钟实在看不下去每秒十几k的下载速度 xff0c 于是将这个压缩包 xff08 tar xz结尾 xff09 下载到了win
  • 使用SQLyog连接Linux(CentOS版本)下的MySQL8数据库报2003以及1045错误的解决方法

    今天想尝试一下mysql的图形化管理工具 xff0c 于是下载了SQLyog xff0c 连接时却遇到了以下错误 xff1a 其中192 168 0 10是我linux下设置的inet xff0c 我们是通过它远程连接数据库 xff0c 这
  • servlet 学习笔记3

    1 会话 a 定义 xff1a 一个浏览器与一个服务端的一次完整的交流 b 特点 xff1a 在一次会话过程中 xff0c 经历多次请求与响应 在一次会话过程中 xff0c 同一个浏览器往往访问多个Servlet c 需求 xff1a 在一
  • JDBC 学习笔记2

    1 处理查询结果集 xff08 遍历结果集 xff09 span class token keyword package span test span class token punctuation span span class toke
  • JDBC 学习笔记3

    1 对比Statement与PreparedStatement Statement存在sql注入问题 xff0c PreparedStatement解决了sql注入问题 Statement是编译一次执行一次 xff0c PreparedSt

随机推荐

  • memset函数使用方法

    memset 函数及其作用 memset 函数原型是extern void memset void buffer int c int count buffer xff1a 为指针或是数组 c xff1a 是赋给buffer的值 count
  • 补码和原码的转化过程

    在计算机系统中 xff0c 数值一律用补码来表示 xff08 存储 xff09 主要原因 xff1a 使用补码 xff0c 可以将符号位和其它位统一处理 xff1b 同时 xff0c 减法也可按加法来处理 另外 xff0c 两个用补 码表示
  • 在ubuntu系统下安装缺少的字体(一般缺少中文字体)

    在ubuntu系统下安装缺少的字体 cite Ubuntu LaTeX 环境配置 https www cnblogs com xqmeng p 13931222 html 第一步 xff1a 下载缺少的字体 xff08 这里保证下载字体的名
  • 【数学知识】质数与质因子

    一 质数 1 概念 质数又称素数 一个大于1的自然数 xff0c 除了1和它自身外 xff0c 不能被其他自然数整除的数叫做质数 xff0c 否则称为合数 规定1既不是质数也不是合数质数的个数是无穷的 2 例题 xff1a AcWing 3
  • ElasticSearch7.6.2安装与简单操作

    ElasticSearch7 6 2安装与简单操作 Es系列工具都是开箱即用 xff0c 所以安装比较简单 xff0c 各个系统下都是解压即可 前置环境 xff1a windows10 ES7 6 2 Kibana7 6 2 xff1a E
  • 【填坑】海思wifi平台Hi3861开发(上) -- 搭建环境篇

    文章目录 背景处处坑1 编译环境Ubuntu Python报错去找客户新虚拟机OK 2 开发SDK 背景 近期在海思的一款wifi模组Hi3861V100上开发 xff0c 想来和ESP模组应该很像 xff0c 心情还是很放松的 xff0c
  • 小白带你入坑四旋翼无人机——物料篇

    之前就想写了 xff0c 但是比赛挺忙 xff0c 就搁置下来了 xff0c 现在比完了刚好在记录一下 就在一个月前 xff0c 我真正开始了和四旋翼无人机打交道 当时 xff0c 我还是一个小白 xff0c 对无人机什么都不了解 xff0
  • 无人机pid调节顺口溜

    今天无意中找到 xff0c 具体那位大佬编的我也不清楚 xff0c 先感谢一下吧 参数整定找最佳 xff0c 从小到大顺序查 先是比例后积分 xff0c 最后再把微分加 曲线振荡很频繁 xff0c 比例度盘要放大 曲线漂浮绕大弯 xff0c
  • 锐捷(五)交换机简单网络管理协议(SNMP)的配置

    要求 xff1a 在交换机上部署SNMP功能 1 向主机 172 16 0 254 发送 Trap 消息 xff0c 版本采用V2C 2 读写的Community为 admin 只读的Community为 public 3 开启Trap消息
  • torch-geometric使用过程中的问题

    这次记录自己在使用torch geometric时 xff0c 出现的各种问题 xff1a 1 安装问题 xff1a Python 3 8torch geometric 1 6 1pytorch 1 6 0pandas 1 0 5numpy
  • Jetson Xavier NX

    Jetson Xavier NX 96 提示 xff1a 记录学习过程 xff0c 倘若有抄袭请原谅 文章目录 Jetson Xavier NX前言一 安装系统二 烧镜像三 启动系统打开风扇先 四 配置VNC xff08 此处借鉴 xff0
  • 破片飞散角矢量绘制

    破片飞散角仿真 Gurney公式 xff1a 计算破片初速度 v 0 61 2 E
  • MATLAB二维图形坐标变换

    图形绘制及坐标变换 矩形的绘制和坐标变换示例 MATLAB代码 思考为什么用MATLAB xff1f 矩阵适合作坐标变换 xff0c 而C语言的数组则较为麻烦 xff0c 需要创建二维数组 xff0c 写for循环 xff1b 方法一 xf
  • 毁伤评估总结

    毁伤评估总结 计算部分 xff08 1 xff09 破片飞散速度计算 Gurney公式 xff1a 计算破片初速度 v 0 61 2
  • ORB_SLAM2编译及试运行(含ROS)

    ORB SLAM2 github project linkORB SLAM2的安装与运行 Build and examples span class token function cd span ORB SLAM2 span class t
  • 基于gazebo的四旋翼无人机iris双目相机ORB_SLAM2

    gazebo环境中的四旋翼双目ORB仿真 ORB SLAM2的编译 github project linkORB SLAM2的安装与运行 Build span class token function cd span ORB SLAM2 s
  • CAS 数据库校验

    1 UnknownUsernameAuthenticationException gt BadUsernameOrPasswordAuthenticationException gt BadCredentialsAuthentication
  • VINS-Fusion、CCM-SLAM、COVINS、ORB-SLAM3编译

    VINS Fusion project link on github Build span class token builtin class name cd span catkin ws src span class token func
  • CCM_SLAM多无人机视觉SLAM仿真(gazebo环境)

    0 偷师学艺 follow instructions For using you own datasets or camera you need to create according calibration and launch file
  • Mavros控制无人机在gazebo环境下进行双目SLAM

    Mavros控制无人机在gazebo环境下进行双目SLAM 在这里先放参考 xff0c 键盘控制主要是从初接触ROS时的turtlesim功能包下的键盘控制节点得到的方法 参考 ROS tutorial turtle teleop key