APM固件编译和仿真

事情起因

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

一,环境搭建

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

#安装git工具和相关依赖项
sudo apt-get update

sudo apt-get install git

sudo 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 #降落

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科聪控制系统典型应用车型 —— 料箱机器人

料箱机器人即料箱AGV是一种智能化物流搬运设备&#xff0c;它可以代替人力完成出库入库和搬运工作&#xff0c;可根据出入库生产出货需求&#xff0c;将货物从起点运送到终点&#xff0c;自动柔性完成货到人货到点的操作。 提升仓储和物流效率的自动化利器 料箱机器人的投用能…

yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)

要在YOLOv5中添加测距和测速功能&#xff0c;您需要了解以下两个部分的原理&#xff1a; 单目测距算法 单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法&#xff08;如立体匹配&#xff09;和基于深度学习的方法&#xff08;如神经网…

C语言--字符函数与字符串函数

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由残念ing 原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位→点赞&#…

leetcode---76. 最小覆盖子串 [C++/滑动窗口+哈希表]

原题&#xff1a;76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 此题在这道题的基础上进行理解会更简单 leetcode --- 30. 串联所有单词的子串[C 滑动窗口/双指针]-CSDN博客 本题要求在s字符串中找到含有t字符串所有字符的最短子串。 也就是…

【lesson17】MySQL表的基本操作--表去重、聚合函数和group by

文章目录 MySQL表的基本操作介绍插入结果查询&#xff08;表去重&#xff09;建表插入数据操作 聚合函数建表插入数据操作 group by&#xff08;分组&#xff09;建表插入数据操作 MySQL表的基本操作介绍 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#x…

XAgent的部署及运行

源代码clone git clone config 文件的修改 在XAgent源码目录&#xff0c;运行 vi .env&#xff0c; 修改以下配置条目 CONFIG_FILEassets/gpt-3.5-turbo_config.ymlpython环境 python >3.10 安装conda&#xff0c;通过conda激活python3.10的环境 wget https://repo.a…

josef约瑟 跳合位、电源监视继电器 HRTH-Y-2H2D DC220V

系列型号&#xff1a; HRTH-Y-2H2D-X-T跳位监视、合位监视、电源监控继电器&#xff1b; HRTH-Y-2Z-X-T跳位监视、合位监视、电源监控继电器&#xff1b; HRTH-Y-2H-X-T跳位监视、合位监视、电源监控继电器&#xff1b; HRTH-J-2H2D-X-T跳位监视、合位监视、电源监控继电器…

Axure中继器的基本使用

介绍中继器 在 Axure 中&#xff0c;中继器是一种交互设计元素&#xff0c;用于在不同页面之间传递数据或触发特定的事件。它可以帮助模拟真实的用户交互流程和页面之间的传递逻辑&#xff0c;继承关系用于描述两个元件之间的父子关系。通过使用继承关系&#xff0c;您可以创建…

Linux的SSH(远程登录)

SSH定义&#xff1a; SSH&#xff08;Secure Shell 的缩写&#xff09;是一种网络协议&#xff0c;用于加密两台计算机之间的通信&#xff0c;并且支持各种身份验证机制。 实务中&#xff0c;它主要用于保证远程登录和远程通信的安全&#xff0c;任何网络服务都可以用这个协议…

深度学习笔记_7经典网络模型LSTM解决FashionMNIST分类问题

1、 调用模型库&#xff0c;定义参数&#xff0c;做数据预处理 import numpy as np import torch from torchvision.datasets import FashionMNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn.functional as F im…

自定义 spring-boot组件自动注入starter

1&#xff1a;创建maven项目 2&#xff1a;pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati…

stm32与Freertos入门(二)移植FreeRTOS到STM32中

简介 注意&#xff1a;FreeRTOS并不是实时操作系统&#xff0c;而是分时复用的&#xff0c;只不过切换频率很快&#xff0c;感觉上是同时在工作。本次使用的单片机型号为STM32F103C8T6,通过CubeMX快速移植。 一、CubeMX快速移植 1、选择芯片 打开CubeMX软件&#xff0c;进行…

轻量封装WebGPU渲染系统示例<53>- 多盏灯灯光照在地面的效果

WebGPU实时渲染实现模拟多盏灯的灯光照在地面的效果灯光效果 。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MultiLightsTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源…

Ribbon负载均衡原理、策略、饥饿加载

Ribbon负载均衡原理、策略、饥饿加载 MapperScan("cn.itcast.order.mapper") SpringBootApplication public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}/*** 完成创建RestTemplate&am…

虾皮 选品:如何在虾皮平台上进行有效的选品?

在虾皮&#xff08;Shopee&#xff09;这个跨境电商平台上&#xff0c;选品对于卖家来说至关重要。选品决定了店铺的销售额和竞争力。为了帮助卖家进行选品&#xff0c;虾皮平台提供了一些免费的选品工具&#xff0c;如知虾。同时&#xff0c;还有一些第三方选品工具&#xff0…

支持可视化提取变量,Apipost配置变量不要太简单

在调试接口时我们需要将响应结果中的某个字段配置为环境变量在其他接口中引用&#xff0c;之前在Apipost中需要配置脚本而在最近Apipost后执行操作中可以进行可视化的断言和变量提取&#xff0c;无需配置繁琐脚本。 这里我们在登录接口下配置一条Token环境变量&#xff0c;在后…

去面试性能测试工程师必问的问题,

性能测试的三个核心原理是什么&#xff1f; 1.基于协议。性能测试的对象是网络分布式架构的软件&#xff0c;而网络分布式架构的核心是网络协议 2.多线程。人的大脑是单线程的&#xff0c;电脑的cpu是多线程的。性能测试就是利用多线程的技术模拟多用户去负载 3.模拟真实场景。…

外卖系统海外版:技术智能引领全球美食新潮流

随着全球数字化浪潮的推动&#xff0c;外卖系统海外版不仅是食客们品味美食的便捷通道&#xff0c;更是技术智能在美食领域的引领者。本文将深入剖析其背后的技术实现&#xff0c;揭开代码带来的美食革新。 多语言支持&#xff1a;构建全球美食沟通桥梁 def multilingual_su…

机器人也能干的更好:RPA技术的优势和应用场景

RPA是什么&#xff1f; 机器人流程自动化RPA&#xff08;Robotic Process Automation&#xff09;是一种自动化技术&#xff0c;它使用软件机器人来高效完成重复且有逻辑性的工作。近年来&#xff0c;随着人工智能和自动化技术的不断发展和普及&#xff0c;RPA已经成为企业提高…