APM固件编译和仿真

事情起因

主要想对无人机APM固件进行仿真的算法验证,因实际飞行的过程实际验证太浪费飞机了,所以就先试用仿真对算法进行仿真开发。

一,环境搭建

环境搭建我建议参考官方英文教程,英文教程写的比较全,不懂可以自己使用软件翻译。

#安装git工具和相关依赖项
sudo apt-get updatesudo apt-get install gitsudo apt-get install gitk git-gui

(2)下载官方源码

git clone https://github.com/ArduPilot/ardupilot.git
cd ardupilot
git submodule init
git submodule update

(3)安装编译环境,源码里面提供了脚本,运行脚本即可安装好编译环境

Tools/environment_install/install-prereqs-ubuntu.sh -y

执行完结果如下所示
在这里插入图片描述
接着运行

. ~/.profile

情况提示:这里建议使用最新版的apm固件的环境安装脚本,因为旧版固件的安装脚本安装完环境后,能编译旧版固件,但不一定能编译新版固件
---------------------------------分界线-----------------------------------------------------------------------------------------------------
到这里我直接按照README.md进行运行

./waf configure --board sitl  
./waf copter #编译的是四旋翼,你也可以选择固定翼

直接给我报错,我也不知道什么原因,找了很多博客没有找到解决办法。报错如下:

