当前位置: 首页 > news >正文

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

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

  • 1. 源由
  • 2. Linux环境整理
  • 3. 安装Gazebo环境
    • 3.1 安装Gazebo
    • 3.2 安装插件
    • 3.3 配置插件
    • 3.4 测试Gazebo
  • 4. 安装Arudpilot-SITL环境
    • 4.1 克隆工程
    • 4.2 编译准备
    • 4.3 环境配置
    • 4.4 配置编译
    • 4.5 测试运行
  • 5. 测试运行
  • 6. 参考资料

1. 源由

很简单,希望伴机电脑上天之前先进行相关验证工作,而验证工作希望透过一个测试环境。

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

  • ArduPilot飞控之ubuntu22.04-Gazebo模拟
  • ArduPilot飞控之ubuntu22.04-SITL安装
  • ArduPilot飞控之Mission Planner模拟

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

  1. 需要大量GPU来做视频/图像分析
  2. 希望能模拟3D飞行环境
  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
$ 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 -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 +0800Merge 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. 测试运行

  • 十里琅珰模拟飞行:BF飞行路线:BetaFlight Mark4 + 十里琅珰 + ELRS3.0 + 500mW_Dyn

  • Jetson Orin运行起飞点模拟命令

$ sim_vehicle.py --console --map -v ArduCopter --custom-location=30.3051391,120.1556749,8.71000003814697,90
  • MissionPlanner 连接 TCP端口5763

  • 视频将Jetson Orin上的Map地图和MissionPlanner组合叠加显示

Jetson Orin(Gazebo + Ardupilot 4.5.1SITL) + MissionPlanner

整体来看效果不错,后面看看能否将3D环境也加进来,后续可以模拟障碍物中飞行。

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简介

http://www.lryc.cn/news/340692.html

相关文章:

  • 前端错误监控的方法有哪些
  • ✌粤嵌—2024/3/11—跳跃游戏
  • Docker入门实战教程
  • 数据结构初阶:二叉树(一)
  • 基于逻辑回归和支持向量机的前馈网络进行乳腺癌组织病理学图像分类
  • 35-4 fastjson漏洞复现
  • Qt-控件篇
  • 实现 Table 的增加和删除,不依赖后端数据回显
  • 个人网站开发记录(七)——三系统后端nodejs+express
  • C#入门理解设计模式的6大原则
  • Linux如何切换root用户
  • uniapp小程序编译报错
  • van-uploader 在app内嵌的webview中的一些坑
  • 使用Kotlin进行全栈开发 Ktor+Kotlin/JS
  • 数据结构_带头双向循环链表
  • 常见的垃圾回收器(下)
  • 网桥的原理
  • STM32 CAN过滤器细节
  • 网络编程(现在不重要)
  • 10-菜刀连接木马
  • Unity数据持久化—Json存档
  • 基于SSM的在线学习系统的设计与实现(论文+源码)_kaic
  • 数据库SQL语言实战(二)
  • idea错误地commit后如何处理
  • VRTK(Virtual Reality Toolkit)深入介绍
  • 【LeetCode热题100】【贪心算法】划分字母区间
  • 第二届数据安全大赛暨首届“数信杯”数据安全大赛数据安全积分争夺赛-东区预赛部分WP
  • 如何在Python中使用matplotlib库进行数据可视化?
  • 网工基础协议——TCP/UDP协议
  • ClickHouse--16--普通函数