Dronekit代码学习(五)基于Gps下的自动跟随

2023-05-16

Dronekit代码学习(五)基于Gps下的自动跟随


参考Dronkit-python:
https://github.com/dronekit/dronekit-python

实时更新PC端GPS位置,发送给无人机,完成PC的跟随

# -*- coding: utf-8 -*-
'''
---------------------------------------------------------------------------
基于GPS跟随模式

---------------------------------------------------------------------------

'''
from __future__ import print_function

from dronekit import connect, VehicleMode, LocationGlobalRelative
import gps
import socket
import time
import sys


# 连接到SITL
connection_string = '127.0.0.1:14555'
print('Connecting to vehicle on: %s' % connection_string)
vehicle = connect(connection_string, wait_ready=True, timeout=300)


#起飞
def arm_and_takeoff(aTargetAltitude):
    #起飞检查
    print("Basic pre-arm checks")
    #等待初始化
    while not vehicle.is_armable:
        print(" Waiting for vehicle to initialise...")
        time.sleep(1)

    #解锁电机
    print("Arming motors")
    #设定模式GUIDED
    vehicle.mode = VehicleMode("GUIDED")
    vehicle.armed = True    

    while not vehicle.armed:      
        print(" Waiting for arming...")
        time.sleep(1)

    #起飞到设定高度
    print("Taking off!")
    vehicle.simple_takeoff(aTargetAltitude) 

    #等待无人机到达设定高度
    while True:
        print(" Altitude: ", vehicle.location.global_relative_frame.alt)      
        if vehicle.location.global_relative_frame.alt>=aTargetAltitude*0.95: #Trigger just below target alt.
            print("Reached target altitude")
            break
        time.sleep(1)



try:

    #安装python gps接收笔记本的GPS位置
    gpsd = gps.gps(mode=gps.WATCH_ENABLE)

    #解锁起飞5m
    arm_and_takeoff(5)

    while True:
        
        if vehicle.mode.name != "GUIDED":
            print("User has changed flight modes - aborting follow-me")
            break    
            
        # 更新gps位置
        next(gpsd)

        #接收到gps位置后移动无人机
        if (gpsd.valid & gps.LATLON_SET) != 0:
            #跟随高度
            altitude = 30 
            #维度、经度、高度
            dest = LocationGlobalRelative(gpsd.fix.latitude, gpsd.fix.longitude, altitude)
            print("Going to: %s" % dest)
            #经纬度高度移动
            vehicle.simple_goto(dest)

            #每隔2s更新
            time.sleep(2)
            

#无gps时提示插入usb_gps或运行假的gps         
except socket.error:
    print("Error: gpsd service does not seem to be running, plug in USB GPS or run run-fake-gps.sh")
    sys.exit(1)

#关闭连接
print("Close vehicle object")
vehicle.close()


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

