微空MVD35双目视觉开源飞行平台搭载微空 H743 飞控,官方支持 Ardupilot 和 PX4-Autopilot 两大主流开源固件,微空科技作为 Ardupilot 开源社区合作伙伴,飞控配置文件已合并到 Ardupilot 和 PX4-Autopilot 官方仓库中,二次开发可通过修改编译官方源码或配置文件,实现自定义传感器驱动、自定义引脚及端口功能、飞行控制优化等;
平台配备树莓派机载电脑,运行 Ubuntu 操作系统和 ROS 工具,通过 USB 口连接并使用 MAVLINK 协议与飞控进行通信,可通过 python、ROS 等编程拓展对无人机的飞行控制,平台已集成了多种驱动与功能模块:ROS、Mavros、librealsense SDK、Realsense-ros、vision_to_mavros 坐标转化包、uhubctl、pymavlink;在功能上实现了飞控融合视觉传感器位置信息、飞行平台姿态轨迹可视化、脚本控制飞行轨迹、开机脚本自启动等功能,二次开发可根据任务需求定制自动化脚本任务、通过视觉传感器实现图像识别、获取飞控 IMU 及传感器数据进行融合优化、利用树莓派新增传感器等
产品型号 | MVD35-树莓派4B-T265 | MVD35-树莓派5-D435i |
---|---|---|
飞控 | MicoAir743 | MicoAir743 |
机载电脑 | 树莓派4B | 树莓派5 |
视觉传感器 | T265 | D435i |
飞控固件支持 | Ardupilot 和 PX4-Autopilot | Ardupilot 和 PX4-Autopilot |
机载电脑OS | Ubuntu 20.04 | Ubuntu 24.04 |
ROS | ROS 1 | ROS 1/2 |
总重量(含电池220g) | 645g | 670g |
续航(机载电脑正常工作下) | 13min | 12min |
Ardupilot 地面站:Mission Planner,官方下载链接:https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi
PX4-Autopilot 地面站:QGroundControl,官方下载链接:https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl-installer.exe
远程终端工具:MobaXterm,官方下载链接:https://mobaxterm.mobatek.net/download-home-edition.html
镜像制作与烧录工具:Win32DiskImager,下载链接:https://sourceforge.net/projects/win32diskimager/
Ubuntu
MobaXterm,鼠标右键为粘贴快捷键
Ctrl + C
结束进程;或在需要输入密码处取消 sudo
指令
vim 编辑器 i
或 insert
键进入编辑,ESC
键进入命令模式 :wq
命令保存并退出
Mission Planner
QGroundControl
重启无人机:方法一:硬件重启——飞控断电后重新上电;方法二:软件重启—— QGroundControl -> Vehicle Setup -> 参数 -> 工具 -> 重启飞行器
无线连接时,重启无人机后需要手动连接:QGroundControl -> Application Settings -> 通讯连接 -> TRS -> 连接
Ardupilot
PX4-Autopilot
DroneKit Python
Intel REALSENSE
1.拔出飞控连接到树莓派的 USB 口;使用 HDMI - Micro HDMI 连接线将树莓派连接到显示器,接入键盘和电源,启动树莓派,此时树莓派会进入图形界面
2.输入密码,登录树莓派 (MVD35 飞行平台统一账号:micoair 密码:12345678)
3.修改 50-clound-init.yaml 配置文件
sudo vim /etc/netplan/50-cloud-init.yaml
4.将 WIFI 名称和密码修改为本地 WIFI 名称和密码(password 上一行为 WIFI 名称;password 冒号后有一个空格,注意不要删除该空格)
5.应用更改并重启生效
sudo netplan apply
sudo reboot
6.移除 HDMI - Micro HDMI 连接线和键盘,将拔出的飞控连接线重新插回到树莓派的 USB 口;配置好本地 WIFI 后,后续可通过电脑局域网登录树莓派进行开发
7.重启树莓派 30 秒内,树莓派会自动搜索并连接到配置好的本地 WIFI
8.进入 WIFI 管理后台查找名称为 raspberrypi 的设备,记录其 IP 地址
9.安装并打开 MobaXterm
10.在 MobaXterm 上方工具栏点击 Session,弹出的界面选择 SSH,在 Remote host 填入树莓派的 IP 地址,勾选 Specify username 并填入用户名(MVD35 飞行平台统一账号:micoair 密码:12345678),点击 OK 进行连接
11.输入密码登录到树莓派(MVD35 飞行平台统一账号:micoair 密码:12345678)
1.通过 MobaXterm 登录到树莓派
2.删除自动启动视觉传感器指令:删除 /etc/rc.local
文件中启动所有节点部分(图中框选内容)
sudo vim /etc/rc.local
3.保存并重启树莓派后生效
sudo reboot
4.后续测试通过的脚本需要设置开机自启动,可以将脚本启动指令添加到 /etc/rc.local
文件中
通过 rviz 机器人可视化工具,可以实时监测无人机飞行姿态与轨迹等
启动 T265,mavros,vision_to_mavros 节点
roslaunch vision_to_mavros t265_all_nodes.launch
在 rviz 中查看姿态与轨迹
启动 rviz (此时 rviz 运行于树莓派上,并通过 SSH 连接将软件界面传回,并非运行于本地电脑,所以操作灵敏度不高)
rosrun rviz rviz
将 Fixed Frame 设置为 camera_odom_frame,添加想要查看的数据,常见有 Axes Path Pose 等
在添加的 Axes 中,将 Reference Frame 设置为 camera_odom_frame,Length 及 Radius 可根据空间场景设置大小
在添加的 Pose 中,将 Topic 设置为 /mavros/vision_pose/pose,Queue Size 设置为 1,Shape 设置为 Axes,Axes Length 及 Axes Radius 可根据机架大小设置
在添加的 Path 中,将 Topic 设置为 /body_frame/path,Queue Size 设置为 1
移动无人机或控制飞行过程中,rviz 将会实时显示无人机姿态和轨迹
测试《微空MVD35双目视觉开源飞行平台使用手册》飞行测试过程中,启动视觉传感器所有节点后,可以通过 rviz 实时监测姿态与轨迹
观测数据可根据使用条件需求添加与修改,辅助无人机状态监测
Ardupilot 除了遥控器手动控制飞行与 Mission Planner 交互式控制飞行外,还可以通过树莓派上 ROS 脚本,控制无人机自主执行飞行任务,完成一些预设或智能化的任务。树莓派上文件目录 ~/vision_ws/src/vision_to_mavros/scripts
下包含了脚本控制自主飞行的范例:
mavros_control1.py
脚本执行无人机起飞至 1.2m 高度,保持该高度并以边长为 0.4m 的正方形轨迹进行移动,飞行一圈回到原点后降落;
mavros_control2.py
脚本执行无人机起飞至 1m 高度,保持该高度并以起点为圆心,半径为 1m 的圆形轨迹进行移动,飞行两圈后回到圆心并降落。
飞行准备:打开遥控器 -> 启动无人机 -> Mission Planner 连接 TRS 高频头 -> MobaXterm 连接树莓派
启动视觉传感器:MobaXterm 启动所有节点(T265, mavros, vision_to_mavros)
roslaunch vision_to_mavros t265_all_nodes.launch
检查飞控状态:Mission Planner 上检查视觉传感器数据、所选信号源、飞行模式、是否可解锁、是否有报错信息等
设置 EKF 原点
方法一:地面站设置 EKF 原点:Mission Planner -> 右键点击地图界面,呼出选项列表 -> 设置家在此 -> Set EKF Origin Here (设置后,在地图上会显示无人机图标表示无人机方向与位置信息)
方法二:树莓派脚本设置 EKF 原点
rosrun vision_to_mavros set_origin.py
执行脚本:脚本文件可自行编写或根据需求修改,执行范例 mavros_control2 如下
rosrun vision_to_mavros mavros_control2.py
飞行监测:启动视觉传感器后,可通过树莓派上 rviz 机器人可视化程序实时查看无人机姿态、位置、轨迹等信息;飞行结束后,可通过 Mission Planner 下载日志进行分析
可通过修改脚本或编写自定义需求脚本,实现自定义控制任务
PX4 除了遥控器手动控制飞行外,还可以通过树莓派上 ROS 脚本,控制无人机自主执行飞行任务,完成一些预设或智能化的任务。树莓派上文件目录 ~/vision_ws/src/px4_offboard_py/scripts
下包含了脚本控制自主飞行的范例:
offb_sample1.py
脚本执行无人机解锁并起飞至 1m 高度,保持该高度并以边长为 0.5m 的正方形轨迹进行移动,飞行一圈回到原点后降落
飞行准备:打开遥控器 -> 启动无人机 -> QGroundControl 连接 TRS 高频头 -> MobaXterm 连接树莓派
将无人机放置在空旷的启动场地中,启动视觉传感器:MobaXterm 启动所有节点(T265, mavros, vision_to_mavros)
roslaunch vision_to_mavros t265_all_nodes.launch
检查 VISION_POSITION_ESTIMATE 及 LOCAL_POSITION_NED 数据:VISION_POSITION_ESTIMATE 为 T265 传回定位信息;LOCAL_POSITION_NED 为融合后位置信息,通常无人机上电初始化位置为原点,启动视觉传感器融合后,原点为启动视觉传感器位置,通过 QGroundControl -> Analyze Tools -> MAVLink 检测 确认数据正常
检查飞控状态:QGroundControl 上检查飞行模式、电池电量、是否 Ready to Fly、及无人机信息等
无人机切换至 Position 飞行模式,脚本执行过程中,可随时通过遥控器夺取无人机控制权,飞行异常时,请及时将飞行模式切换至 Altitude 或 Stabilized 飞行模式并手动控制(offboard 模式下遥控器摇杆控制无效,需先切换飞行模式以获取控制权后,摇杆控制才会生效)
启动 rviz 监测运动轨迹
启动脚本
rosrun px4_offboard_py offb_sample1.py
5s 后,无人机解锁并起飞至 1m 高度,保持该高度并以边长为 0.5m 的正方形轨迹进行移动,飞行一圈回到原点后降落
飞行结束后,可通过 QGroundControl 下载日志(使用数传下载日志速度较慢,建议使用 USB 连接下载日志),并使用 PlotJuggler、Flight Review 等工具加载日志针对具体情况进行分析
可通过修改脚本或编写自定义需求脚本,实现自定义控制任务
1.克隆官方仓库
git clone https://github.com/ArduPilot/ardupilot.git
2.更新子模块
cd ardupilot
git submodule update --init --recursive
3.安装编译工具:执行编译环境安装脚本(科学上网安装较为顺畅,网络条件限制时,将导致下载超时,重新执行命令时下载的文件名带编号后缀导致失败,可通过手动删除下载包名称中的后缀编号,或者直接将下载好的文件拷贝到指定的目录中)
Tools/environment_install/install-prereqs-ubuntu.sh -y
4.重新加载 profile
. ~/.profile
1.切换到想要编译的版本
git checkout -b your_branch orign_branch
2.编译 bootloader
./waf configure --board MicoAir743 --bootloader
./waf bootloader
3.编译固件
./waf configure --board MicoAir743
./waf copter
MicoAir743 配置文件位于 libraries/AP_HAL_ChibiOS/hwdef/MicoAir743
文件夹下,参考其中资料并根据需求修改配置文件
MicoAir743_BackView.jpg:MicoAir743 反面视图
MicoAir743_FrontView.jpg:MicoAir743 正面视图
MicoAir743_Pinout.xlsx:MicoAir743 主控 STM32H743 引脚定义表
MicoAir743_PortsConnection.jpg:MicoAir743 接线示意图
README.md:MicoAir743 特性介绍
defaults.parm:MicoAir743 内置默认参数文件
hwdef-bl.dat:MicoAir743 bootloader 硬件配置文件
hwdef.dat:MicoAir743 硬件配置文件
Ardupilot 代码架构学习可参考:https://ardupilot.org/dev/docs/learning-ardupilot-introduction.html
1.基础架构
持续更新中……
1.克隆官方仓库
git clone https://github.com/PX4/PX4-Autopilot --recursive
2.切换到想要编译的版本
cd PX4-Autopilot
git checkout -b your_branch orign_branch
3.安装编译工具:执行编译环境安装脚本(科学上网,根据使用需求选择是否安装仿真工具)
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
1.编译 bootloader
make micoair_h743_bootloader
2.编译固件
make micoair_h743_default
MicoAir743 配置文件位于 boards/micoair/h743
文件夹下,参考其中资料并根据需求修改配置文件
extras 文件夹:bootloader.bin 文件存放
init 文件夹:板子初始化配置、默认参数设置文件
nuttx-config 文件夹:nuttx 操作系统板子资源适配
src 文件夹:板子硬件资源定义
bootloader.px4board:bootloader 编译文件
default.px4board:固件编译文件
firmware.prototype:硬件信息说明文件
PX4-Autopilot 代码架构学习可参考:https://docs.px4.io/main/en/
持续更新中……
参考此篇教程,可以烧录Ardupilot或者PX4固件到飞控:
飞控固件烧录教程(Ardupilot/PX4/Betaflight/INAV)
1.飞行平台搭建
6.双目VIO算法实现与应用(树莓派5+D435i)
7.拓展应用案例