具有 Aruco 板检测功能的 ROS
Last updated
Last updated
本维基页面描述了如何设置能够实现室内自主飞行的系统。 该系统基于带有Raspberry Pi 3和Raspberry Pi相机模块v2的四轴飞行器。来自相机的图像用于计算树莓派上的姿势估计,并将结果作为MAVLink消息发送到飞行控制器。 相机是向下看的,在地板上有一个Aruco板,如下所示:
系统使用 ROS 来完成它必须执行的所有任务。来自Raspberry Pi相机的图像由raspicam_node捕获,姿势估计由aruco_gridboard的修改版本计算,并使用mavros将相关消息发送到飞行控制器。所有这些ROS软件包以及我们稍后将看到的其他软件包都在Raspberry Pi 3上运行。
ROS节点raspicam_node发布相机/图像和相机/camera_info主题,节点aruco_gridboard订阅这些主题并向mavros/vision_pose/pose主题发布camera_pose消息,mavros将ROS消息翻译成MAVLink消息并发送到飞控。
在开始使用系统之前,SET_GPS_GLOBAL_ORIGIN消息和SET_HOME_POSITION随脚本一起发送。
四轴飞行器上的飞行控制器和Raspberry Pi 3通过串行端口连接,而Rapsberry Pi 3和台式PC通过WiFi连接。台式 PC 仅用于配置和可视化目的。来自 ROS 的 rviz 用于在 PC 上进行可视化。
带有ArduCopter 160.3-dev的革命飞行控制器的小型四轴飞行器(7毫米)和以下相关参数:
在四轴飞行器上有一个树莓派3(通过串行端口连接到飞行控制器)和一个树莓派相机
在Raspberry Pi上,有带有raspicam_node,aruco_gridboard和mavros软件包的ROS Kinetic。
使用 Ubiquity Robotics Raspberry Pi 映像安装 Ubuntu 16.04 和 ROS Kinetic
编辑 /boot/config.txt 以在 /dev/ttyAMA0 上具有更高的串行速度(以 921600 波特连接)
将串行端口与飞控上的一个遥测端口连接
按照 Ubiquity Robotics 网站上的说明使用 WiFi 连接到 PC
编辑 mavros 配置文件 apm_config.yaml 以使用 MAVLink 的 SYSTEM_TIME 和 TIMESYNC 消息同步飞行控制器和配套计算机 (Raspberry Pi) 时钟,如本维基所示
按照本维基中的说明校准相机
在 ~/catkin_ws/src 中克隆这个aruco_gridboard分支
全部构建
在 Ubuntu 16.04 上安装 ROS Kinetic(也许较新版本的工作方式相同,但未经测试)
安装 ros-kinetic-joy-teleop (sudo apt install ros-kinetic-joy-teleop) 并为您的操纵杆进行配置 - 我们使用操纵杆而不是RC,因为使用2.4GHz RC会干扰WiFi视频流。在 mavros 中有一个罗技 F710 操纵杆的配置文件,在aruco_gridboard包中,我们为 Xbox one 操纵杆添加了配置文件。
安装 mavros (sudo apt install ros-kinetic-mavros*)
如果您不熟悉 ROS,请按照教程进行操作
编辑 ~/.bashrc 并附加以下行:
创建一个Catkin工作区(在Raspberry Pi上,这不是必需的,因为它已经在Ubiquity Robotics图像中)
在 ~/catkin_ws/src 中克隆这个aruco_gridboard分支
全部构建
在PC上,您还必须运行您选择的GCS来配置四轴飞行器,查看遥测数据,查看MAVLink检查器,设置飞行模式并发出命令。所有这些事情也可以通过ROS消息和服务来完成,但这样可能会更容易。
现在要启动系统工作所需的所有节点,请在不同的术语上给出以下命令(或使用 CTRL+SHIFT+T 的选项卡) (在本例中,192.168.10.16 是 PC,192.168.10.10 是四轴飞行器上的树莓派)
选项卡1
选项卡2
选项卡3
选项卡4
选项卡5
此时应该可以看到 /mavros/vision_pose/pose 和 /mavros/local_position/pose,表示为 3 个轴,在 rviz 上,并将四轴飞行器与相机朝向 Aruco 板,您应该看到两个姿势彼此靠近。将GCS连接到四轴飞行器(tcp 192.168.10.10 2000),应该可以在地图上看到四轴飞行器,设置飞行模式并发出命令。
如果最后一点没问题,则可以在悬停模式下完成第一次测试,将四轴飞行器武装起来,起飞并使用操纵杆悬停在 Aruco 板上,然后降落。
最后一步(目前)是使用随附的脚本之一测试全自主飞行,为此打开另一个术语或选项卡
您应该看到四轴飞行器臂,起飞,沿着广场飞行并降落,如本页开头的视频所示。
博客文章 使用 ArduCopter、ROS 和 Aruco 板检测的室内自主飞行: 与此处描述的系统类似,但在四轴飞行器上有一个Raspberry Pi 0(而不是Raspberry Pi 3),由于计算资源有限,aruco_gridboard节点在台式PC上运行,相关数据(主要是图像和姿态估计)使用ROS消息与四轴飞行器交换。
博客文章使用SKYVIPER进行视觉定位实验: 这里描述了一个类似于前一个的系统,代替 DIY 四轴飞行器,使用了 Skyviper 一个,因此它应该更容易复制。