请输入
菜单

微空MVD35双目视觉开源飞行平台二次开发指南

二次开发简介

微空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

准备工作

1. 稳定的飞行平台与一定的飞行经验

2. 软件准备

3. 使用技巧与参考资料

Ubuntu

  • MobaXterm,鼠标右键为粘贴快捷键

  • Ctrl + C 结束进程;或在需要输入密码处取消 sudo 指令

  • vim 编辑器 iinsert 键进入编辑,ESC 键进入命令模式 :wq 命令保存并退出

Mission Planner

  • 重启无人机:方法一:硬件重启——飞控断电后重新上电;方法二:软件重启—— Mission Planner -> 初始设置 -> >> 必要硬件 -> 指南针 -> Reboot

QGroundControl

  • 重启无人机:方法一:硬件重启——飞控断电后重新上电;方法二:软件重启—— QGroundControl -> Vehicle Setup -> 参数 -> 工具 -> 重启飞行器

  • 无线连接时,重启无人机后需要手动连接:QGroundControl -> Application Settings -> 通讯连接 -> TRS -> 连接

Ardupilot

PX4-Autopilot

DroneKit Python

Intel REALSENSE

4. 设置局域网登录树莓派

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)

5. 关闭自动启动视觉传感器

1.通过 MobaXterm 登录到树莓派

2.删除自动启动视觉传感器指令:删除 /etc/rc.local 文件中启动所有节点部分(图中框选内容)

复制代码
sudo vim /etc/rc.local

3.保存并重启树莓派后生效

复制代码
sudo reboot

4.后续测试通过的脚本需要设置开机自启动,可以将脚本启动指令添加到 /etc/rc.local 文件中

树莓派功能二次开发

姿态轨迹可视化(已装配)

通过 rviz 机器人可视化工具,可以实时监测无人机飞行姿态与轨迹等

  1. 启动 T265,mavros,vision_to_mavros 节点

    复制代码
    roslaunch vision_to_mavros t265_all_nodes.launch
  2. 在 rviz 中查看姿态与轨迹

  • 启动 rviz (此时 rviz 运行于树莓派上,并通过 SSH 连接将软件界面传回,并非运行于本地电脑,所以操作灵敏度不高)

    复制代码
    rosrun rviz rviz
  • Fixed Frame 设置为 camera_odom_frame,添加想要查看的数据,常见有 Axes Path Pose

  • 在添加的 Axes 中,将 Reference Frame 设置为 camera_odom_frameLengthRadius 可根据空间场景设置大小

  • 在添加的 Pose 中,将 Topic 设置为 /mavros/vision_pose/poseQueue Size 设置为 1Shape 设置为 AxesAxes LengthAxes Radius 可根据机架大小设置

  • 在添加的 Path 中,将 Topic 设置为 /body_frame/pathQueue Size 设置为 1

  1. 移动无人机或控制飞行过程中,rviz 将会实时显示无人机姿态和轨迹

  2. 测试《微空MVD35双目视觉开源飞行平台使用手册飞行测试过程中,启动视觉传感器所有节点后,可以通过 rviz 实时监测姿态与轨迹

  3. 观测数据可根据使用条件需求添加与修改,辅助无人机状态监测

ROS 脚本执行飞行任务(Ardupilot 已装配)

Ardupilot 除了遥控器手动控制飞行Mission Planner 交互式控制飞行外,还可以通过树莓派上 ROS 脚本,控制无人机自主执行飞行任务,完成一些预设或智能化的任务。树莓派上文件目录 ~/vision_ws/src/vision_to_mavros/scripts 下包含了脚本控制自主飞行的范例:

mavros_control1.py 脚本执行无人机起飞至 1.2m 高度,保持该高度并以边长为 0.4m 的正方形轨迹进行移动,飞行一圈回到原点后降落;