Caught exception! 'dict' object has no attribute 'unknownScriptName'
Caught exception! 'dict' object has no attribute 'unknownScriptName'
.................此处省略很多字
Traceback (most recent call last):File "/home/mawei/ardupilot/modules/DroneCAN/dronecan_dsdlc/dronecan_dsdlc.py", line 195, in <module>assert not buildlist-builtlist, "%s not built" % (buildlist-builtlist,)
AssertionError: {'uavcan.tunnel.Protocol', 'uavcan.equipment.hardpoint.Status', 'com.hobbywing.esc.StatusMsg2', 'uavcan.equipment.gnss.Auxiliary', 'uavcan.protocol.NodeStatus', 'uavcan.equipment.camera_gimbal.GEOPOICommand', 'uavcan.equipment.air_data.AngleOfAttack', 'uavcan.equipment.air_data.Sideslip', 'ardupilot.gnss
dr
.................此处省略很多字
onecangen returned 1 error code
Waf: Leaving directory `/home/mawei/ardupilot/build/sitl'
Build failed-> task in 'dronecan' failed (exit status 1): {task 140138241604968: dronecangen .github,ardupilot,com,cuav,dronecan,mppt,tests,uavcan -> }(run with -v to display more information)	
git

checkout Copter-4.1
切换分支
git submodule update --init --recursive
在这里插入图片描述
再运行就可以
在这里插入图片描述

编译对应飞机的固件代码

./waf copter

开始正式仿真

前面都是对仿真环境的配置,接下来就是我们真正的仿真环境,因为我们需要使用gazebo仿真平台,所以打开终端,在下面运行如下语句。

#联合gazebo仿真的环境,如果你不使用gazebo,可以不需要
../Tools/autotest/sim_vehicle.py -f gazebo-iris --console --map

不用gazebo仿真,一样可以完成仿真,因为你的数据会在QGC地面站实时显示,如下方式
在这里插入图片描述
打开了仿真之后,我们换一个终端打开gazebo的仿真地图。

 gazebo --verbose worlds/iris_arducopter_runwayorld

在这里插入图片描述
输入起飞指令

mode guided # 引导模式
arm throttle # 解锁油门
takeoff 10 #起飞至10m高度
Land #降落

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286252.html

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

相关文章

【超图】SuperMap iClient3D for WebGL/WebGPU ——颜色(1)

作者&#xff1a;taco 在项目中通常会出现&#xff0c;高亮对象。给对象设置颜色的一些问题。那么针对颜色设置在超图的 iClient3D for WebGl/WebGPU 中又提供了哪些方式呢&#xff1f;本篇文章将介绍一些颜色的设置方法。以及一些颜色的参数设置。 在iClient3D for WebGl/WebG…

Java 8 中的 Stream:优雅的集合处理

Java 8 中的 Stream&#xff1a;优雅的集合处理 为什么需要 Stream&#xff1f;Stream 的特性Stream 基本操作1. 创建 Stream2. 中间操作2.1 过滤&#xff08;Filter&#xff09;2.2 映射&#xff08;Map&#xff09;2.3 截断&#xff08;Limit&#xff09; 3. 终端操作3.1 遍历…

干货教学!!!RHEL8中ansible中常用模块的使用

内容很长各位大老爷耐心观看 本章主要介绍ansible中最常见模块的使用 文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下 ansible 机器名 -m 模块x -a “模块的参数” 对被管理机器执行不同的操作&#xff0c;只需要调…

【Image】图像处理

计算机视觉 CV Perception 如自动驾驶领域。 只要是从所谓的图像当中去抽取信息的过程&#xff0c;我们都叫做Perception。 视觉检测可以涵盖二维检测&#xff0c;如车辆、人和信号灯的检测。另外&#xff0c;还可以控制三维信息&#xff0c;直接在三维空间中操作数据。 SL…

内网BUG管理系统本地部署并结合内网穿透实现异地远程访问

文章目录 前言1. 本地安装配置BUG管理系统2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射本地服务3. 测试公网远程访问4. 配置固定二级子域名4.1 保留一个二级子域名5.1 配置二级子域名6. 使用固定二级子域名远程 前言 BUG管理软件,作为软件测试工程师的必备工具之一。在…

Gartner发布2024 年技术提供商热门趋势:人工智能安全

GenAI 的采用有望带来商业收益&#xff0c;但也敲响了对其可能造成的危害的警报。产品领导者需要在透明度和安全性方面进行投资&#xff0c;以应对不断关注人工智能安全的监管和市场力量。 机会 随着人工智能产品在企业解决方案中的激增&#xff0c;负责任和安全的人工智能将越…

JVM虚拟机系统性学习-JVM调优实战之内存溢出、高并发场景调优

调优实战-内存溢出的定位与分析 首先&#xff0c;对于以下代码如果造成内存溢出该如何进行定位呢&#xff1f;通过 jmap 与 MAT 工具进行定位分析 代码如下&#xff1a; public class TestJvmOutOfMemory {public static void main(String[] args) {List<Object> list…

【Proteus仿真】【Arduino单片机】定时智能插座开关

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD16…

SQL进阶理论篇(十二):InnoDB中的MVCC是如何实现的?

文章目录 简介事务版本号行记录的隐藏列Undo LogRead View的工作流程总结参考文献 简介 在不同的DBMS里&#xff0c;MVCC的实现机制是不同的。本节我们会以InnoDB举例&#xff0c;讲解InnoDB里MVCC的实现机制。 我们需要掌握这么几个概念&#xff1a; 事务版本号行记录的隐藏…

unittest自动化测试断言方法的介绍

断言如同在测试用例上&#xff0c;类似于预期结果与实际结果是否一致&#xff0c;如果一致则表示测试通过&#xff0c;Assert断言很好的用于测试结果判断上,更灵活的对预期结果和实际结果进行对比&#xff0c;下面简单的介绍一下unittest的Assert断言 unittest中基础的assert断…

使用Windows批处理命令行和ImageMagick批量将文件夹中的图片转换为PDF文档的方法

目录 应用场景 实现思路 实现过程 1.下载安装imageMagick 2.遍历源文件夹 3.转换图片为pdf文档 4.最终执行的命令 5.结果验证 6.将以上命令改写为windows批处理文件 应用场景 图像是一种常见的数据。图片几乎是一个信息系统中必不可少的组成部分。为了方便阅读&…

机器学习ST股票预测模型(企业建模_论文建模定制服务_信用评分卡等多算法实现)

知己知彼&#xff0c;百战不殆&#xff1b;不知彼而知己&#xff0c;一胜一负&#xff1b;不知彼&#xff0c;不知己&#xff0c;每战必贻。--《孙子兵法》谋攻篇 ST股票 ST股票是指因连续两年净利润为负而被暂停上市的股票&#xff0c;其风险较高&#xff0c;投资者需要谨慎…