基于PX4、树莓派和Mocap(Optitrack)的室内飞行环境搭建

前言

想配置一套自己使用的室内环境,具体内容如下,目前还没有验证是否可行,之后会试试。原英文教程

系统结构和原理

OptiTrack运动捕捉系统(以下简称Mocap)的工作原理如下。头顶摄像头通过连接的红外LED发出红外光,然后被物体上的标记物反射并被OptiTrack摄像头检测到。已知这些标记在多个摄像头透视下的位置,可以使用三角剖分计算标记在房间中的实际三维位置。位置单位是米,方向是四元数,可以转换成弧度的欧拉角。

在这里插入图片描述
在这里插入图片描述

软硬件要求

硬件:

  • 主机:运行Motive Motion Capture Software
  • Optitrack定位系统
  • 路由器
  • 工作站:运行Linux系统的电脑或者机载计算机,如Odroid XU4、树莓派

软件:

  • 主机装Motive
  • 工作站装ROS
  • vrpn_client_ros 用于工作站接收主机数据

Mocap环境设置

参考详细步骤

  • 打开motive
  • 尽量清理摄像头能看到的反光点
  • 标定:1)挥T字杆收集采样点 2)放置L杆建立坐标系 3)设置坐标系方向

主机->工作站

设置wifi

  • 查看ip信息
ifconfig -a
  • 打开文件
sudo nano /etc/network/interfaces
  • 添加内容
auto wlan0 # The following will auto-start connection after boot
allow-hotplug wlan0 # wlan0 WiFi card number
iface wlan0 inet static
address 192.168.0.xxx # Choose a static IP, usually you change the last number only for different devices
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1 # Your router IP address
dns-nameservers 8.8.8.8
wpa-ssid "RISC-AreaC" # WiFi name (case sensitive)
wpa-psk "risc3720" # WiFi password

Motive设置

打开View > Data Streaming,确认OptiTrack Streaming EngineVRPN Streaming Engine勾选Broadcast Frame Data
在这里插入图片描述
需要注意将使用的机器人机头对准x轴

  • 创建刚体,改名和ID号(如果有多个刚体)
  • 确认工作站IP
roslaunch vrpn_client_ros sample.launch server:=192.168.修改
  • 然后可以从/vrpn_client_node/<rigid_body_name>/pose主题获取Mocap数据,打印试试,如果获取到正确的位置信息说明成功
rostopic echo vrpn_client_node/<rigid_body_name>/pose

Mocap->Pixhawk

硬件要求:

  • Pixhawk飞控或者运行PX4固件的飞控
  • 机载计算机:树莓派或者ODROID
  • 串口连接:USB/FTDI连飞控的TELEM2,TX->RX,RX->TX,G->G
  • 主机
  • 路由器

软件要求:

  • 工作站:Ubuntu+ROS+vrpn_client_ros

pixhawk设置

设置默认的端口TELEM2传数据:

  • 如果1.9.0版本以下,设置SYS_COMPANION = Companion Link (921600 baud, 8N1)
  • 如果1.9.0版本及以上,设置
MAV_1_CONFIG = TELEM 2 (MAV_1_CONFIG is often used to map the TELEM 2 port)
MAV_1_MODE = Onboard
SER_TEL2_BAUD = 921600 (921600 or higher recommended for applications like log streaming or FastRTPS)
  • 设置EKF2_AID_MASK,不选GPS,选择vision position fusionvision yaw fusion

设置delay参数

  • 这些参数直接影响EKF
    在这里插入图片描述

  • 高度数据来源为视觉,设置EKF2_HGT_MODE = Vision

  • 可选参数设置,和定义的刚体中心位置和飞控中心的偏离值
    在这里插入图片描述

PX4获取数据

运行vrpn_client_node,新开一个终端运行MAVROS节点

roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:921600 gcs_url:=udp://@192.168.0.105:14550

说明:

  • fcu_url 连接树莓派和飞控的串口号
  • ls /dev/ttyUSB* 指令查看串口号是否连接
  • 参数 gcs_url:=udp://@192.168.0.119:14550 用来接收 QGroundControl 数据(同一WIFI路由)
  • MAVROS 直接通过 /mavros/vision_pose/pose 给 PX4发布消息
  • remap从Mocap获取的位置主题 /vrpn_client_node/<rigid_body_name>/pose/mavros/vision_pose/pose
rosrun topic_tools relay /vrpn_client_node/<rigid_body_name>/pose /mavros/vision_pose/pose
  • 在QGC上确认是否能切position模式,如果成功,那么可以使用position/offboard模式

飞行验证

设置ROS Network

告诉笔记本,机载电脑是Master,打开.bashrc

gedit ~/.bashrc

末尾加上

export ROS_MASTER_URI=http://192.168.0.odroid_ip_number:11311
export ROS_HOSTNAME=192.168.0.pc_ip_number

  • source一下

机载电脑指令

分别开终端,开启vrpn_client_ros'、'vrpn_client_ros, MAVROS and relayvrpn_client_ros, MAVROS and relay`

roslaunch vrpn_client_ros sample.launch server:=192.168.0.101
roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:921600 gcs_url:=udp://@192.168.0.pc_ip_number:14550
rosrun topic_tools relay /vrpn_client_node/<rigid_body_name>/pose /mavros/vision_pose/pose

笔记本电脑指令

遥控器控制

  • 1 解锁
  • 3 切offboard模式后起飞
  • 2 着陆
  • 11 上锁

没有写完,我个人还没有真机测试,身边有人测试过存在一定漂移,有机会再补充

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值