ArduPilot飞控之Gazebo + SITL + MP的Jetson Orin环境搭建

1. 源由

很简单,希望伴机电脑上天之前先进行相关验证工作,而验证顾名思义就是一个测试环境。然而测试就有大量的,显而易见的炸机,希望能在模拟环境中尽量多的炸机,只有这样,现场测试才能更加稳定可靠。

之前其实已经有了一个基于Ubuntu22.04 LTS的笔记本Laptop环境,尽管电脑是10年前的老电脑,但是还是基本可以用的。

为什么要切换到Jetson Orin的主要原因是:

  1. 后期需要大量GPU来做视频/图像分析
  2. 希望能模拟3D飞行环境(若有FPV视频影像更佳)
  3. 为搭建相对完整仿真环境奠定基础

(MP + Simulator(Jetson Orin) + AI(Jetson Orin) + CC(Companion Computer) + FlightControl(SITL) + RC + FPV)

2. Linux环境整理

Jetson Orin系统安装这里就不再展开,需要了解的朋友,可以详细参考:《Linux 36.2@Jetson Orin Nano之基础环境构建》

这里的更新系统,更多的是需要对系统进行一些软件包上的整理。

$ sudo apt-get update
$ sudo apt-get upgrade

比如:有的时候会出现一些依赖问题,或者多余的安装包,请使用以下指令进行清理。

$ sudo apt-get clean
$ sudo apt-get autoclean

3. 安装Gazebo环境

3.1 安装Gazebo

Gazebo Garden安装

$ sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
$ sudo apt-get install gz-garden

3.2 安装插件

  • 下载插件
$ sudo apt install libgz-sim7-dev rapidjson-dev
$ git clone git@github.com:ArduPilot/ardupilot_gazebo.git
$ git log -n 1
commit 2589e7b4548b08709c3a66e81e98c459202c2c27 (HEAD -> main, origin/main, origin/HEAD)
Author: Rhys Mainwaring <rhys.mainwaring@me.com>
Date:   Mon Feb 5 13:06:18 2024 +0000

    Runway: fix render order issue causing vehicle model to be hidden

    Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
  • 安装插件
$ cd ardupilot_gazebo
$ mkdir build && cd build
$ cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
$ make -j4

3.3 配置插件

$ export GZ_SIM_SYSTEM_PLUGIN_PATH=<ardupilot_gazebo path>/build:$GZ_SIM_SYSTEM_PLUGIN_PATH
$ export GZ_SIM_RESOURCE_PATH=<ardupilot_gazebo path>/models:$HOME/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH
or
$ echo 'export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/ardupilot_gazebo/build:${GZ_SIM_SYSTEM_PLUGIN_PATH}' >> ~/.bashrc
$ echo 'export GZ_SIM_RESOURCE_PATH=$HOME/ardupilot_gazebo/models:$HOME/ardupilot_gazebo/worlds:${GZ_SIM_RESOURCE_PATH}' >> ~/.bashrc

3.4 测试Gazebo

$ gz sim --version
Gazebo Sim, version 7.0.0
Copyright (C) 2018 Open Source Robotics Foundation.
Released under the Apache 2.0 License.

$ gz sim -v4 -r shapes.sdf
$ gz sim -v4 -r iris_runway.sdf --render-engine ogre

4. 安装Arudpilot-SITL环境

4.1 克隆工程

$ git clone git@github.com:SnapDragonfly/ardupilot.git
$ git checkout Copter-4.5-lida2003
$ git log -n 1
commit b4407356a9193069c7f48b9dfed8785504968fca (HEAD -> Copter-4.5-lida2003, origin/Copter-4.5-lida2003)
Merge: 220478c733 913ec4b29c
Author: Daniel Li <lida_mail@163.com>
Date:   Thu Apr 11 07:44:19 2024 +0800

    Merge branch 'Copter-4.5' into Copter-4.5-lida2003

4.2 编译准备

$ cd ardupilot
$ git submodule update --init --recursive
$ Tools/environment_install/install-prereqs-ubuntu.sh -y

4.3 环境配置

$ pwd
/home/daniel/ardupilot

$ export PATH=$PATH:<ardupilot path>/Tools/autotest
$ export PATH=/usr/lib/ccache:$PATH

$ . ~/.profile

4.4 配置编译

$ ./waf configure --board sitl           # software-in-the-loop simulator
or
$ ./waf configure --board sitl --debug   # software-in-the-loop simulator with debug symbols
$ ./waf

4.5 测试运行

第一次测试运行,清理虚拟EEPROM参数

$ sim_vehicle.py -w -v ArduCopter

加载默认参数后,正常启动SITL模拟器

$ sim_vehicle.py --console --map -v ArduCopter
or
$ sim_vehicle.py --console --map -v ArduCopter --custom-location=30.218788,120.092316,281,90

5. 测试运行

5.1 十里琅珰 SITL+MP+MAVProxy模拟

  1. 十里琅珰远航飞行:BF飞行路线:BetaFlight Mark4 + 十里琅珰 + ELRS3.0 + 500mW_Dyn

  2. Jetson Orin运行起飞点模拟命令

$ sim_vehicle.py --console --map -v ArduCopter --custom-location=30.3051391,120.1556749,8.71000003814697,90
  1. MissionPlanner 连接 TCP端口5763 //TCP5760被MAVProxy占用了

  2. 录制的视频,将Jetson Orin上的Map地图和WIndows桌面的MissionPlanner组合叠加显示

Jetson Orin(MAVProxyMap + Ardupilot 4.5.1SITL) + MissionPlanner

5.2 iris_runway Gazebo+SITL+MP+MAVProxy模拟

  1. Gazebo环境
$ gz sim -v4 -r iris_runway.sdf
  1. SITL+MAVProxy环境
$ sim_vehicle.py --console --map -v ArduCopter
  1. Windows下的MP 连接 TCP端口5763 //TCP5760被MAVProxy占用了
  2. 录制的视频,将MissionPlanner组合叠加在Gazebo+MAVProxyMap上

Jetson Orin(Gazebo + Ardupilot 4.5.1SITL) + MissionPlanner

5.3 后续事项

整体来看效果不错,理论上断开SITL的TCP5760模拟端口,使用伴机电脑向SITL发出指令就能控制飞行器进行飞行。唯一需要考虑的是透过UART获取飞行信息并发出指令。

后续考虑的工作:

  • 能否将3D FPV视频也加进来 //RealFlight应该可以,哈哈。我可是有这个steam上的软件的:)
  • 构建新的模型地图&仿真环境 //ardupilot_gazebo有兴趣的可以看下
  • 透过TCP5760端口进行编程 //这个已经在后续的飞控规划中给出,至于硬件厂商能否做出来,其实并不重要,因为每个飞控都有串口,仅仅只是稳定性和速率的问题

关于Ardupilot模拟相关详细内容,请参阅:

6. 参考资料

【1】ArduPilot开源飞控系统之简单介绍
【2】PX4模块设计之一:SITL & HITL模拟框架
【3】PX4模块设计之七:Ubuntu 20.04搭建Gazebo模拟器
【4】PX4模块设计之八:Ubuntu 20.04搭建FlightGear模拟器
【5】PX4开发环境搭建–模拟器编译及QGroundControl & RC遥控模拟配置
【6】ArduPilot开源飞控之MAVProxy简介

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值