用Python实现大疆无人机航点规划任务

news/2025/2/11 23:26:36/

用Python实现大疆无人机航点规划任务

    • 一、硬、软件环境
    • 二、航点规划任务的流程图
    • 三、流程的基本步骤
    • 四、`drone_proxy`包的获取方式

ROS| 大疆| M600 Pro| 开发者| Python| SDK|

一、硬、软件环境

  • 无人机:大疆M600 Pro无人机
  • 飞控单元:A3 Pro
  • 飞控接口:大疆Onboard-SDK-ROS
  • 开发平台:树莓派ubuntu、ubuntu电脑主机
  • 代码实现语言:Python

事实上,以下机型都支持

Aircraft/FCFirmware Package VersionFlight Controller VersionOSDK BranchNotes
M210/M210 RTK1.1.09133.3.10.4OSDK-ROS 3.7
M600/M600 Pro1.0.1.663.2.41.13OSDK-ROS 3.7
A3/A3 Pro1.7.6.03.3.8.39OSDK-ROS 3.7
N31.7.6.03.3.8.39OSDK-ROS 3.7
M1001.3.1.823.1.10.0OSDK-ROS 3.7

二、航点规划任务的流程图

在这里插入图片描述

三、流程的基本步骤

  1. 按照大疆官网安装Onboard-SDK-ROS ,链接;
  2. 导入相关的包,其中drone_proxy这个包定义了一系列无人机对象和方法,需要付费才能获取哦 ;
#!/usr/bin/python
# -*- coding: utf-8 -*-import rospy
from drone_proxy import *
  1. 激活无人机并获取SDK控制权限
drone = Drone()
ret = drone.activate()
if ret.result:print "无人机激活成功!"
ret = drone.obtain_authority()
if ret.result:print "SDK获取无人机控制权限成功!"
else:if ret.ack_data == 3 and ret.cmd_set == 1 and ret.cmd_id == 0:print "正在获取控制权限,再发一次请求..."drone.obtain_authority()else:print "获取控制权限失败!"
  1. ROS节点初始化 并订阅当前位置;
rospy.init_node('demo_waypoint', anonymous=True) 
ori_pos = rospy.client.wait_for_message("/dji_sdk/gps_position", NavSatFix, 2) 
  1. 定义航点属性函数;
def waypoint_property(latitude, longitude, altitude, heading=0, hovertime=5):"""航点属性赋值函数"""wp = MissionWaypoint()wp.latitude = latitudewp.longitude = longitudewp.altitude = altitudewp.damping_distance = 0  # Bend length (effective coordinated turn mode only)wp.target_yaw = heading  # 目标偏航角wp.target_gimbal_pitch = 0  #TODOwp.turn_mode = 0  # 转弯模式 0顺时针方向 1逆时针方向# 设置悬停wp.has_action = 1  # 有没有动作 0无 1有wp.action_time_limit = 5000wp.waypoint_action.action_repeat = 1wp.waypoint_action.command_list = "\0"*16wp.waypoint_action.command_parameter[0] = hovertime * 1000return wp
  1. 定义航点任务;
def waypoint_mission(p):# 航点任务基本描述bp = MissionWaypointTask()bp.velocity_range = 10bp.idle_velocity = 5bp.action_on_finish = 0  # 结束后的动作 0无动作 1返回原点 2自动着陆 3返回某点 4无尽模式,不退出bp.mission_exec_times = 1  # 仅执行一次bp.yaw_mode = 0  # 航向(机头方向) 0自动模式(指向下一个航点) 1锁定初始值 2由遥控器控制 3采用航点的偏航角bp.trace_mode = 0  # 转弯模式为定点转弯bp.action_on_rc_lost = 1  # RC失联后执行失联保护 #TODObp.gimbal_pitch_mode = 0  # 添加航点wps = []for i in range(len(p)):heading_angle = 0  # 机头朝向wp = waypoint_property(p[i][0], p[i][1], p[i][2], heading=heading_angle)wps.append(wp)bp.mission_waypoint = wpsreturn bp
  1. 装订航线并启动任务;
def load_and_start(mission):# 装订航点ret = drone.wpMission.upload(mission)if ret.result:print "航点装订成功!"ret = drone.wpMission.start()if ret.result:print "航点任务启动成功!"# 开始ROS调度try:rospy.spin()except KeyboardInterrupt, e:pass
  1. 定义主函数,在主函数中定义航点,并调用函数。
