0

阿木币

0

精华

182 小时

在线时间

技术大V

Rank: 4

发表于 2020-7-31 10:43:14 7226 浏览 5 回复

[入门教程] 基于ROS与optitrack的四旋翼飞机开发流程

本帖最后由 chasing 于 2020-7-31 10:45 编辑

本文将一些注意点记录下来,适合于开发调试:

  • 目前只是分段调试通了,带后续联合开发的时候在来补充还有没有什么注意点(过程也算麻烦,也算不麻烦);
  • 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则很简单,这个地方也请各位大神有什么好的提议,可以留言
  • 服务器上可以采用rosbag record -a 来记录所有的消息信息。ROS中记录数据与回放,然后在matlab中解析Rosbag,rosbag-matlab。这个地方参照的是
  1. bag = rosbag('ex_multiple_topics.bag');
  2. bSel = select(bag,'Topic','/turtle1/pose');
  3. msgStructs = readMessages(bSel,'DataFormat','struct');
  4. xPoints = cellfun(@(m) double(m.X),msgStructs);
  5. yPoints = cellfun(@(m) double(m.Y),msgStructs);
  6. 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。

其他相关知识可以参看 https://blog.csdn.net/qq_15390133, 或者在本帖下留言




扫一扫浏览分享
回复

使用道具 举报

3

阿木币

0

精华

8 小时

在线时间

应届白菜

Rank: 1

发表于 2020-7-31 15:33:33
你这是用的optitrack的动作捕捉系统吗?
回复 点赞

使用道具 举报

0

阿木币

0

精华

182 小时

在线时间

技术大V

Rank: 4

 楼主| 发表于 2020-7-31 22:24:28
AmovlabDrone 发表于 2020-7-31 15:33
你这是用的optitrack的动作捕捉系统吗?

是的~
回复 点赞

使用道具 举报

131

阿木币

0

精华

270 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-9-20 12:36:51 来自手机
版主很多干货啊
回复 点赞

使用道具 举报

3

阿木币

0

精华

0 小时

在线时间

应届白菜

Rank: 1

发表于 2021-2-18 11:25:04 来自手机
您好,我想问一下px的时间只有在装上GPS的时候才能同步吗,或者有什么其他可以同步时间的方法?
回复 点赞

使用道具 举报

0

阿木币

0

精华

182 小时

在线时间

技术大V

Rank: 4

 楼主| 发表于 2021-11-20 11:30:15
Jason_cpu 发表于 2021-2-18 11:25
您好,我想问一下px的时间只有在装上GPS的时候才能同步吗,或者有什么其他可以同步时间的方法? ...

我试过在协处理器上接收一个optitrack消息,打个时间戳在发布出去。实测OK
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表