当前位置: 首页 > news >正文

Optitrack动捕下的无人机悬停

1.设备:轴距350四旋翼

机载电脑:Jeston xavier NX 电脑

飞控:pixhawk2.4.8

飞控固件版本:PX4 1.13.3

使用的技术文档:XTdrone配置仿真平台基础配置(仿真平台基础配置(对应PX4 1.13版))

阿木实验室的坐标转换文件:

仿真平台基础配置(对应PX4 1.13版) · 语雀

1.optitrack的标定操作

需要注意的是标定杆和标定坐标系使用的不是一个,如果使用错的话,精度标定上升值会很小,正常是1s几百数值的增加。

首先我们先检查是否有反光点,去除反光点。

该界面保持默认。

此时我们使用标定杆在场地挥舞,确保最小值也超过10000,最后检查各个摄像头的精度。

下一步我们标定坐标系,杆都已经给了推荐的方向,可以注意到它的x,y,z坐标系方向与我们之前不同,y轴朝上,我们熟悉的可能是z轴朝上。这个我们可以在软件的设置页面修改。

使用vrpn_clinet_ros功能包来得到地面软件发出的定位信息(只需要将地面软件所在的电脑和机载电脑接入同一个局域网,IP设置正确即可。此时,动捕捕获的位置数据会通过话题广播的数据发送出去,如果我们想要接收到的话,机载电脑就必须要和动捕的电脑连在同一个局域网下

例如:如果你把机体命名为robot1,你会得到一个主题,比如/vrpn_client_node/robot1/pose

关于具体的配置,大家可以看:配置获取动捕数据

2.px4 坐标系和mavros坐标系

MAVROS的坐标系是ENU,也就是x朝东,y朝北,z朝上。需要特别注意的是!!!:上述坐标可以旋转,比如说x朝北,y朝西,z朝上也属于ENU坐标系,只是在原坐标系方向向西旋转了90°。(当时我们整这个坐标系问题半个月,对enu理解有误,来回修改文件,其实刚开始的就是对的。。。。)我们检验坐标系 是否正确,打开地面站,mavlink消息检测的local_position,它是否是ENU坐标系,如果正确,不用去管其它的

optitrack原始数据的坐标系是ENU(我们使用Z轴朝上,也就是topic/vrpn_client_node/robot1/pose 原始数据是ENU坐标系),px4的坐标系是NED,mavros的坐标系是ENU,中间的转换采用的是阿木实验室的坐标转换:px4_pos_estimator.cpp

整体流程是:

  • 首先是传感器测量得到,由机载电脑中的ros话题发布出来。
  • px4_pos_estimator.cpp订阅该话题,进行一定处理后,转存至另一个话题/mavros/vision_pose/pose并发布。
  • Mavros功能包中vision_pose_estimate.cpp订阅/mavros/vision_pose/pose话题,并将其封装成Mavlink消息,发送给飞控。
  • 飞控接收到该Mavlink消息,通过mavlink_receiver.cpp接收并处理,转存为相应的uORB消息。
  • 飞控中ekf2模块订阅该uORB消息,并进行相应计算处理,融合得到无人机的位置速度等状态。

飞控参数设置:EKF2

  • EKF2_AID_MASK 设置为24(即勾选vision position fusionandvision yaw fusion
  • EKF2_HGT_MODE 设置为VISION (默认为气压计)
  • MAV_1_CONFIG= TELEM 2(刚开始没有参数,先设置它)

    MAV_1_MODE = Onboard

    SER_TEL2_BAUD = 921600

    EKF2_AID_MASK =24

    EKF2_HGT_MODE 设置为 Vision,有激光定高的可设为Range sensor

    MAV_ODOM_LP设置1

http://www.jsqmd.com/news/537224/

相关文章:

  • AI绘画工作流:OpenClaw+nanobot自动批量处理SD生成图片
  • OpenClaw夜间任务方案:用nanobot实现定时数据处理
  • FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战
  • HunyuanVideo-Foley在自动化测试领域的应用:为UI测试生成音效反馈
  • OpenClaw故障排查大全:nanobot镜像常见7类错误
  • 揭秘提示工程架构师改善AI提示系统用户体验的奥秘武器
  • 浦语灵笔2.5-7B错误排查:常见问题与解决方案大全
  • Bidili Generator作品集:零基础也能生成的精美AI图片
  • OpenClaw沙盒模式详解:百川2-13B模型高风险指令隔离测试
  • 低代码自动化:OpenClaw+百川2-13B可视化流程搭建入门
  • 避坑指南:ADS1299连续模式下的数据同步问题解决方案
  • 栈的相关基本操作实验
  • .NET eShop 开源项目教程
  • STM32F1 RTC时间戳跨天同步:CUBEMX配置与HAL库优化实践
  • OWL ADVENTURE部署前准备:保姆级Windows系统瘦身与C盘清理指南
  • **基于Solidity的Layer2方案设计与实现:从Rollup到Optimistic的实战探索**在区块链生态中,La
  • 【考毕兹振荡器multisum仿真起振】2023-4-19
  • KART-RERANK集成开发实战:Keil5工程管理与固件库文档智能检索插件
  • 【2025最新】基于SpringBoot+Vue的校运会管理系统管理系统源码+MyBatis+MySQL
  • nli-distilroberta-base企业实操:政务问答系统中立性与矛盾识别模块
  • OpenClaw+Qwen3-32B成本优化:RTX4090D本地推理节省90%API费用
  • LFM2.5-1.2B-Thinking-GGUF快速部署:CSDN平台一键克隆→启动→分享链接三步到位
  • 产品结构与BOM管理**:支持多层BOM(EBOM、MBOM、DBOM)、版本控制、变更影响分析
  • MobileIMSDK WebSocket客户端开发终极指南:H5、小程序与鸿蒙Next端完整适配方案
  • PP-DocLayoutV3入门必看:从合同识别到论文排版检查的全流程实操指南
  • Uvicorn源码中的中介者模式:组件通信与解耦设计
  • RWKV7-1.5B-g1a保姆级教程:如何查看GPU利用率(nvidia-smi)与模型实际显存占用
  • # BurpSuite 与 Python 自动化渗透测试:从手动到脚本化的革命性实践 在现代网络安全攻防
  • pdf2htmlEX重构风险管理:减轻重构对项目的影响
  • OpenClaw+nanobot极简办公:QQ机器人触发日程管理