def main():if isinstance(ori_pos, NavSatFix):origin_p = (ori_pos.latitude, ori_pos.longitude, ori_pos.altitude)points = []next_p = (origin_p[0], origin_p[1], origin_p[2]+12)points.append(next_p)next_p = (origin_p[0]+0.00030, origin_p[1], origin_p[2]+12)points.append(next_p)next_p = (origin_p[0]+0.00030, origin_p[1]+0.00020, origin_p[2]+12)points.append(next_p)next_p = (origin_p[0], origin_p[1]+0.00020, origin_p[2]+12)points.append(next_p)print "总共有{}个点,各点的坐标为\n{}".format(len(points), points)task = waypoint_mission(points)load_and_start(task)if __name__ == "__main__":main()

提示:

  • 1、以上航点实现的是长方形飞行,如果想实现来回往返的多航点飞行,就需要规划好航点,传给 waypoint_mission() 函数;
  • 2、由于室内GPS信号弱,无人机并不会启动飞行。

四、drone_proxy包的获取方式

扫二维码,支付宝付款成功后,加微信好友,备注drone_proxy
支付宝付款码

付款成功后,备注drone_proxy加好友


http://www.ppmy.cn/news/502351.html

相关文章

飞行机器人(二)DJI平台软硬件连接

系列文章目录 第一章 飞行机器人(一)DJI平台OSDK简介飞行机器人(一)DJI平台OSDK简介_Techblog of HaoWANG-CSDN博客DJI OSDK/OSDK-ROS for M600Pro技术文档 Version 2.1.1https://haowang.blog.csdn.net/article/details/1223363…

M600 Pro 安装问题解决

1.遥控器版本为1.2.10 提示版本已是最新版本,那么Lightbridge2 必须是1.1.60 不能是1.1.70 2.卸载机翼的时候,尽量用飞机带的那把工具 3.机翼安装 135 逆时针 ccw 6号电池仓和1号电池仓之间是1点机翼 1号电池仓和2号电池仓是2号机翼 顺推 246 顺时间 …

基于Dji M600-PRO的Onboard-SDk-ROS入门应用之———航点记录与自主飞行

从学习dji-osdk到现在大概二十天左右,基本上是0基础学习这个东西,以前就用过一些51和stm32,Linux操作系统就会一些简单的操作指令,就这么点基础,然后开始学习OSDK。希望我的这篇文章可以帮助刚开始学习dji-sdk的你&…

多旋翼无人机ROSC++开发例程(二):DJI M600无人机ROS开发

文章目录 1.飞控UART接线2.DJI OSDK安装3.DJI ROS接口3.1 service相关3.1.1 获取与释放控制权限3.1.2 发布起飞、着陆与返航请求3.1.3 设置惯性系参考点 3.2 话题订阅相关3.2.1 惯性坐标3.2.2 GPS3.2.3 欧拉角3.2.4 线速度3.2.5 角速率 3.3 发布话题相关3.3.1 位置指令3.3.2 线…

大疆无人机飞控软件介绍

1.目前有几款飞控软件可用? 搜索一下华为手机应用商店“DJI" 显示有以下几款飞控软件,原来还有一款DJIGO ,不知道什么时候下架了,目前我手机上还有这个软件,可以使用,不过只能自由操作飞行拍摄胡总和…

大疆A3飞控使用|控制参数调整

大疆A3飞控使用|控制参数调整 大疆A3飞控介绍控制参数调试基础感度动力带宽高级感度灵敏度控制器性能参数 大疆A3飞控介绍 全新A3系列飞控系统结合安全可靠和精准控制的特性,以丰富的扩展功能和外设支持开创更多可能,全面满足行业应用的严苛需求。 控制…

大疆M600无人机OSDK代码串口初始化失败及解决

使用无人机型号:经纬M600pro-OSDK版本:大疆官方开源原生DEMO——OSDK3.9代码。OSDK开发平台:STM32F4 目录 问题:解决方案: 问题: 3.9版本代码下载到板子里,串口显示如下错误: 蓝色…

【大疆无人机OnboardSDK(一)Assistant2仿真系统搭建】

【大疆无人机OnboardSDK(一)Assistant2仿真系统搭建】 首先:一定要仔细阅读官网给出的说明书!M600用户使用说明,以及妙算2-C使用说明,不然都搞不清哪些线的作用是干什么的,也不清楚飞控上面哪些…