基于跟踪摄像头的自主室内定位
注意:本教程适用于 Kerloud Flying Rover Scorpion VIO
室内定位对于实现 Kerloud Flying Rover 的自动室内驾驶、飞行至关重要。Scorpion VIO 配备有英特尔Realsense跟踪摄像头T265和激光测距仪,可分别提供0.05m和0.01m的水平和垂直定位精度。跟踪摄像头可以输出基于视觉里程计(VIO)的实时姿态估计,自动驾驶仪中将VIO输出与IMU数据融合来进行低级状态估计。
1. 环境设置
机载计算机中已安装此用例所需的全部预装软件。Scorpion VIO推荐的环境是ubuntu 20.04和ROS noetic,现成的工作区位于~/src/catkinws_realsense目录下,包含以下软件包:
realsense-ros: realsense相机的官方ros包
VIO: 连接realsense VIO 输出与 mavros 通道的软件包
编译工作区,
# source customized offboard control workspace first
# included in ~/.bashrc for convenience
cd ~/src/flyingrover_workspace/catkinws_offboard
source devel/setup.bash
cd ~/src/flyingrover_workspace/catkinws_realsense
catkin build -j 2 # set j=2 to avoid overburden
请注意,本地工作区依赖于我们位于 ~/src/catkinws_offboard 中的自定义包(mavros、mavlink),因此用户必须在编译工作区前先从 offboard control 工作区中获取环境设置。在此强调,ROS 发布的默认 mavros 和 mavlink 包不能用于我们的 Kerloud Flying Rover,默认情况下source操作包含在 ~/.bashrc 中。
2. 使用方法
固件设置
飞控在出厂阶段已进行调优,无需再进行固件设置。用户在初次使用时必须校准 IMU 传感器(加速度计、陀螺仪和磁力计),磁力计需定期校准,因为自动驾驶仪使用其数据进行航向估计。如果您误修改了任何板载参数,请咨询我们的售后寻求帮助。
网络设置
Scorpion VIO 可连接到具有 wifi 的本地网络中,以便轻松实现远程操作。通过 ssh 工具,用户可以通过相应的 IP 地址访问板载计算机:
ssh ubuntu@<drone IP address>
与室内激光slam教程类似,登录路由器的管理页面可以找到机体的IP地址。以TP-Link路由器为例,用户可以访问 192.168.0.1 或 http://tplogin.cn/ 查看本地网络中所连接的全部电脑。Scorpion VIO 的计算机名称默认为 ubuntu。IP 地址会显示如下:
Hint
用户在远程连接机载电脑时至少需要等待3分钟,以确保所有系统启动进程完成。否则Realsense T265 跟踪相机有可能不能正常工作。
开启室内定位
要开启定位进程,
cd ~/src/flyingrover_workspace/catkinws_realsense
bash run.sh
然后用户可以通过命令行查看 ROS 主题来确认本定位输出:
rostopic echo /mavros/odometry/out # VIO output
rostopic echo /mavros/local_position/pose # fused vehicle position from the autopilot
通常定位操作可能需要 20-30 秒才能在自动驾驶仪中稳定下来。用户可以查看飞行控制器的本地位置主题来验证定位状态,通过在 Qgroundcontrol 站的 Mavlink 控制台中键入以下命令即可实现:
listener vehicle_local_position
有些时候控制台会由于网络负担而输出不完整。用户可以尝试以下命令:
listener vehicle_local_position -n 20
进行室内飞行
我们建议所有用户首先进行半自动室内飞行,因为飞行可以帮助验证机载软件的定位精度,操作步骤与快速入门部分相同。预计机体可以很好地悬停,甚至比户外情况下更好。
补充说明,应确保相机前面有一些可识别特征,不要让机体面向纯白色墙壁或玻璃。
3. 演示视频
半自主室内飞行: