当前位置: 首页 > news >正文

嘉兴网站推广企业网络策划营销

嘉兴网站推广企业,网络策划营销,中国建筑集团有限公司是央企吗,网站建设营销外包公司哪家好🎉欢迎来到Python专栏~Python控制parrot ARDrone 2.0无人机 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Python学习专栏 文章作者技术和水平有限,如果文中出现错误…

🎉欢迎来到Python专栏~Python控制parrot ARDrone 2.0无人机


  • ☆* o(≧▽≦)o *☆~我是小夏与酒🍹
  • 博客主页:小夏与酒的博客
  • 🎈该系列文章专栏:Python学习专栏
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️
    图标

CSDN

🎉 目录-Python控制parrot ARDrone 2.0无人机

  • 一、前言
  • 二、效果演示
  • 三、ARDrone 2.0无人机介绍
  • 四、环境搭建
  • 五、讲解示例代码
  • 六、后记

遇见未来

一、前言

本篇文章主要讲解如何使用Python来对parrot ARDrone 2.0无人机进行操作控制。

在网上查找过许多关于ARDrone的SDK资料,但大部都是使用C++来进行开发,有一部分使用Python开发的资料中却没有包含完整且正确的库。为了解析无人机发送的UDP数据信息,我个人觉得使用Python来实现是相对简单的,于是查找了大量的资料之后,终于可以使用Python来控制无人机了!

Python技能树:Python入门技能树。
版本:Python 3.10。
IDE:PyCharm。


二、效果演示

在调试和测试的过程中,我使用PyCharm进行开发:

【Python控制ARDrone 2.0无人机】演示视频


三、ARDrone 2.0无人机介绍

Parrot AR.Drone四轴遥控飞机是世界知名无线通信厂商Parrot出品的高级玩物,与第一产品时隔两年多, Parrot公司研发了2.0版本,即这次数字尾巴收到的AR.Drone 2.0 Power Edition。拥有极高精度的3轴MEMS陀螺仪、3轴加速度计、3轴磁强计、压力传感器和超声波传感器的AR.Drone 2.0,提供了自动起飞、降落、悬停的功能。

ARDrone 2.0无人机的官网和官方提供的sdk获取:ARDrone 2.0。
获取官方的sdk界面:
官网界面
目前项目中使用的ARDrone 2.0无人机整体展示:
整体
去除保护外壳的正面和背面:
正面
背面


四、环境搭建

一开始选择使用Python来进行开发,就是因为Python有着强大的编程生态,能极大地提高开发效率。

开发中主要使用的库是:pyardrone。需要先获取到这个库,才可以轻松地开发无人机。

如果你当前的环境比较好的话,直接使用pip下载:

pip install pyardrone

或者

pip3 install pyardrone

📜当然了,为了提高下载速度和下载成功率,还是需要使用国内镜像源下载:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyardrone

或者

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyardrone

尝试过很多的方法,从github上看了好多大佬项目中的pyardrone包,都存在代码不完整且有错误的情况。上述pyardrone的安装方法是目前最OK的。


五、讲解示例代码

下面展示基本的示例代码,连接无人机的WIFI,控制无人机飞到1m的高度,悬停一段时间后降落

from pyardrone import ARDronedef fly_to_height(target_height):drone = ARDrone()if not drone.connected:drone.connect()# 根据目标高度执行相应操作drone.takeoff()drone.move(target_height)# 其他飞行操作drone.hover()drone.land()if drone.connected:drone.disconnect()# 主程序入口
if __name__ == "__main__":target_height = 1  # 设置目标高度为1fly_to_height(target_height)

定义了一个控制飞机飞到固定高度、悬停一段时间并降落的函数:

def fly_to_height(target_height):drone = ARDrone()if not drone.connected:drone.connect()# 根据目标高度执行相应操作drone.takeoff()drone.move(target_height)# 其他飞行操作drone.hover()drone.land()if drone.connected:drone.disconnect()

上述代码即能实现对无人机的简单控制。

同时,在pyardrone中,包含了UDP的ip地址和端口配置

class ARDroneBase(BaseClient):def __init__(self,*,host='192.168.1.1',at_port=5556,navdata_port=5554,video_port=5555,watchdog_interval=0.5,timeout=0.01,bind=True,connect=True):self.host = hostself.at_port = at_portself.navdata_port = navdata_portself.video_port = video_portself.watchdog_interval = watchdog_intervalself.timeout = timeoutself.bind = bindif connect:self.connect()
...            

对控制最有用的代码如下,包括起飞、降落、升高和悬停等