Dronekit代码学习(五)基于Gps下的自动跟随 的相关文章

  • 当活动被破坏时,GPS图标不会消失吗?

    作为一个尝试 GPS 东西的 Android 新手 我设法将这段代码组合在一起 它的工作原理就像我期望的那样 除了一件事 GPS 图标永远不会消失 如何让GPS图标在Activity被破坏时消失 我有 locationManager rem
  • 除非 GPS 开启,否则融合位置提供商无法获取位置

    因此 我实现了新的 Fused Location Provider API 来获取用户的位置 但由于某种原因 除非 GPS 打开 否则我无法获取任何位置 并非总是如此 用户会打开 GPS 我不想要求他们每次加载应用程序时都打开 GPS 我如
  • 如果禁用 GPS,三星手机将无法获取位置信息

    我使用三星手机通过 LocationManager API 获取位置 如果禁用 GPS 我无法获取位置 通过网络提供商我无法获取位置 这是代码 这在 HTC 和索尼甚至禁用 GPS 中都可以正常工作 但在三星手机中则不行 public Lo
  • 在 Swift 中将 GPS 坐标转换为城市名称/地址

    我有一个纬度 经度位置 我想将其转换为 Swift 中的位置名称字符串 做这个的最好方式是什么 我相信最好使用reverseGeocodeLocation函数 但不完全确定如何使用 这是我到目前为止所拥有的 func locationMan
  • 传递给 onLocationChanged 的​​位置对象是否为 null?

    我有一个在我的应用程序中实现 LocationListener 的活动 并且我的 onLocationChanged 方法直到最近为止一直运行良好 由于某种原因 传递给该方法的 Location 对象为 null 我的问题是 为什么它是空的
  • 东向北转纬度经度

    我有东向 北向格式的位置坐标 但我需要将其转换为正确的经纬度 以使其在 bing 地图中居中 有任何公式或详细信息如何将东距 北距转换为纬度 经度吗 编辑 更具体地说 我需要将 SVY21 坐标转换为 WGS84 东距和北距分别是基点向东和
  • 需要 Android 活动等待获取 GPS 位置

    对不起我的英语不好 我正在尝试从 GPS 获取单个位置以添加全局变量纬度 经度 GPS 打开 但在从 GPS 检索数据之前活动仍在继续 换句话说 我的需求 仅当找到位置并且填充了经度和纬度变量时 方法 getCurrentLocation
  • Android LocationManager.getLastKnownLocation() 返回 null

    因此 我尝试在应用程序中对 GPS 坐标进行一次采样 我不想创建 LocationListener 对象来不断获取 GPS 更新 我想等到收到坐标 然后继续执行另一项任务 这是一个代码片段 LocationManager lm Locati
  • 如何在 JavaScript 中查找到已知位置的距离

    在浏览器中使用 JavaScript 如何确定从我当前位置到另一个我有纬度和经度的位置的距离 如果您的代码在浏览器中运行 您可以使用 HTML5 地理定位 API window navigator geolocation getCurren
  • Android 将阿拉伯数字转换为英文数字

    我从 GPS 收到以下错误 Fatal Exception java lang NumberFormatException Invalid double 现在 这是我通过 Fabric 从用户处收到的错误 它看起来像阿拉伯语 所以我猜只有当
  • Android GPS 路由系统

    我正在开发一个 Android 应用程序 它可以定位用户 假设用户在路上 并且该应用程序将为用户创建最短路线 以便能够到达用户选择的目的地 定位用户不是问题 因为这里有一个 API http www vogella com articles
  • GPS定位无服务

    我是一名新开发人员 有一个简单的问题 我已经四处搜索 但尚未找到明确的答案 简而言之 我正在开发一个需要能够使用 GPS 的应用程序 然而 诀窍是我想使用 GPS 来获取手机的位置 即使它们没有运营商服务 话虽如此 我有两个问题 是否可以通
  • 如何在 Android 中找到附近的应用程序用户?

    我正在制作一个应用程序 需要能够找到附近的人 他们是我的应用程序的用户 我看了很多类似问题的答案 似乎我别无选择 只能不断将用户的当前位置上传到服务器 并在必要时获取附近的用户列表 那么我的问题是 1 要获取附近的列表 应该有一些计算距离的
  • 设置模拟位置时 GPS 提供商未知错误?

    我正在尝试设置我的模拟位置 但是 我收到以下错误 提供商 gps 未知 并且不确定出了什么问题 我已经获得了在manifest xml 中声明的所有权限以及所有参数 模拟定位法 Initiates the method to set the
  • GMSPolyline 非常大的内存峰值

    在允许用户在各种不同类型的地图上显示我们称之为轨迹的复杂位置点列表的 GPS 应用程序中 每个轨迹可以包含 2k 到 10k 个位置点 当轨迹在非 Google 地图类型上呈现时 它们会被大量剪切 修剪和路径简化 这是为了降低内存使用量并提
  • 根据 GPS 坐标计算平均速度的最佳实践

    我这里有一个可以给我 GPS 坐标的设备 我可以定义的时间间隔 我想用它来计算驾驶或驾车旅行时的平均速度 实际上 我使用了正交公式来计算两点之间的距离 然后将其除以给定的时间间隔 通过我遵循的实施这个词 http de wikipedia
  • Android 中如何在不使用 getLastKnownLocation 方法的情况下获取当前的纬度和经度?

    我正在尝试获取current手机的位置 为此我使用GPS追踪器教程 http www androidhive info 2012 07 android gps location manager tutorial 问题总是使用该方法getLa
  • 根据步行速度在 2 个 GPS 位置之间进行插值

    Problem 给定两个位置 L1 latitude1 longitude1 timestamp1 L2 latitude2 longitude2 timestamp2 以及可配置但恒定的移动速度 v 1 39 米每秒 例如 How can
  • 帮助使用 GPS 坐标,Android

    我正在使用此代码来获取我的位置并在屏幕上打印坐标 package com example alpha import android app Activity import android content Context import and
  • 如何将 GPS 数据从 Android 发送到网站?

    我是 Android 和 Web 服务开发新手 目前我正在开发Android程序 该程序将发送经度和纬度信息到asp net网站 以显示位置更改网站地图 问题是 如何将此数据发送到网站 最佳实践 对合适框架的任何建议 从Android应用程

