苍穹四轴DIY”微信公众号培训教材对Pixhawk飞机加装Raspberry Pi做了介绍,关于软件仿真,介绍了在Ardupilot飞控系统软件仿真下,运行树梅派上的Dronekit飞控应用程序,此文介绍的是在PX4飞控系统的软件仿真环境下,运行树梅派上的MAVSDK-Python飞控应用程序。
基本仿真环境:
在PC或笔记本计算机上安装的操作系统是ubuntu 20.04.2,也可以是16.0.4,PX4的软件仿真环境安装在这台机器上。
在树梅派(比如:Raspberry Pi 3B)上安装的是ubuntu-mate desktop 16.04.2(可在这个地址下载:https://releases.ubuntu-mate.org/archived/xenial/armhf/),飞控应用程序将安装在这台机器上。
另外在树梅派上需要安装python3.6,因为MAVSDK-Python这套程序需要3.6以上版本的python,执行命令:sudo apt install python3.6。
基本仿真环境的建立以及如何在笔记本上与Rasberry Pi建立wifi连接,可参考微信公众号“苍穹四轴DIY”的培训教材文章:《Pixhawk无人机扩展教程(2)---树梅派安装ubuntu-mate系统及必要的设置》。
按以以下步骤实现树梅派上的MAVSDK-Python飞控应用程序控制软件仿真环境下的PX4飞控系统:
1. 在PC或笔记本计算机上(假设:IP地址是192.168.3.12)安装PX4开发环境
参考px4官网文章:https://docs.px4.io/master/en/dev_setup/building_px4.html
2. 在PC或笔记本计算机上(假设:IP地址是192.168.3.12)启动jmavsim软件仿真(SITL)
在PX4安装目录PX4-Autopilot中,输入命令:
make px4_sitl_default jmavsim
3. 在PC或笔记本计算机上(假设:IP地址是192.168.3.12)启动地面站(如果你不想看3D显示效果,这项可省略)
进入QGroundControl安装目录中,输入命令:
./QgroundControl.AppImage
在QGroundControl上检查参数:MAV_BROADCAST,应置为Always broadcast。
4. 在PC或笔记本计算机上(假设:IP地址是192.168.3.12)安装mavlink-router
参考mavlink-router官网文章:https://github.com/mavlink-router/mavlink-router
5. 在PC或笔记本计算机上(假设:IP地址是192.168.3.12)启动mavlink-router
在mavlink-router目录中,输入命令:
./mavlink-routerd -e 192.168.3.11:14540 0.0.0.0:14540
或者
./mavlink-routerd -e 192.168.3.11:14540 127.0.0.1:14540
注:mavlink-router的作用是在PC或笔记本计算机与Raspberry Pi之间建立基于UDP的通讯连接,也就是将192.168.3.12:14540与192.168.3.11:14540之间建立连接(udp信息的路由)。
6. 在树梅派(假设:IP地址是192.168.3.11)上安装MAVSDK-Python
参考MAVSDK官网文章:https://mavsdk.mavlink.io/develop/en/getting_started/installation.html
注:MAVSDK-Python官网参考材料中用pip的地方可用python3.6 -m pip代替。
7. 在树梅派(假设:IP地址是192.168.3.11)上手动启动mavsdk_server
执行:
./mavsdk_server -p 50051
注:
a. 如果不手动启动mavsdk_server, 应用程序与mavsdk_server之间会遇到连接不稳定的情况,原因不明。
b. 我的mavsdk_server版本(arm版)是v0.36.0
8. 修改MAVSDK-Python目录下examples/takeof_and_land.py文件
将
drone = System()
改为:
drone = System(mavsdk_server_address="localhost",port=50051)
然后执行:
python3.6 takeoff_and_land.py
可观察QGroundControl飞行界面以及jmavsim 3D显示,解锁,起飞,飞航线,降落,上锁。