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.mzph.cn/news/823380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十三章 使用深度和法线纹理

获取深度和法线纹理 背后的原理 深度纹理是一张渲染纹理,它里面存储的像素值不是颜色,而是一个高精度的深度值。深度值范围是[0, 1],非线性分布的。这些深度值来自于顶点变换后得到的归一化的设备坐标(NDC)。一个模型想要被绘制在屏幕上,需要把它的顶点从模型空间变换到齐…

嵌入式工程师如何摸鱼?

有老铁问我&#xff0c;做嵌入式开发要加班吗&#xff1f; 也不知道搞什么鬼&#xff0c;现在的年轻人对加班这么抵触。 我刚做开发那会&#xff0c;啥也不懂&#xff0c;每天基本都要加班到晚上7-9点不等&#xff0c;我并不抵触加班&#xff0c;因为早早回家&#xff0c;也没什…

时间同步服务项目练习

一.配置server主机要求如下&#xff1a; 1.server主机的主机名称为 ntp_server.example.com 2.server主机的IP为&#xff1a; 172.25.254.100 3.server主机的时间为1984-11-11 11&#xff1a;11&#xff1a;11 4.配置server主机的时间同步服务要求可以被所有人使用 二.设定cli…

【保姆级】2024年OnlyFans订阅指南

OnlyFans是一个独特的社交媒体平台&#xff0c;它为创作者和粉丝提供了一个互动交流的空间。通过这个平台&#xff0c;创作者可以分享他们的独家内容&#xff0c;而粉丝则可以通过订阅来支持和享受这些内容。如果你对OnlyFans感兴趣&#xff0c;并希望成为其中的一员&#xff0…

Delphi Xe 10.3 钉钉SDK开发——审批流接口(获取表单ProcessCode)

开发钉钉审批流时&#xff0c;需要用到钉钉表单的Processcode&#xff0c;有两种方法 &#xff1a; 一、手动获取&#xff1a; 管理员后台——审批——找到对应的表单&#xff1a;如图&#xff1a; ProcessCode后面就是了&#xff01; 二、接口获取&#xff1a;今天的重点&a…

JDK8垃圾回收机制

导读 JDK8&#xff08;Java Development Kit 8&#xff09;的垃圾回收机制是Java语言内存管理的重要组成部分&#xff0c;它负责自动回收不再使用的对象&#xff0c;释放内存空间&#xff0c;从而防止内存泄漏和内存溢出。下面将对JDK8的垃圾回收机制进行详细的解析。 一、垃…

机器学习周报第37周

目录 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection1.1 摘要1.2 背景1.3 论文模型1.4 网络设计1.5 YOLO的局限性1.6 实现代码 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection 1.1 摘要 YOLO是一种新…

JDBC入门

JDBC java database connectivity: 就是使用java语言操作关系型数据库的一套API

Pytest测试用例中的mark用法(包含代码示例与使用场景详解)

在软件开发中&#xff0c;测试是确保代码质量和功能稳定性的重要环节。Python作为一门流行的编程语言&#xff0c;拥有丰富的测试工具和框架&#xff0c;其中pytest是其中之一。pytest提供了丰富的功能来简化测试用例的编写&#xff0c;其中的mark功能允许我们对测试用例进行标…

LeetCode———100——相同的树

目录 ​编辑 1.题目 2.解答 1.题目 . - 力扣&#xff08;LeetCode&#xff09; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&…

【数据挖掘】实验8:分类与预测建模

实验8&#xff1a;分类与预测建模 一&#xff1a;实验目的与要求 1&#xff1a;学习和掌握回归分析、决策树、人工神经网络、KNN算法、朴素贝叶斯分类等机器学习算法在R语言中的应用。 2&#xff1a;了解其他分类与预测算法函数。 3&#xff1a;学习和掌握分类与预测算法的评…

《QT实用小工具·二十七》各种炫酷的样式表

1、概述 源码放在文章末尾 该项目实现了各种炫酷的样式表&#xff0c;如单选、多选、按钮、日历、表格、下拉框、滚轮等&#xff0c;下面是项目demo演示&#xff1a; 项目部分代码如下&#xff1a; #include "frmmain.h" #include "ui_frmmain.h" #inc…

从入门到精通C++之类和对象(续)

目录 初始化列表构造函数&#xff1f;拷贝构造&#xff1f;浅谈explicit关键字友元 内部类static成员总结 初始化列表 引入初始化列表&#xff1a;简化代码&#xff0c;提高效率 在编程中&#xff0c;初始化列表是一种用于在创建对象时初始化成员变量的快捷方式。通过初始化列…

数据结构(七)——B树和B+树

7.4.1_1 B树 5叉查找树 //5叉排序树的结点定义 struct Node {ElemType keys[4]; //最多4个关键字struct Node &child[5]; //最多5个孩子int num; //结点中有几个关键字 }; 如何保证查找效率&#xff1f; eg:对于5叉排序树&#xff0c;规定…

校园智能水电预付费管理系统

校园智能水电预付费管理系统是一种专为学校水电资源管理而设计的智能化系统&#xff0c;旨在提供全面的水电资源管理解决方案&#xff0c;满足校园管理者对水电资源管理的需求。该系统整合了先进的智能技术和云计算&#xff0c;为校园管理者提供了实时监控、自动计费、节能管理…

Java面试八股之经验总结

我们先来聊聊面试的技巧吧&#xff0c;只是单纯的个人经验总结&#xff0c;如果大家觉得有道理&#xff0c;就选择性吸收一下就好了。如果觉得没用&#xff0c;可以直接跳过。 自我介绍一定要好好准备。我之前对自我介绍这部分也不是很重视&#xff0c;面试多了之后我发现&…

钉钉OA审批评论接口,如何@ 人并发送通知

钉钉OA审批评论接口&#xff0c;如何 人并发送通 问题描述&#xff1a; 相关接口&#xff1a;https://oapi.dingtalk.com/topapi/process/instance/comment/add 我希望在钉钉oa审批流程中&#xff0c;添加评论的同时通过“”或者其他方式提醒流程发起人去跟进审批工作。 但我…

数据寻址方式

立即数寻址速度>寄存器寻址>直接寻址 https://blog.csdn.net/qq_58099084/article/details/120602982

【Linux】Linux信号

目录 信号的概念 生活中的信号 Linux中的信号 kill命令 kill 命令的使用 常见的信号 命令行代码示例 注意事项 信号的处理方式 产生信号 信号的捕捉 信号捕捉示意图 内核如何实现信号捕捉 信号的捕捉与处理 小结 阻塞信号 信号在内核中的表示图 信号集操作函数…

Java时间戳转换全攻略:从1712560695839到日期

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、时间戳是什么&#xff1f;为什么需要它&#xff1f; 时间戳&#xff0c;简单来说&#xff0c;就是一个表示特定时间点的数字。在计算机科学中&#xff0c;时间戳是一个非常重要的概念&#xff0c;因为它们被广泛…