class HelperMixin:def takeoff(self):'''Sends the takeoff command.'''self.send(at.REF(at.REF.input.start))def land(self):'''Sends the land command.'''self.send(at.REF())def emergency(self):'''Sends the emergency command.'''self.send(at.REF(at.REF.input.select))def _move(self, roll=0, pitch=0, gaz=0, yaw=0):'''Same as sending :py:class:`~pyardrone.at.PCMD` command with progressiveflag.'''self.send(at.PCMD(at.PCMD.flag.progressive, roll, pitch, gaz, yaw))def move(self, *,forward=0, backward=0,left=0, right=0,up=0, down=0,cw=0, ccw=0):'''Moves the drone.To move the drone forward at 0.8x speed:>>> drone.move(forward=0.8)To move the drone right at 0.5x speed and upward at full speed:>>> drone.move(right=0.5, up=1)To rotate clockwise at 0.7x speed:>>> drone.move(cw=0.7):param forward:  speed for moving forward:param backward: speed for moving backward:param left:     speed for moving left:param right:    speed for moving right:param up:       speed for moving up:param down:     speed for moving down:param cw:       speed for rotating clockwise:param ccw:      speed for rotating counter-clockwise'''self._move(roll=right-left,pitch=backward-forward,gaz=up-down,yaw=cw-ccw)def hover(self):'''Sends the hover command.'''self.send(at.PCMD(flag=0))

其中,向无人机发送控制指令的部分如下:

class ARDroneBase(BaseClient):
...def send(self, command):''':param ~pyardrone.at.base.ATCommand command: command to sendSends the command to the drone,with an internal increasing sequence number.this method is thread-safe.'''self.at_client.send(command)
...

对于向无人机发送的具体指令,可以参考官方提供的sdk手册(AT Commands部分),或者从pyardrone.at中查看。手册中的部分AT指令展示如下:
部分AT指令

除了上述内容之外,pyardrone中还提供了opencv(cv2)相关的开发,部分展示如下:

# import VideoMixin only if opencv is available
try:import cv2
except ImportError:class DummyVideoMixin:passVideoMixin = DummyVideoMixinVIDEO = False
else:del cv2from pyardrone.video import VideoMixinVIDEO = True

六、后记

使用Python开发ARDrone 2.0无人机,同时还便于使用PyQt5开发对应的UI操作界面,界面部分展示如下(未完工):
ui开发


csdn

🧸结尾


  • ❤️ 感谢您的支持和鼓励! 😊🙏
  • 📜您可能感兴趣的内容:
  • 【Python】Python实现串口通信(Python+Stm32)
  • 【FPGA】串口通信讲解-状态机判断数据值
  • 【Arduino TinyGo】【最新】使用Go语言编写Arduino-环境搭建和点亮LED灯
  • 【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制
    遇见未来

Tips

  1. 您发布的文章将会展示至 里程碑专区 ,您也可以在 专区 内查看其他创作者的纪念日文章
  2. 优质的纪念文章将会获得神秘打赏哦
http://www.tj-hxxt.cn/news/35872.html

相关文章:

  • 网站运营与管理规划书平台推广方式方法是什么
  • 上海网站建设lv cn百度快速收录入口
  • 视频当背景图片 网站开发免费b站推广网站2022
  • 重庆网站建设哪家便宜宁波seo排名方案优化公司
  • 大连中小网站建设公司seo提高关键词
  • 二维码生成器网页版seo管理
  • 无锡做网站baidu百度站长平台网站收录
  • 怎么做直播室的网站大连网站优化
  • 新疆网络教育学院天津搜索引擎seo
  • b2b网站建设模块免费网站怎么注册
  • 稻香村网站建设app引流推广软件
  • 电脑游戏网页淘宝标题优化工具推荐
  • 如何建立团购网站免费推广神器
  • 做手机网站兼容网络营销机构官方网站
  • 前期做网站宣传费用怎样做账百度广告商
  • 英文响应式网站建设谷歌浏览器下载手机版
  • 网站策划编辑千锋培训学费多少钱
  • 宁波江北区建设局网站搜索引擎营销的方法不包括
  • 做挂网站吗东莞seo网站制作报价
  • 永久的海外域名武汉seo招聘网
  • 商务封面图片素材优化大师怎么删除学生
  • 手机网站 htmlseo排名是什么
  • 营销型网站建设哪里有站长工具果冻传媒
  • 宁波网站建设公司企业站seo价格
  • 怎么买域名建网站百度推广好不好做
  • 注册了域名 网站怎么做软件培训机构
  • 开网站平台需要多少钱扬州百度seo
  • 如何攻击网站2021小学生新闻摘抄
  • 网站添加友情链接百度链接提交工具
  • 企业做网站的钱怎么做账优化设计全部答案