基于ROS与optitrack的四旋翼飞机开发流程
本文将一些注意点记录下来,适合于开发调试:
- 目前只是分段调试通了,带后续联合开发的时候在来补充还有没有什么注意点(过程也算麻烦,也算不麻烦);
- ROS组网,optitrack 台式机(windows系统)与 ROS服务器(这里称为服务器,感觉比较合适),四旋翼在同一个局域网内。其中四旋翼本次采用Pixracer (烧录px4,v1.10.1版本), 通过tel2与树莓派链接,树莓派采用4B型号,烧录ubuntu mate18.04版本,安装ros-melodic。
- 期间需要树莓派当master,第一开始采用的是服务器当master,没有成功。这个地方仍然需要后续考虑。也就是说我把服务器当master, 并且完成optitrack的数据转发。将树莓派当做slave加入到master。此时,master中可以看到所有树莓派上提供的消息并且显示,px4飞控无法收到/mavros/vision_pose/pose,且最后查/mavros/local_position/pose没有数据。这个地方需要注意的是master和slaver都要将自己的IP和命名放在etc/hosts中,才可以完成互相的通信。
- 服务器上可以采用rosbag record -a 来记录所有的消息信息。(如果需要画曲线的话,建议吧rosbag放在树莓派上进行,cpu负载率50%左右,还是可以接受的)ROS中记录数据与回放,然后在matlab中解析Rosbag,rosbag-matlab。这个地方参照的是
bag = rosbag('ex_multiple_topics.bag');
bSel = select(bag,'Topic','/turtle1/pose');
msgStructs = readMessages(bSel,'DataFormat','struct');
xPoints = cellfun(@(m) double(m.X),msgStructs);
yPoints = cellfun(@(m) double(m.Y),msgStructs);
plot(xPoints,yPoints)
这里,我们可以把他写成matlab脚本文件,就可以当飞行数据显示在matlab中了。
5. 期间修改了px4中mavlink发送频率,由于要进行姿态控制,所以将频率都提到了最高。如果进行位置控制,则可以忽略。
6. 在vrpn_client_node包中的sample.launch中,修改了一个同步时间的参数use_server_time:本来默认参数为false,结果被我修改成了true。造成在消息中查看vision_pose是正确存在的,local_position/pose中刚开始有参数,一会之后就发散然后变成0了。这个时候在QGC中进行查看,首先在mavlink_console中的local_position是确定为0的,然后在查看ls /obj,找到vehicle_visiual_odometry中是正确的数值,表示px4代码是收到了正确的optitrack数据的,紧接着又查看了ekf2中的status,发现此时local_position_estimator 显示invalid。 很是无语,此时猜测EKF2某些参数造成他发散了(其实后来在源码中发现了有一个超时的选项的,这个是通过ekf2 invalid 顺藤摸瓜找到的),尝试着修改了一些EKF2的延迟参数,无果。转而将代码修改成LPE模式,不在使用EKF2(在rc中修改ekf2 start 替换成local position estmator start 没有用,在QGC中system选现中可以进行修改),再成功修改成LPE模式后,再次启动程序,发现在树莓派中一段时间后总是显示LPE 超时,这个时候我才意识到可能是同步时间出了问题,以前修改过sample中的一个和时间同步有关的参数。最后,修改过来之后,一切都正常了。
7. optitrack 可以提升传输速率,最大200Hz。
8. 在多机飞行是,按照上述完成配置,出现一种情况,/uav1/mavros/vision_pose/pose是确定已经发送过去了,按照第6步的操作,在地面站中查看vehicle_visual_odometry也是存在正确的数据的。飞控收到数据,但是local_position没有数据的原因,应该是vision_pose的数据和飞控中的数据时间戳没有对上,造成飞控中ekf的解算发散了,解决方法是需要同步时间。可以采用的方法是在添加一个Node,只进行时间戳到修改。
9. 减少路由器延时及树莓派5G自动断线重连问题。(该问题由师弟整理)
a. 打开浏览器,进入192.168.50.1,登录路由器设置界面。
b. 更改路由器地区,改为US。(树莓派wifi地区也改为美国。) 无线网络->专业设置->地区
c. 更改ASUS_10_5G信道。无线网络->一般设置->频道(设为36~40之间,该信段使用较少)
->频道带宽(设为20,带宽越小传输距离约远,抗干扰能力越强)
基于ROS与optitrack的四旋翼飞机开发流程相关推荐
- Optitrack视觉定位下基于ROS及PX4搭建四旋翼多机飞行平台
Optitrack视觉定位下基于ROS及PX4搭建四旋翼多机飞行平台搭建 1 单机平台 1.1 四旋翼硬件组装 a)注意 1.2 机载板环境配置 1.3 飞控参数配置 a)注意 1.4 实飞全流程 2 ...
- 基于ROS的18届中航杯比赛流程实现
用ROS写了个状态机,感觉流程上还可以改进,接下来优化一下 #include <ros/ros.h> #include <geometry_msgs/PoseStamped.h> ...
- 基于RflySim平台的底层飞控快速开发流程
RflySim底层控制开发流程 前言 开发条件 本文使用 一.平台配置 二.开发流程-姿态控制器设计 1. 整体模型 1)搭建多旋翼仿真模型 2)设计遥控器映射信号 3)设计控制器 2. 软件在环仿真 ...
- 基于模型设计(MBD)的机器人开发流程
声明:本文所有图片均截自bilibili中科深谷UP上传的公开课,仅作为个人笔记记录,侵删~ MBD:Model based design
- 基于ROS的无人车开发心得(一)
基于ROS的无人车开发心得(一) 研究生的第一个寒假,已经过去十多天了,本来是想早发的,奈何有个大作业一直拦着,所以现在才写完,来总结一下这个学期学的内容,分几个部分写,上学期导师给我安排了关于无人车 ...
- HarmonyOS之分布式任务调度开发流程
一.概述 ① 分布式任务调度 在 HarmonyOS 中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的"超级虚拟终端"提供统一的组件管理能力,为应用定义统一的能力基 ...
- 基于ROS的移动机器人开发:视觉、语音、导航
经过十余年的快速发展,ROS已成为当下主流的移动机器人操作系统,被各大机器人科技企业支持与使用.一些重大的自动驾驶或者机器人开源框架都是基于ROS系统进行开发的,例如:百度的Apllo和日本的Auto ...
- 基于AUTOSAR的AP平台的应用开发
一.MDC工具链总览 华为的MDC在开发过程中需要使用自己的开发工具,也就是MDC工具链. MDC工具链主要是三个部分:Mind Studio.MDS以及MMC,三个开发工具各自负责一部分,完成整个M ...
- 基于ROS设计一款机械臂控制系统 [转发]
ROS探索总结-66.基于ROS设计一款机械臂控制系统 ROS探索总结-66.基于ROS设计一款机械臂控制系统 说明: 介绍如何基于ROS设计一款机械臂控制系统 正文 今天我们将从以下两个方面为大家介 ...
最新文章
- 【radar】毫米波雷达相关资料(文献综述列表、顶会研讨会资料列表、顶会workshops资料列表、工具书、使用手册)(2)
- linux c warning 'XXX' declared 'static' but never defined解决方法
- vSphere Data Protection 6.1.2部署与配置
- 2020年阴阳师服务器维护,2020阴阳师2月19日更新官方公告及内容汇总
- 成交量与股价的关系图解
- windows 下后台启动 redis
- StringBuffer append整数0001的问题
- 计算任意两个圆的交点
- 简单RAM存储器分析
- 学习小实例--滚动条
- php处理数组函数大全
- Adblock PLus 插件chrome用
- 《计算机操作系统(慕课版)》(汤小丹著)课后习题答案
- 栅栏密码加密/解密【传统型】在线工具
- App数据抓取(Appium使用)
- Putnam竞赛一道题及中科大自主招生试题的联系
- linux 临时文件夹设置,Linux 系统 tmp 目录的安全设置
- lwip连续发数据卡死_用lwip发送大量数据时,遇到的问题解答记录 | 求索阁
- ubuntu IPV6及作为路由分配【笔记】
- Django的列表分页