用于非 GPS 导航的 ROS 和 VIO 跟踪摄像头¶
本维基页面介绍了 VIO 跟踪摄像机 如 英特尔 RealSense T265 可与 ROS 配合使用,为非 GPS 飞行提供便利。
视频¶
硬件要求¶
配套电脑: 树莓派 3 B 型
备注
这取决于您对 T265 的需求,配套电脑应配备 USB2 (姿势 或 USB3 (姿势 + 图像 数据)。对于定位和导航,我们只需要捕捉姿态数据,因此 RPi 3B 就足以完成任务。
系统概述¶
从 真-罗斯
节点将由 对马夫罗斯的憧憬
节点,并发送至 马夫罗斯
节点通过主题 /mavros/vision_pose/pose
. 马夫罗斯
将负责 ENU - NED 帧转换,并通过 MAVLink 发送给 ArduPilot。
安装 librealsense
¶
备注
Realsense T265 通过以下方式提供支持 librealsense 在 Windows 和 Linux 上运行。不同系统的安装过程大不相同。请参考 官方 Github 页面 有关特定系统的说明,如 杰特森, Odroid, Windows操作系统, Raspbian.
以下步骤适用于 Ubuntu Linux。由于 RPi 没有 Debian 软件包、 librealsense
必须从源代码构建。
安装操作系统 (如果您还没有这样做): Ubuntu MATE 16.04 LTS.
增加交换容量:RPi 没有足够的内存来编译 SDK,因此需要增加交换容量。交换大小为 2048(2GB)似乎效果不错,但也可以少一些。
# 关闭交换
苏都 dphys-swapfile 掉期
# 编辑配置文件
苏都 纳米 /etc/dphys-swapfile
# 查找并编辑变量 CONF_SWAPSIZE=2048
# 重新开启交换功能
苏都 dphys-swapfile 黑匣子
# 重新启动树莓
苏都 重新启动
# 重启后,检查交换大小是否发生变化
免费的
# 应该显示类似 Swap: 2097148 的内容
克隆 librealsense 软件源并编译 SDK
# 更新系统
苏都 适切 更新 sudo 适切 升级 -y
# 安装依赖项
苏都 适切 安装 git libssl-dev libusb-1.0-0-dev pkg-config -y sudo 适切 安装 cmake python3-dev raspberrypi-kernel-headers -y
# 克隆你选择目录下的版本库
CD ~ git 复制 https://github.com/IntelRealSense/librealsense.git
CD librealsense
# 安装 udev 规则
苏都 cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm 控制权 --重载规则 &&; udevadm 触发器
# 创建目标目录
mkdir 构建
CD 构建
# 如果不是第一次运行,请删除多余的文件
xarg 苏都 rm <; install_manifest.txt rm CMakeCache.txt
出口 CC=/usr/bin/gcc-6
出口 CXX=/usr/bin/g++-6 cmake -D cmake_build_type="发布";\
-D FORCE_LIBUVC=关于 \
-D build_python_bindings=关于 \
-D 构建示例=关于 ... -j4 sudo 生产 安装 ldconfig
# 最后,重启 pi:
苏都 重新启动
测试 librealsense 安装是否正确:最简单的方法是插入 T265,然后使用 例子 和 工具 包含在 SDK 中。
如果插有显示器,可以打开 英特尔 Realsense 查看器 在终端中输入
真实观众
.如果已连接 T265,设备将显示在左侧面板上。点击滑块启动设备并切换到 3D 视图。左右移动 T265,就可以看到它的轨迹。如果没有连接监视器,也可以从终端启动其他演示,例如
rs-pose
,rs-pose-predict
,rs-capture
等等
测试 pyrealsense2 python 封装程序:如果启用了构建 Python 包装 (
build_python_bindings
标志),编译后的库位于联编文件夹中:~/librealsense/build/wrappers/python
.更新
飞龙之路
环境变量,将路径添加到火光
图书馆出口 PYTHONPATH=$PYTHONPATH:/usr/local/lib
.或者,复制构建输出 (librealsense2.so
和pyrealsense2.so
文件,位于~/librealsense/build/
) 旁边的脚本。英特尔提供的基本示例可在文件夹
~/librealsense/wrappers/python/example
.使用 Python3 运行。
出口 飞龙之路=$PYTHONPATH:/usr/local/lib
CD ~/librealsense/wrappers/python/example
# 你应该看到从 T265 传出的数据流。
python3 t265_example.py
备注
使用 USB2 的 RPi 3B 无法处理图像流。尝试显示鱼眼图像可能会导致应用程序崩溃。
安装 真-罗斯
¶
ROS 的安装步骤很简单,你可以按照官方软件仓库中的说明进行操作 这里.
启动节点:
玫瑰发射 realsense2_camera rs_t265.launch
.所有传感器数据都将作为 ROS 主题发布:
/camera/odom/sample /camera/accel/sample /camera/gyro/sample /camera/fisheye1/image_raw (不 可查看 关于 RPi 3B)
/camera/fisheye2/image_raw (不 可查看 关于 RPi 3B)
在另一个终端,运行
顶级
查看当前 CPU 使用情况。
备注
版本 真-罗斯
需要与 librealsense
因此,每次更新 ros/lib 时,另一个也应更新。
安装 马夫罗斯
¶
建立串行连接: 用 MAVLink 将 RPi 连接到 ArduPilot.
如果 RPi-ArduPilot 之间通过 UART 串行端口建立连接,还需要 更改 /boot/config.txt 中的设置.
安装
马夫罗斯
请按照我们的 维基页面.在 ROS 中建立连接: 用 MAVROS 连接 ArduPilot.
安装 对马夫罗斯的憧憬
¶
克隆并构建软件包:
# 导航到 catkin 工作区
CD ~/catkin_ws/src
# 克隆并构建 repo
git 复制 https://github.com/hoangthien94/vision_to_mavros.git
CD ... catkin_make
消息来源 ~/.bashrc
# 将源命令添加到 .bashrc 以备将来使用
# echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
根据 T265 摄像机的方向修改参数:默认参数设置为 前置摄像头.在启动文件中
t265_tf_too_mavros.launch
, 修改参数摄像头
,摄像头
,偏航摄像头
,gamma_world
从数值列表中选择,或根据自己的设置选择相应的数值。
备注
有一个 已知问题 的偏航角不一致 朝下 方向,并讨论了一些解决方法。截至本文撰写时,以下方法似乎可行:当摄像机开始流式传输姿势时,需要稍微倾斜(即不要完全平放)(启动 真-罗斯
或致电 librealsense
的 API 来调用姿势数据。否则,世界坐标的偏航角可能会被随机初始化。
配置 ArduPilot¶
用地面站(即 Mission Planner)连接飞行控制器,并检查以下参数是否设置如下:
AHRS_EKF_TYPE = 2(默认值)以使用 EKF2(截至本文撰写时,不支持 EKF3 用于处理外部导航数据)。
EK2_ENABLE = 1(默认值)
EK3_ENABLE = 0(默认值)
GPS_TYPE = 0 关闭 GPS
EK2_GPS_TYPE = 3 禁用 EKF 对 GPS 的使用
EK2_posne_m_nse = 0.1
EK2_VELD_M_NSE = 0.1
EK2_VELNE_M_NSE = 0.1
COMPASS_ENABLE = 0, COMPASS_USE = 0, COMPASS_USE2 = 0, COMPASS_USE3 = 0 表示禁用 EKF 使用罗盘,转而依靠外部导航数据确定航向。
修改参数后,重新启动飞行控制器。
验证所有 ROS 节点是否正常工作¶
这个设置中有 3 个 ROS 节点在运行: 真-罗斯
, 马夫罗斯
和 对马夫罗斯的憧憬
.分 3 个终端启动:
真-罗斯
节点:玫瑰发射 realsense2_camera rs_t265.launch
.主题
/camera/odom/sample/
和/tf
应公布为 200 赫兹。
马夫罗斯
节点:玫瑰发射 马夫罗斯 apm.launch
(与fcu_url
中的参数和其他参数apm.launch
根据您的设置进行修改)。游标 回响 /mavros/state
应显示 FCU 已连接。游标 回响 /mavros/vision_pose/pose
未公布。
对马夫罗斯的憧憬
节点:玫瑰发射 对马夫罗斯的憧憬 t265_tf_too_mavros.launch
游标 回响 /mavros/vision_pose/pose
现在应该会显示 T265 的姿势数据。游标 赫兹 /mavros/vision_pose/pose
应显示该主题的发布频率为 30Hz。
要验证 ArduPilot 是否接收到
视觉位置估计
在Mission Planner地面站上:按Ctrl+F
并单击 "Mavlink 检查器",就能看到输入的数据。
一旦所有节点都能成功运行,下次就可以使用
玫瑰发射 对马夫罗斯的憧憬 t265_all_nodes.launch
该项目将于rs_t265.launch
根据真-罗斯
无需修改。apm.launch
您可以根据自己的配置进行修改。t265_tf_too_mavros.launch
根据 T265 的方向设置参数。
地面测试¶
开机后,启动所有 ROS 节点。
一般情况下(但并非总是如此),一旦
马夫罗斯
运行,并且 FCU 开始接收视觉位置估计
您将看到 "GPS Glitch "和 "GPS Glitch cleared "信息,确认系统正在识别外部定位数据。现在,您需要告诉 EKF 载具在世界的哪个位置(即 设置 EKF 主页),否则传入的数据将无法融合。为此,您需要发送 MAVLink 信息 set_gps_global_origin 和 设置起始位置.要做到这一点,有多种选择:
使用Mission Planner地面站:右键单击地图上的任意一点>;
设置 首页 这里
>;设置 EKF 起源 这里
.使用代码脚本:通过 MAVLink 向 FCU 发送所需的信息。在 Python 中,您可以使用以下脚本 set_origin.py.
安装
pymavlink
:按照说明操作 这里.运行脚本:
玫瑰 对马夫罗斯的憧憬 set_origin.py
.
您会看到地图上出现一个四旋翼飞行器图标。
拿起载具四处走动,检查载具的位置移动是否显示在地图上。地图上的载具轨迹应反映真实的运动轨迹,不能有太多的失真或偏移。以下是在 2 米 x 2 米的正方形中行走的示例。
飞行测试¶
首次飞行: - 在稳定或高度保持状态下起飞,检查飞行器是否稳定。
移动载具,观察Mission Planner地面站上的位置以及
rviz
查看跟踪是否稳定。切换到 Loiter,但随时准备在出现意外时切换回 Stabilize/Alt-Hold。
否则,飞行器应能稳定悬停并保持其位置。将飞行器前后移动 2-3 米,确认刻度(在屏幕上更容易查看)。
rviz
).以不同的速度移动载具(平移、旋转),随时准备切换回稳定/备用状态。
如果一切正常,下次就可以在 Loiter 模式下上膛和起飞。
提示
在切换到 "闲置 "模式之前,请务必确认位置反馈运行正常。注意环境中的工作边界,即由于缺乏功能、快速或旋转运动而可能失去跟踪功能的地方。
数据记录¶
目视里程信息将显示在
面孔
数据闪存日志信息。