1、安装dronekit,dronekit-sitl, mavproxy
pip install dronekit
pip install dronekit-sitl
pip install mavproxy

dronekit: 一种用于无人机控制的python库。
dronekit-sitl:一种本地仿真工具,相当于本地虚拟化了一个无人机。
mavproxy:数据转发软件(类似于插线板的感觉,一个输入,多个相同的输出)。

2、启动SITL,并配置home点、机型:

打开一个Anaconda prompt
首先激活相应的环境

activate superglue

然后运行如下命令:

dronekit-sitl  copter --home=31.9386595,118.7898506,3,30 --model=quad

3、启动mavproxy数据转发服务

保持2中的Anaconda prompt处于运行状态,另打开一个Anaconda prompt窗口,运行如下命令:

python D:\Anaconda3\envs\superglue\Scripts\mavproxy.py  --master=tcp:127.0.0.1:5760  --out=127.0.0.1:14550  --out=127.0.0.1:14551

tcp:127.0.0.1:5760: SITL默认端口,作为mavproxy的输入,把输入数据转发到如下两个端口:
127.0.0.1:14550:本机地址14550端口,供本地python程序连接
127.0.0.1:14551:供QGroundControl连接

4、打开QGroundControl(可以用自己电脑的,也可以用另一台,但是需要修改参数),选择UDP连接,端口号选择14551

QGroundControl下载地址

https://github.com/mavlink/qgroundcontrol/releases/tag/v4.1.2


通讯成功之后,可以看到操场中间有一个无人机。