mavros_control2.py 脚本执行无人机起飞至 1m 高度,保持该高度并以起点为圆心,半径为 1m 的圆形轨迹进行移动,飞行两圈后回到圆心并降落。

  1. 飞行准备:打开遥控器 -> 启动无人机 -> Mission Planner 连接 TRS 高频头 -> MobaXterm 连接树莓派

  2. 启动视觉传感器:MobaXterm 启动所有节点(T265, mavros, vision_to_mavros)

    复制代码
    roslaunch vision_to_mavros t265_all_nodes.launch
  3. 检查飞控状态:Mission Planner 上检查视觉传感器数据、所选信号源、飞行模式、是否可解锁、是否有报错信息等

  4. 设置 EKF 原点

  • 方法一:地面站设置 EKF 原点:Mission Planner -> 右键点击地图界面,呼出选项列表 -> 设置家在此 -> Set EKF Origin Here (设置后,在地图上会显示无人机图标表示无人机方向与位置信息)

  • 方法二:树莓派脚本设置 EKF 原点

    复制代码
    rosrun vision_to_mavros set_origin.py
  1. 执行脚本:脚本文件可自行编写或根据需求修改,执行范例 mavros_control2 如下

    复制代码
    rosrun vision_to_mavros mavros_control2.py
  2. 飞行监测:启动视觉传感器后,可通过树莓派上 rviz 机器人可视化程序实时查看无人机姿态、位置、轨迹等信息;飞行结束后,可通过 Mission Planner 下载日志进行分析

  3. 可通过修改脚本或编写自定义需求脚本,实现自定义控制任务

ROS 脚本执行飞行任务(PX4 已装配)

PX4 除了遥控器手动控制飞行外,还可以通过树莓派上 ROS 脚本,控制无人机自主执行飞行任务,完成一些预设或智能化的任务。树莓派上文件目录 ~/vision_ws/src/px4_offboard_py/scripts 下包含了脚本控制自主飞行的范例:

offb_sample1.py 脚本执行无人机解锁并起飞至 1m 高度,保持该高度并以边长为 0.5m 的正方形轨迹进行移动,飞行一圈回到原点后降落

  1. 飞行准备:打开遥控器 -> 启动无人机 -> QGroundControl 连接 TRS 高频头 -> MobaXterm 连接树莓派

  2. 将无人机放置在空旷的启动场地中,启动视觉传感器:MobaXterm 启动所有节点(T265, mavros, vision_to_mavros)

    复制代码
    roslaunch vision_to_mavros t265_all_nodes.launch
  3. 检查 VISION_POSITION_ESTIMATELOCAL_POSITION_NED 数据:VISION_POSITION_ESTIMATE 为 T265 传回定位信息;LOCAL_POSITION_NED 为融合后位置信息,通常无人机上电初始化位置为原点,启动视觉传感器融合后,原点为启动视觉传感器位置,通过 QGroundControl -> Analyze Tools -> MAVLink 检测 确认数据正常

  4. 检查飞控状态:QGroundControl 上检查飞行模式、电池电量、是否 Ready to Fly、及无人机信息等

  5. 无人机切换至 Position 飞行模式,脚本执行过程中,可随时通过遥控器夺取无人机控制权,飞行异常时,请及时将飞行模式切换至 AltitudeStabilized 飞行模式并手动控制(offboard 模式下遥控器摇杆控制无效,需先切换飞行模式以获取控制权后,摇杆控制才会生效)

  6. 启动 rviz 监测运动轨迹

  7. 启动脚本

    复制代码
    rosrun px4_offboard_py offb_sample1.py
  8. 5s 后,无人机解锁并起飞至 1m 高度,保持该高度并以边长为 0.5m 的正方形轨迹进行移动,飞行一圈回到原点后降落

  9. 飞行结束后,可通过 QGroundControl 下载日志(使用数传下载日志速度较慢,建议使用 USB 连接下载日志),并使用 PlotJugglerFlight Review 等工具加载日志针对具体情况进行分析

  10. 可通过修改脚本或编写自定义需求脚本,实现自定义控制任务

DroneKit 读取无人机状态信息(持续更新中)

DroneKit 脚本执行飞行任务(持续更新中)

Ardupilot 飞控二次开发(Ubuntu)

搭建开发环境

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 功能源代码

Ardupilot 代码架构学习可参考:https://ardupilot.org/dev/docs/learning-ardupilot-introduction.html

1.基础架构

持续更新中……

PX4 飞控二次开发(Ubuntu)

搭建开发环境

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 功能源代码

PX4-Autopilot 代码架构学习可参考:https://docs.px4.io/main/en/

持续更新中……

飞控固件烧录

参考此篇教程,可以烧录Ardupilot或者PX4固件到飞控:

飞控固件烧录教程(Ardupilot/PX4/Betaflight/INAV)

微空无人机视觉导航系列教程

1.飞行平台搭建

2.飞控基础设置(Ardupilot及PX4)

3.机载电脑环境配置(树莓派4B+T265)

4.树莓派镜像迁移使用

5.视觉导航设置与飞行实践(Ardupilot及PX4)

6.双目VIO算法实现与应用(树莓派5+D435i)

7.拓展应用案例

上一个
微空MVD35双目视觉开源飞行平台用户手册
下一个
微空助手下载和使用说明
最近修改: 2024-11-28Powered by