windows下使用 SITL 模拟飞行——APM

2023-05-16

1、环境配置

按照官网教程配置环境,链接:https://ardupilot.org/dev/docs/building-setup-windows-cygwin.html#building-setup-windows-cygwin

按照步骤安装即可。都安装在默认目录会比较好,之前尝试cygwin安装在D盘,git这些功能出了点问题。cygwin默认目录为:C:\cygwin64

1.1 安装 Cygwin

下载安装包: www.cygwin.com/install.html
方案1:将安装包放入 C:\Users\Administrator,然后打开cmd,输入

setup-x86_64.exe -P autoconf,automake,ccache,gcc-g++,git,libtool,make,gawk,libexpat-devel,libxml2-devel,python36,python36-future,python36-lxml,python36-pip,libxslt-devel,python36-devel,procps-ng,zip,gdb,ddd

安装过程可能遇到无法下载的问题,开 VPN 或者网上搜 cygwin 中国镜像地址,粘如URL,add即可,如:http://mirrors.163.com/cygwin/

然后一路默认,下一步…

方案2:一个一个选,安装步骤“Cygwin Installer: Select Package Dialog”可能比较繁琐,支持方案1。有一个简便教程:http://www.nufeichuiyun.com/?page_id=121
题主尝试失败了,有兴趣的可以尝试一下

在这里插入图片描述
按照教程安装好 cygwin,如果需要卸载,可以参考链接:
https://blog.csdn.net/some_times/article/details/21469551?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

1.2 安装 GCC

下载安装包: firmware.ardupilot.org/Tools/STM32-tools
打开一路默认,直到最后一步,选上 “Add path to environment variable”
在这里插入图片描述

1.3 安装 MAVProxy

下载安装包: http://firmware.ardupilot.org/Tools/MAVProxy/
下载最新版: MAVProxySetup-latest.exe.
打开一路默认

1.4 配置python

打开cygwin然后关闭,以生成 initialisation files
打开cygwin,输入:

ln -s /usr/bin/python3.6 /usr/bin/python
ln -s /usr/bin/pip3.6 /usr/bin/pip
pip install empy pyserial pymavlink

第三步可能会很卡,下载失败,如图:多试几次即可,也可以尝试开VPN
在这里插入图片描述
这步会卡很久,等待
在这里插入图片描述

在cygwin窗口下载 ardupilot 源码:

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

此处做一个提示:git 到的 ardupilot 文件夹不能随便复制粘贴,有的隐藏文件之类的东西粘不走会导致无法编译运行,两个办法可以解决:
1)重新 git 新的,一定没问题
2)先完成编译,跑一遍,然后整个 ardupilot 文件夹就可以粘贴并备份了

2、编译和运行

进入 cygwin 的根目录,找到文件 “.bashrc”, 如题主目录为:“D:\cygwin64\home\ling”。在 “.bashrc” 末尾添加:

export PATH = "$PATH:$HOME/ardupilot/Tools/autotest/"

之后编译运行即可,参考官网教程:
https://github.com/ArduPilot/ardupilot/blob/master/BUILD.md
编译 CubeBlack,copter:

cd ardupilot
./waf configure --board CubeBlack
./waf copter

编译其他板子参照官网教程
特别说明,SITL中,无需生成固件,第一次编译以后修改程序,可以省略这两个步骤:

./waf configure --board CubeBlack
./waf copter

以下是题主运行步骤:
参考官网教程:https://ardupilot.org/dev/docs/copter-sitl-mavproxy-tutorial.html#copter-sitl-mavproxy-tutorial

(1)、四旋翼

cd ardupilot/ArduCopter/
../Tools/autotest/sim_vehicle.py --map --console

在打开的 mavproxy 控制输入 输入指令,比如实现切到guided模式,解锁,起飞至20米,降落:

mode guided
arm throttle
takeoff 20
mode land

可以打开 mission planner 地面站,将通过UDP协议自动连接

