UAV-5--链接飞控以及配置SITL以及ardupilot环境

2023-05-16

linux系统链接飞控以及配置SITL以及ardupilot环境

先更改本机host到对象的ip

image-20220506142641457

再进行ssh的链接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-meuTGFrN-1651933771950)(https://s2.loli.net/2022/05/07/eY3L84RVOZF6MrS.png)]

链接成功进入系统

image-20220506142746742

链接飞控

image-20220506143036254

from dronekit import connect 

# Connect to the Vehicle (in this case a UDP endpoint) 后边那个baud是波特率
vehicle = connect('/dev/ttyUSB0', wait_ready=True, baud=921600) 

# vehicle is an instance of the Vehicle class

print "Autopilot Firmware version: %s" % vehicle.version

print "Autopilot capabilities (supports ftp): %s" % vehicle.capabilities.ftp

print "Global Location: %s" % vehicle.location.global_frame

print "Global Location (relative altitude): %s" % vehicle.location.global_relative_frame

print "Local Location: %s" % vehicle.location.local_frame    #NED

print "Attitude: %s" % vehicle.attitude

print "Velocity: %s" % vehicle.velocity

print "GPS: %s" % vehicle.gps_0

print "Groundspeed: %s" % vehicle.groundspeed

print "Airspeed: %s" % vehicle.airspeed

print "Gimbal status: %s" % vehicle.gimbal

print "Battery: %s" % vehicle.battery

print "EKF OK?: %s" % vehicle.ekf_ok

print "Last Heartbeat: %s" % vehicle.last_heartbeat

print "Rangefinder: %s" % vehicle.rangefinder

print "Rangefinder distance: %s" % vehicle.rangefinder.distance

print "Rangefinder voltage: %s" % vehicle.rangefinder.voltage

print "Heading: %s" % vehicle.heading

print "Is Armable?: %s" % vehicle.is_armable

print "System status: %s" % vehicle.system_status.state

print "Mode: %s" % vehicle.mode.name    # settable

print "Armed: %s" % vehicle.armed    # settable

image-20220506143300072

SITL仿真实例

# -*- 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


# 改为当前连接的pixhawk飞控的端口 下边是IP端口
connection_string = '10.42.0.10:14550'
print('Connecting to vehicle on: %s' % connection_string)
# connect函数将会返回一个Vehicle类型的对象,即此处的vehicle  
# 即可认为是无人机的主体,通过vehicle对象,我们可以直接控制无人机  
vehicle = connect(connection_string,wait_ready=True,baud=921600)

# 定义arm_and_takeoff函数,使无人机解锁并起飞到目标高度  
# 参数aTargetAltitude即为目标高度,单位为米  
def arm_and_takeoff(aTargetAltitude):
    # 进行起飞前检查  
    print("Basic pre-arm checks")
    # vehicle.is_armable会检查飞控是否启动完成、有无GPS fix、卡曼滤波器  
    # 是否初始化完毕。若以上检查通过,则会返回True  
    while 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
        # 等待1s  
        time.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()

仿真会使用到git docker以及ardupilot组件

所以我们对本机进行环境配置

https://github.com/ArduPilot/ardupilot

前往仓库

获取git链接

gitclone

 git clone -b Copter-4.0.7 https://github.com/ArduPilot/ardupilot.git

image-20220506204503925

接着再拉取子模块

eleven@shiyideMacBook-Pro-2 ardupilot % git branch     
* (非分支)
eleven@shiyideMacBook-Pro-2 ardupilot % git checkout -b Copter-4.0.7
切换到一个新分支 'Copter-4.0.7'
eleven@shiyideMacBook-Pro-2 ardupilot % git branch
* Copter-4.0.7
eleven@shiyideMacBook-Pro-2 ardupilot % git submodule update --init --recursive

如果遇到失败fail情况

image-20220507145612549

可以直接前往地址下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g376B5aj-1651933771956)(https://s2.loli.net/2022/05/07/MUqCL1YdlKXyN4u.png)]

下载完毕后

进行环境自安装

eleven@shiyideMacBook-Pro-2 ardupilot % cd Tools 

eleven@shiyideMacBook-Pro-2 Tools % cd environment_install 

eleven@shiyideMacBook-Pro-2 environment_install % cat install-prereqs-mac.sh  

因为我是用的是mac所以选择mac的.sh文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Y1A88zs-1651933771957)(https://s2.loli.net/2022/05/07/hsMUHcziSAVIeKa.png)]

基本都是安装一些依赖包

可能会有网络问题装不上什么的

多执行几次更改自己的网络条件

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

UAV-5--链接飞控以及配置SITL以及ardupilot环境 的相关文章

  • ardupilot 日志分析《xKF1信息》

    目录 文章目录 目录 摘要 1 xKF1信息 1 简介 2 整体代码调用流程 3 MP日志查看 2 xKF2信息 1 简介 2 整体代码调用流程 3 MP日志查看 3 xKF3信息 1 简介 2 流程 3 MP地面站数据 4 xKF4信息
  • ardupilot 位置控制(POSHOLD)分析

    目录 文章目录 目录 摘要 0 简介 1 POSHOLD初始化过程 1 刹车增益的计算 2 位置保持不同阶段状态机对应的类型 2 POSHOLD运行过程 2 1 获取需要的飞行输入信息 2 2POSHOLD模式状态机 2 3获取当前的横滚俯
  • Ardupilot 飞控代码解锁流程分析

    摘要 本文档只有记录分析ardupilot飞控代码解锁的过程 如果有分析不到的地方 欢迎批评指导 谢谢 联系方式 18129927205 重点标志变量 flags armed 0表示没有解锁 flags armed 1表示解锁 arming
  • Ardupilot飞控Mavlink代码学习

    目录 文章目录 目录 摘要 1 Ardupilot怎么实现Mavlink初始化 2 Mavlink消息通信过程 摘要 本节主要记录自己学习Ardupilot的Mavlink协议的过程 欢迎一起交流分析 1 Ardupilot怎么实现Mavl
  • Ardupilot飞控添加使用诺瓦泰GPS

    Ardupilot飞控添加使用诺瓦泰双天线GPS航向角的设置 一 添加诺瓦泰GPS heading角数据包解析代码 1 打开libraries AP GPS AP GPS NOVA h xff0c 添加如下代码 xff1a struct P
  • 最流行的开源飞控项目ArduPilot Mega(APM)介绍及发展历史

    ArduPilotMega APM 是市面上最强大的基于惯性导航的开源自驾仪 特性包括 免费开源固件 xff0c 支持飞机 xff08 34 ArduPlane 34 xff09 xff0c 多旋翼 四旋翼 六旋翼 八旋翼等 直升机 xff
  • Ardupilot自定义mavlink消息

    在ardupilot modules mavlink message definitions v1 0 commom xml文件结尾处添加自定义消息 lt 20220713WP 添加一个mavlink消息 gt lt message id
  • 无人机ADS-B模块 (兼容Px4、ardupilot、极致飞控)拒绝黑飞,耗子尾汁!

    近年来 xff0c 无人机等低空飞行器成为很多玩家的新 玩具 xff0c 但是绝大多数飞行器都属于 黑飞 xff0c 就是没有民航管理部门的适航许可 也没有相关部门颁发的驾驶执照的 2018年2月7日 xff0c 河北省唐山市古冶区公安分局
  • Pixhawk之UAV控制理论、ardupilot源码框架介绍

    一 开篇 您有无人机么 xff1f 没有 那赶紧去某宝买一套 昨天 开会开到接近下午一点钟 xff0c 收获相当大 xff0c 原本不太清楚的ardupilot框架现在也大致熟悉了 xff0c 接下来主要就是结合源码了解其控制过程了 xff
  • ADRC Ardupilot代码分析

    记录一下自己对于Ardupilot ADRC控制代码的一些理解 GitHub链接 ADRC Active Disturbance Rejection Control by MichelleRos Pull Request 20243 Ard
  • ardupilot在Linux上设置SITL(FlightGear)

    本页介绍如何在Linux上设置SITL xff08 软件在环路中 xff09 特定命令在Ubuntu上从12 10到16 04进行了测试 概观 SITL模拟器允许您在没有任何硬件的情况下运行Plane xff0c Copter或Rover
  • APM飞控SITL仿真环境 修改初始地理位置

    APM飞控SITL仿真环境 初始化设置 最近在sitl仿真时遇到了一个问题 xff0c 默认情况下仿真飞机的初始位置位于南半球 xff0c 而使用的国内卫星地图大多不提供中国以外地区的卫星地图 xff0c 所以希望设置仿真飞机的初始位置位于
  • Ardupilot SITL(Software in the Loop)软件仿真

    参考 xff1a http ardupilot org dev docs sitl native on windows html sitl native on windows 第一步 xff1a 下载MAVProxy 第二步 xff1a 下
  • Ardupilot与T265配置

    摘自 xff1a https www jianshu com p ce91fdec7235 我现在发现这篇文章的原文在这 https www cnblogs com hellocxz p 12104290 html Ardupilot与T2
  • PX4报错FAILED: external/Stamp/sitl_gazebo/sitl_gazebo-configure解决

    PX4仿真gazebo报错 make px4 sitl default gazebo Configuring incomplete errors occurred span class token operator span See als
  • PX4 SITL Gazebo 仿真时 libgazebo_multirotor_base_plugin 插件运行时出错

    PX4 SITL Gazebo 仿真时 libgazebo multirotor base plugin 插件运行时出错 问题描述原因分析解决办法总结 问题描述 在 Gazebo 中进行 PX4 的软件在环仿真时 xff0c 执 make
  • SITL--仿真多架无人机

    SITL仿真环境搭建 ardupliot源码下载与编译 首先需要安装Ardupliot开源飞控的开发环境 xff0c 参考这个知乎博主的文章 xff1a 链接 我的安装环境 ubuntu20 04 先下载Ardupilot源码 xff0c
  • Ardupilot添加自定义日志(AP_LOG)

    1 在libraries AP Logger LogStructure h中添加自定义的结构体 span class token keyword struct span span class token class name PACKED
  • ArduPilot/APM源码学习笔记(一)

    最近开始学习ArduPilot APM飞控的源码 xff0c 源码托管在github上 源码链接 xff1a https github com diydrones ardupilot 飞控主页 xff1a http ardupilot co
  • 25B无人直升机调试(Tuning)

    要知道的直升机原理 首先要掌握的5个飞行模式 本文首先调试自稳模式 Stabilize 自稳模式 Alt Hold 定高模式 Loiter OF loiter 悬停模式 RTL Return to Launch 返航模式 Auto 自动模式

随机推荐

  • 使用 rust 开发 stm32:前言

    更多分享内容可访问我的个人博客 https www niuiic top 本系列教程全部置于stm32专栏 本文为使用 rust 开发 stm32 系列教程前言 Why Rust Rust 特性就不用多介绍了 xff0c 有个编译器管着有时
  • docker与virtualbox切换使用

    管理员模式打开cmd 查看hyper v状态 xff1a bcdedit span class token operator span findstr hyperv 若状态显示 hypervisorlaunchtype Auto 则当前可支
  • 内存管理学习

    简单的内存分配算法学习 系统中一块剩余不用的大块连续内存 当需要分配内存块时 xff0c 将从这个大的内存块上分割出相匹配的内存块 xff0c 每个内存块都包含一个管理用的数据头 xff0c 通过这个头把使用块与空闲块用双向链表的方式链接起
  • 模拟I2C

    I2C具体内容参考资料 https blog csdn net sternlycore article details 85600668 https blog csdn net qq 43460068 article details 122
  • 巴特沃斯滤波器使用-butter

    matlab的函数butter 低通滤波使用方法 span class token punctuation span B A span class token punctuation span span class token operat
  • 单片机中uid的使用方法

    uid xff1a unique ID 每个单片机芯片出厂后唯一的ID xff0c 不会重复 uid有很多用途 xff0c 我们可以用来作为mac地址 xff0c 可以用来记录唯一的日志 xff0c 也可以用来防止固件被拷贝使用 本文所描述
  • c/c++单个文件或函数优化级别设置

    span class token macro property span class token directive hash span span class token directive keyword pragma span span
  • 用 Python 将 matplotlib 图表集成到 PDF 中

    介绍 PDF 格式是与平台无关 xff0c 它独立于底层操作系统和渲染引擎 事实上 xff0c PDF 是基于一种脚本语言 PostScript xff0c 它是第一个独立于设备的页面描述语言 在本指南中 xff0c 我们将使用 borb
  • ucos iii 任务栈使用率统计方法

    第一步 使能任务统计功能 修改文件 os cfg h中的 OS CFG STAT TASK STK CHK EN宏 span class token comment TASK MANAGEMENT span span class token
  • qt 中文显示乱码

    qt更改lineEdit 按钮等字体时 xff0c 使用中文时有时会显示乱码 xff0c 则使用以下进行转换即可 xff1a span class token function QStringLiteral span span class
  • QT添加repository

    资源网站 xff0c 添加临时repository即可 https span class token operator span span class token comment mirrors tuna tsinghua edu cn q
  • ssh免密登录

    windows 个人账户下ssh的公钥内容需要保存至远程服务器 xff0c 一般是C Users xxx ssh id rsa pub 远程服务器个人账户下 ssh目录创建文件authorized keys xff08 如果没有的话需创建
  • vscode+jlink+GDBServer在线调试

    GDB GDBServer JLink之间的关系 借用网上一张图 xff0c 原文参考 https blog csdn net qq 40833810 article details 106713462 我们在进行GDB调试时 xff0c
  • 嵌入式函数调用入栈与出栈

    简单的例程 xff0c 几个函数调用 xff0c 来查看寄存器状态 xff0c 主要是学习一下cortem M核中LR寄存器的理解 xff1a 例程源码 xff1a span class token keyword static span
  • 关于嵌入式函数入口参数的了解

    我们每次在编写函数的时候 xff0c 很多时候都少不了传入参数 xff0c 也就是函数的形参 xff0c 少至一个 xff0c 多至数十个都有可能 xff0c 那么这些函数的入口参数在进入函数的时候都是在哪里存放着呢 xff1f 其实 xf
  • MarkDown基本语法学习

    标题 span class token comment 一级标题 span span class token comment 二级标题 span span class token comment 三级标题 span span class t
  • ssh免密登录远程服务器

    公钥生成 此命令 xff0c 一路向西即可生成 ssh keygen 生成的公钥文件目录一般默认在 xff1a C Users 用户名 ssh 中的 id rsa pub 文件 Windows登录 个人账户下ssh的公钥内容需要保存至远程服
  • esp8266(MQTT固件)通过at指令连接阿里云平台

    使用记录 esp8266模组固件烧录工具准备串口调试助手阿里云账户及物联网设备申请开启MQTT通信方式一 阿里云直接获取连接参数方式二 阿里云三元组计算连接参数 严重注意 实验 xff1a esp8266 连接阿里云 准备工作 xff1a
  • Python爬虫实战:抓取并保存百度云资源(附代码)

    專 欄 王雨城 xff0c Python中文社区专栏作者 博客 xff1a http www jianshu com u 88ff70818bd1 寻找并分析百度云的转存api 首先你得有一个百度云盘的账号 xff0c 然后登录 xff0c
  • UAV-5--链接飞控以及配置SITL以及ardupilot环境

    linux系统链接飞控以及配置SITL以及ardupilot环境 先更改本机host到对象的ip 再进行ssh的链接 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img meuTGFrN 1651933771950