随机推荐

  • docker(2)——docker仓库之Registry、harbor仓库

    一 什么是仓库 Docker 仓库是用来包含镜像的位置 xff0c Docker提供一个注册服务器 xff08 Register xff09 来保存多个仓库 xff0c 每个仓库又可以包含多个具备不同tag的镜像 Docker运行中使用的默
  • 物联网平台设备数据同步到RDS & MySQL数据库(保姆级教学)

    物联网平台设备数据同步到RDS amp MySQL数据库 xff08 保姆级教学 xff09 目标实现 xff1a 阿里云物联网平台某设备实时数据 xff08 MQTT协议上云 xff09 同步存储到RDS MySQL数据库 实现步骤 xf
  • 重头开始

    总感觉 生活中缺点什么 今天开始更新我正在学的FPGA和ESP8266的一些教程和心得 xff1b
  • ESP8266与FPGA初识

    ESP8266 今天其实就了解了一下ESP8266的一些相关 我们主要使用由SDK来编写代码来控制ESP8266以往我们用8266通常都是用AT指令用单片机串口控制的 这样的优点是简单 但是效率不是很高 xff0c 我们知道ESP8266本
  • 大创训练:基于图像处理的智能安防系统(序)

    基本完成目标 xff1a 利用OPENCV进行图像人脸识别进行操作 后期 xff1a 实际应该用到各个平台 QQ xff1a 754331516 欢迎交流 两周一更
  • 研究中常用的数据归一化方法(附Matlab程序)

    在数据处理中 我们往往需要对计算得到的结果数据 xff08 如fMRI中计算得到功能连接等指标 xff09 进行归一化 xff08 Normalization xff09 处理 其实不止在脑科学领域 xff0c 在其他领域也常常需要对结果数
  • INA219与INA216测试总结

    最近需要用到测电压的芯片 xff0c 主要看了一下有TI芯片的INA219系列和INA226系列 xff0c 索性回来都测试了一下 xff0c INA216的话我测试的时候没有图片 INA219我用的是这一款 xff0c 这一款我测试的时候
  • 基于ACFLY无人机调试笔记(一)

    调试心得 最近调试有空了来调试无人机 xff0c 飞控是用的ACFLY EDU的开源飞控 xff0c 因为ACFLY的教程比较少 xff0c 比较偏向商业化 xff0c 所以我开始记录一下使用 记录些项目进行二次开发过程中的细节ACFLY的
  • 入门信号完整性(1)

    最近在学习信号完整性 记录一下学习的过程 好久没回来写了 总觉得脑子是不够用的 这一回打算在博客上写关于信号完整性的知识 xff0c 但是信号完整性的知识非常的抽象 xff0c 所以我们也不能只是学习理论啦 xff0c 还需要仿真软件 xf
  • 二极管仿真模式在同步BUCK里面的应用

    效化和小型化 xff0c 一直都是功率电源发展的两个方向 同步BUCK在这两个方面的卓越表现 xff0c 也是在越来越多的场合得到了运用 xff0c 像锂电池充电 二次砖块电源等等 如图1所示 xff0c 同步BUCK相较传统BUCK最主要
  • 树莓派初体验之安装及SSH远程连接

    树莓派初体验之安装及SSH远程连接 安装远程通信 等了好久终于把树莓派等来了 xff0c 想法是通过pix4飞控和树莓派通信 xff0c 进行飞控的开发 xff0c 毫无经验 xff0c 一点一点来吧 xff0c 也希望有人一起来愉快的学习
  • 树莓派4B与Pixhawk4飞控之状态读取

    树莓派4B与Pixhawk4飞控之状态监控读取 飞控配置树莓派配置程序代码总结 先看看装备 xff0c 上节就说了 xff0c 这树莓派的壳子我喜欢 历经九九八十一难 xff0c 终于把树莓派和Pixhawk4飞控接通了 xff0c 中间尝
  • Ros机器人之(五)订阅subscriber消息

    Ros机器人之 xff08 五 xff09 订阅subscriber消息 这个讲的是订阅节点消息 learning topic里src下创建一个cpp文件 touch pos subscriber 内容如下 xff1a span class
  • Ardupilot之Mavros实现Ros节点控制(一)

    Ardupilot之Mavros实现Ros节点控制 Mavros安装修改Mavros运行Mavros 这部分ros发布的命令话题参考的是PX4固件最基本的Offboard node节点 xff0c 命令发布后 xff0c 能够连接并解锁 x
  • Ardupilot之Mavros实现Ros节点控制(二)

    Ardupilot之Mavros实现Ros节点控制 xff08 二 xff09 offboard建立仿真运行 未完成mavros安装及相关设置的参考上一篇文章 Ardupilot之Mavros实现Ros节点控制 xff08 一 xff09
  • Dronekit代码学习(一)连接及基础状态设置

    Dronekit代码学习 xff08 一 xff09 连接及基础状态设置 目前Dronekit可自行设置的内容较少 xff0c 但能满足基本使用要求 后面还是需要对Mavlink相关指令进行学习 连接 地址根据实际情况修改 xff0c 官网
  • PX4之Gazebo多机仿真尝试

    PX4之Gazebo多机仿真尝试 运行多机前 xff0c 确保你的单机运行没有问题 Px4源码中已经包含了二机的仿真 xff0c 运行以下命令 xff1a roslaunch px4 multi uav mavros sitl span c
  • windows10+nvidia驱动+cuda10.1+cudnn安装教程

    一 显卡驱动 提前安装好nvidia驱动 xff0c windows一般都自动安装了nvidia驱动了 没有安装驱动可以去官网下载驱动 https www geforce cn drivers 选择自己对应的显卡驱动 xff0c 默认安装就
  • GAAS学习(一)Offboard基本控制

    GAAS学习 xff08 一 xff09 Offboard基本控制 开源项目GAAS xff1a https github com generalized intelligence GAAS 一 确保环境安装配置完成 ROS Firmwar
  • Dronekit代码学习(五)基于Gps下的自动跟随

    Dronekit代码学习 xff08 五 xff09 基于Gps下的自动跟随 参考Dronkit python xff1a https github com dronekit dronekit python 实时更新PC端GPS位置 xff