如果需要修改起始位置,cygwin启动的命令行加入 "-L 位置“,如旧金山机场 KSFO:

../Tools/autotest/sim_vehicle.py --map --console  -L KSFO

如需增加初始位置:可在cygwin64\home\ling\ardupilot\Tools\autotest\locations.txt 中添加,格式见 txt 文件第一行(#NAME=latitude,longitude,absolute-altitude,heading),如在末尾添加:

AirPort1=30,30,200,20

保存调用即可

(2)、固定翼

cd ~/ardupilot/ArduPLane/
../Tools/autotest/sim_vehicle.py --map --console -f plane

在打开的 mavproxy 控制输入 输入指令,比如实现切到takeoff模式,解锁,切到RTL模式(绕home点转圈),切到guided模式(默认以当前点为圆心转圈):

mode takeoff
arm throttle
mode rtl
mode guided

如图:
在这里插入图片描述
(3)、垂直起降固定翼(VTOL)

cd ~/ardupilot/ArduPLane/
../Tools/autotest/sim_vehicle.py --map --console -f quadplane

可以按照固定翼模式起飞,现切到takeoff模式,解锁:

mode takeoff
arm throttle

可以飞 QuadPlane AUTO Missions
参考官网教程:https://ardupilot.org/plane/docs/quadplane-auto-mode.html
打开 mission planner,航点设置如下:
在这里插入图片描述

3、开发,修改固件

参考官网 : https://ardupilot.org/dev/docs/learning-the-ardupilot-codebase.html

四旋翼进入 ardupilot\ArduCopter,修改 Copter.h和 Copter.cpp,重新编译执行
固定翼和VTOL,进入 ardupilot\ArduPlane,修改 Plane.h 和 ArduPlane.cpp,重新编译执行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下使用 SITL 模拟飞行——APM 的相关文章

随机推荐

  • 怒飞垂云视频教程 四、建立软件仿真环境

    原文链接 xff1a http www nufeichuiyun com p 61 256 怒而飞 xff0c 其翼若垂天之云 xff01 我是怒飞 QQ xff1a 3500985284
  • docker:国内 hub 镜像地址

    七牛云
  • C++读取STL模型文件

    数据格式 二进制的数据格式 xff1a 二进制STL文件用固定的字节数来给出三角面片的几何信息 80 80个字节的文件头 xff0c 用于存贮文件名 4 4 个字节的int描述模型的三角面片个数 小端存储 50 n 一个三角面片占用固定的5
  • mNetAssist(arm64)linux下图形界面的网络调试助手

    linux下图形界面的网络调试助手mNetAssist 网上均为x86 amd处理器的 想在arm64上使用 所以 自己down了源码编译了一遍 方便大家使用 项目地址 码云 https gitee com justsure m net a
  • 激光SLAM建图过程中的问题MessageFilter [target=odom_combined ]:Dropped 100.00% of messages so far.,解决方案

    最近在和师弟用kobuki底盘进行SLAM建图的过程中遇到一个比较棘手的问题 xff0c 一直没有解决 xff0c 直到今天我在仿真环境中也碰到了 WARN 1618301922 711685031 2351 764000000 Messa
  • Linux 内核优化-调大TCP最大连接数

    一 tcp 概述 1 服务器如何标识tcp连接 xff1f 在tcp应用中 xff0c server事先在某个固定端口监听 xff0c client主动发起连接 xff0c 经过三路握手后建立tcp连接 在确定最大连接数之前 xff0c 先
  • 飞书妙记用法小结

    企业升级后 xff0c 可以到达10G 妙记的2G不是指代识别容量 xff0c 而是指代源文件容量 额度满了以后 选择权益数据 那么如果容量满了的话 xff0c 怎么释放呢 xff1f 需要删除回收站里面的所有文件 xff0c 才可以释放
  • 3-1利用文件流复制文件内容-Java

    题目 xff1a 编程利用文件流把一个文本文件中的内容复制到另外一个文件中 解答 xff1a Test类 xff1a package Experiment 3 Question 1 import java io public class T
  • C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)

    将类型名作为强制类型转换运算符的做法是C语言的老式做法 xff0c C 43 43 为保持兼容而予以保留 C 43 43 引入了四种功能不同的强制类型转换运算符以进行强制类型转换 xff1a static cast reinterpret
  • 字符数组的初始化与赋值

    代码编译运行环境 xff1a VS2017 43 Win32 43 Debug 1 字符数组的初始化方式 C语言中表示字符串有两种方式 xff0c 数组和指针 xff0c 字符数组是我们经常使用的方式 变量的定义包括指明变量所属类型 变量名
  • XML和HTML之间的差异

    XML 不是 HTML 的替代 XML 和 HTML 为不同的目的而设计 xff1a XML 被设计用来传输和存储数据 xff0c 其焦点是数据的内容 HTML 被设计用来显示数据 xff0c 其焦点是数据的外观 HTML 旨在显示信息 x
  • 线程、线程句柄、线程ID

    什么是句柄 xff1a 句柄是一种指向指针的指针 我们知道 xff0c 所谓指针是一种内存地址 应用程序启动后 xff0c 组成这个程序的各对象是住留在内存的 如果简单地理解 xff0c 似乎我们只要获知这个内存的首地址 xff0c 那么就
  • Modbus通信协议

    一 Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言 通过此协议 xff0c 控制器相互之间 控制器经由网络 xff08 例如以太网 xff09 和其它设备之间可以通信 它已经成为一通用工业标准 有了它 xff0
  • 77组合

    给定两个整数 n 和 k xff0c 返回 1 n 中所有可能的 k 个数的组合 示例 输入 n 61 4 k 61 2 输出 2 4 3 4 2 3 1 2 1 3 1 4 最容易想到的应该是回溯 xff0c 更多题目思路及代码见 xff
  • 结构体内数据元素对齐

    默认情况下 xff0c 为方便结构体内元素的访问于管理 xff0c 当结构体内的数据元素的长度小于处理器的位数的时候 xff0c 便以结构体内的最长数据元素为对齐单位 xff0c 即结构体的长度一定为最长数据元素的长度的整数倍 如果结构体内
  • 关于stm32中串口重定向问题详解(找个时间好好理解下)

    usart这部分代码我也是从网上copy出来的 xff0c 一下是作者的解释 xff1a 简单地说 xff1a 想在mdk 中用printf xff0c 需要同时重定义fputc函数和避免使用semihosting 半主机模式 xff09
  • 缓冲区溢出(buffer overflow)避免方法

    什么是缓冲区溢出 xff1f copy数据进buffer时 xff0c 数据长度超过buffer中的剩余空间 缓冲区溢出的危害 xff1f 缓冲区溢出 xff0c 结果随机 xff0c 可能会导致程序功能不正常 xff0c 也可能导致程序崩
  • 【嵌入式系统应用开发】ROS环境安装配置与入门实操

    目录 前言1 ROS简介2 ROS软件安装2 1 添加ROS软件源2 2 添加密钥2 3 安装ROS2 4 初始化rosdep2 5 设置环境变量2 6 安装rosinstall 3 ROS初试 小海龟3 1 启动ROS Master3 2
  • 头文件包含的合理顺序

    如果包含顺序不当 xff0c 可能出现包含顺序依赖问题 xff0c 甚至引起编译错误 推荐如下顺序 xff1a 在头文件中 xff1a xff08 1 xff09 包含当前工程中所需要的自定义头文件 xff08 顺序自定 xff09 xff
  • windows下使用 SITL 模拟飞行——APM

    1 环境配置 按照官网教程配置环境 xff0c 链接 xff1a https ardupilot org dev docs building setup windows cygwin html building setup windows