5、运行python程序,可以看到飞机的运动过程
#!/usr/bin/env python
# -*- coding: utf-8 -*-"""
© Copyright 2015-2016, 3D Robotics.
simple_goto.py: GUIDED mode "simple goto" example (Copter Only)
Demonstrates how to arm and takeoff in Copter and how to navigate to points using Vehicle.simple_goto.
"""from __future__ import print_function
import time
from dronekit import connect, VehicleMode, LocationGlobalRelative# 通过本地的14551端口,使用UDP连接到SITL模拟器
connection_string ='127.0.0.1:14551' #'tcp:127.0.0.1:5760'  #
print('Connecting to vehicle on: %s' % connection_string)
# connect函数将会返回一个Vehicle类型的对象,即此处的vehicle
# 即可认为是无人机的主体,通过vehicle对象,我们可以直接控制无人机
vehicle = connect(connection_string, wait_ready=True)# 定义arm_and_takeoff函数,使无人机解锁并起飞到目标高度
# 参数aTargetAltitude即为目标高度,单位为米
def arm_and_takeoff(aTargetAltitude):# 进行起飞前检查print("Basic pre-arm checks")# vehicle.is_armable会检查飞控是否启动完成、有无GPS fix、卡曼滤波器# 是否初始化完毕。若以上检查通过,则会返回Truewhile not vehicle.is_armable:print(" Waiting for vehicle to initialise...")time.sleep(1)# 解锁无人机(电机将开始旋转)print("Arming motors")# 将无人机的飞行模式切换成"GUIDED"(一般建议在GUIDED模式下控制无人机)vehicle.mode = VehicleMode("GUIDED")# 通过设置vehicle.armed状态变量为True,解锁无人机vehicle.armed = True# 在无人机起飞之前,确认电机已经解锁while not vehicle.armed:print(" Waiting for arming...")time.sleep(1)# 发送起飞指令print("Taking off!")# simple_takeoff将发送指令,使无人机起飞并上升到目标高度vehicle.simple_takeoff(aTargetAltitude)# 在无人机上升到目标高度之前,阻塞程序while True:print(" Altitude: ", vehicle.location.global_relative_frame.alt)# 当高度上升到目标高度的0.95倍时,即认为达到了目标高度,退出循环# vehicle.location.global_relative_frame.alt为相对于home点的高度if vehicle.location.global_relative_frame.alt >= aTargetAltitude * 0.95:print("Reached target altitude")break# 等待1stime.sleep(1)# 调用上面声明的arm_and_takeoff函数,目标高度10m
arm_and_takeoff(10)# 设置在运动时,默认的空速为3m/s
print("Set default/target airspeed to 3")
# vehicle.airspeed变量可读可写,且读、写时的含义不同。
# 读取时,为无人机的当前空速;写入时,设定无人机在执行航点任务时的默认速度
vehicle.airspeed = 3# 发送指令,让无人机前往第一个航点
print("Going towards first point for 30 seconds ...")
# LocationGlobalRelative是一个类,它由经纬度(WGS84)和相对于home点的高度组成
# 这条语句将创建一个位于南纬35.361354,东经149.165218,相对home点高20m的位置
point1 = LocationGlobalRelative(-35.361354, 149.165218, 20)# simple_goto函数将位置发送给无人机,生成一个目标航点
vehicle.simple_goto(point1)# simple_goto函数只发送指令,不判断有没有到达目标航点
# 它可以被其他后续指令打断,此处延时30s,即让无人机朝向point1飞行30s
time.sleep(30)# 发送指令,让无人机前往第二个航点
print("Going towards second point for 30 seconds (groundspeed set to 10 m/s) ...")
# 与之前类似,这条语句创建了另一个相对home高20m的点
point2 = LocationGlobalRelative(-35.363244, 149.168801, 20)# simple_goto将目标航点发送给无人机,groundspeed=10设置飞行时的地速为10m/s
vehicle.simple_goto(point2, groundspeed=10)# 与之前一样,延时30s
time.sleep(30)# 发送"返航"指令
print("Returning to Launch")
# 返航,只需将无人机的飞行模式切换成"RTL(Return to Launch)"
# 无人机会自动返回home点的正上方,之后自动降落
vehicle.mode = VehicleMode("RTL")# 退出之前,清除vehicle对象
print("Close vehicle object")
vehicle.close()

注:可以在本机电脑上运行sitl和mavproxy,打开QGroundControl,然后在jetson nano板子上运行python程序,也能顺利使用。将python程序的ip地址和mavproxy中第一个out的ip地址改成板子的ip即可。

利用DRONEKIT-SITL + MAVPROXY + QGroundControl模拟飞行相关推荐

  1. Pixhawk无人机-ArduPilot 软件SITL仿真模拟飞行(SITL+MAVProxy)

    1 引言 本人是先看了多个博客实现了:在ubuntu下建立完整的ardupilot开发环境. 该文是基于搭建完编译环境后,也就是搭建好ardupilot的仿真环境实现的. 在文章: <Pixha ...

  2. Pixhawk无人机-ArduPilot 软件SITL仿真模拟飞行(SITL+Mission Planner结合)

    本文的目的是将SITL仿真结合Missionplanner地面站,之后再探索SITL仿真结合QGC地面站. Pixhawk无人机扩展教程(7)-SITL+MP/QGC运行教程中指出,QGC地面站是安装 ...

  3. 8in1模拟器v2模拟飞行_重新想象飞行模拟器:过去和现在

    8in1模拟器v2模拟飞行 本文是Microsoft的Web开发系列的一部分. 感谢您支持使SitePoint成为可能的合作伙伴. Apple于1980年推出了Flight Simulator的第一个 ...

  4. cesium教程7-航迹模拟(无人机轨迹模拟飞行)

    先看效果 航迹模拟-----模拟真实无人机飞行的轨迹和云台的拍摄方向,到达指定的拍摄点返回拍摄点的ID,用于显示对应拍摄点的照片或者视频 实现过程 创建一条轨迹和拍摄点 /*** @param {*} ...

  5. android 模拟飞行,安卓版模拟飞行 X Plane 9试玩

    2004年的圣诞节那天,我垂头丧气地坐在我家的廉价电脑前,盯着那老式的CRT显示器屏幕.我都不知道电脑里的模拟飞行游戏是正在安装,还是已经卡死了.电脑主机在桌子下面嗡嗡嗡地响,都快带不动这个庞然大物般 ...

  6. matlab如何模拟竹蜻蜓飞行,JSBSim_Matlab 将 与 进行联合仿真 模拟飞行计算 247万源代码下载- www.pudn.com...

    文件名称: JSBSim_Matlab下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Visual C++ 文件大小: 7092 KB 上传时间: 2015-07-26 下载次数: ...

  7. 微软模拟飞行2020服务器多少内存,《微软模拟飞行2020》配置公开,想玩爽还需玩家加大投入...

    作为众多硬核玩家在2020年最为期待的游戏之一,<微软模拟飞行2020>的所有细节公开都广受关注.要知道,这款游戏除了具有顶级的画面外,其对全球航线.机场和即使天气的模拟演算都堪称专业级. ...

  8. visual studio 代码提示_《微软模拟飞行2020》代码暗示下一代Xbox或支持VR

    (映维网 2020年10月24日)<微软模拟飞行2020>已经开始内测VR功能,并且将头显支持范围扩大到支持3Glasses S2等.但更令社区感到兴奋的是,PC游戏的代码变化引起了人们对 ...

  9. 模拟飞行 android,RFS模拟飞行pro安卓版

    RFS模拟飞行pro安卓版是一款十分真实的飞行与驾驶体验,在这里更多的危险也即将要发生了,充满了危机的时刻.更加真实的冒险也在等待你的完成哦,属于你的热血游戏与体验模式,全新的与充满了危险的时刻也在等 ...

  10. 盲僧一键r闪用什么设置_美加狮R.A.T. PRO X3至尊版带你畅玩模拟飞行

    很多模拟飞行或者皇牌空战的玩家们都追求在游戏过程中的真实驾驶体验,渴望通过游戏来实现自己的飞行梦.但普通鼠标的左右键及滚轮并不能带给玩家逼真的体验,美加狮全新发布的鼠标R.A.T. PRO X3至尊版 ...

最新文章

  1. 为什么说「中台」程序员未来会最值钱?
  2. vue+elementUI项目的踩坑~~持续更新
  3. 微软正在改进 Windows 命令行:为 Linux 用户敞开大门
  4. 认识 android-job
  5. 高基数特征的预处理方式
  6. 第三方支付异步通知的陷阱
  7. java json注解_返回json用什么注解
  8. linux修正磁盘错误,找到了linux分区顺序错乱修复方法
  9. mysql 两张大表关联_MySQL的DropTable影响分析和最佳实践
  10. JavaBean与Map相互转换
  11. c语言中调用平均成绩,C语言、用调用函数、输入3个学生5门课程的成绩分别用函数求每个学生平均分每门课的平均分...
  12. 数字化方法基础(一)_基础操作与生成四面体
  13. Charles使用备注[1]
  14. Unity Animator人物模型动画移动偏移
  15. 重装系统后小喇叭显示未安装音频输出设备
  16. A股市场低开现象研究
  17. 神经网络能用来干什么_秒懂神经网络---震惊!!!神经网络原来可以这么简单!...
  18. 企业电子招投标系统简介 招投标系统源码 定制化服务 二次开发 java招投标系统 招投标系统功能设计
  19. sql select半角html全角,SQL转换全角和半角函数
  20. Node.js Cannot find module 'xxx' 问题解决

热门文章

  1. 自动化/控制工程专业英语01——什么是控制[考研/保研面试]
  2. Python3之标准库
  3. Linux环境下右键无法新建文档的解决方法——Ubuntu 16.x
  4. html 在线申请,25个在线工作申请免费HTML的简历模板
  5. 主线剧情0.0-Linux学习资源大综合
  6. 最近发现的一个c# winform的一个很好用很强大的excel控件 reogrid控件
  7. 【刘润五分钟商学院】156对对抗思考到平行思考
  8. 控制系统设计专题(二)——自抗扰控制算法(上)
  9. 将.pem转换为.crt和.key
  10. 告别手机自带浏览器,分享2022年好用的手机浏览器