【全网首发】【Python】Python控制parrot ARDrone 2.0无人机

这篇具有很好参考价值的文章主要介绍了【全网首发】【Python】Python控制parrot ARDrone 2.0无人机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


  • ☆* o(≧▽≦)o *☆~我是小夏与酒🍹
  • 博客主页:小夏与酒的博客
  • 🎈该系列文章专栏:Python学习专栏
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️
    【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域

【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域

【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域

一、前言

本篇文章主要讲解如何使用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界面:
【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域
目前项目中使用的ARDrone 2.0无人机整体展示:
【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域
去除保护外壳的正面和背面:
【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域
【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域


四、环境搭建

一开始选择使用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,控制无人机以默认速度飞到默认高度,悬停一段时间后降落

from pyardrone import ARDrone

def fly_to_height():
    drone = ARDrone()
    if not drone.connected:
        drone.connect()
    
    drone.takeoff()
    drone.move(1)
    # 其他飞行操作
    drone.hover()
    drone.land()
    
    if drone.connected:
        drone.disconnect()

# 主程序入口
if __name__ == "__main__":
    fly_to_height()

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

def fly_to_height():
    drone = ARDrone()
    if not drone.connected:
        drone.connect()
    
    drone.takeoff()
    drone.move(1)
    # 其他飞行操作
    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 = host
        self.at_port = at_port
        self.navdata_port = navdata_port
        self.video_port = video_port
        self.watchdog_interval = watchdog_interval
        self.timeout = timeout
        self.bind = bind

        if 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 progressive
        flag.
        '''
        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 send

        Sends 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指令展示如下:
【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域

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

# import VideoMixin only if opencv is available
try:
    import cv2
except ImportError:
    class DummyVideoMixin:
        pass
    VideoMixin = DummyVideoMixin
    VIDEO = False
else:
    del cv2
    from pyardrone.video import VideoMixin
    VIDEO = True
    

六、后记

使用Python开发ARDrone 2.0无人机,同时还便于使用PyQt5开发对应的UI操作界面,界面部分展示如下(未完工):
【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域


【全网首发】【Python】Python控制parrot ARDrone 2.0无人机,Python学习专栏,python,无人机,开发语言,ARDrone 2.0无人机,parrot,pyardrone,前沿技术领域

🧸结尾


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

Tips文章来源地址https://www.toymoban.com/news/detail-759926.html

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

到了这里,关于【全网首发】【Python】Python控制parrot ARDrone 2.0无人机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无人机飞行控制实验平台

    无人机在研制过程中需要不断地进行飞行测试,而测试的过程不是万无一失的,飞行过程中发生任何错误都有可能会导致无人机的损毁或破坏,更严重地甚至会造成外界伤害。 基于此我们推出了无人机的三旋转自由度 (3-DOF) 飞行平台测试系统,可以在横滚 (Roll)、俯仰 (Pitch

    2024年02月16日
    浏览(52)
  • 无人机飞行控制技术期末复习

    1.1.1、根据无人机尺寸和续航时间: 1.1.2、根据气动结构特征: 基本结构:机翼,机身,气动舵面,尾翼 优点:

    2024年01月16日
    浏览(80)
  • 提高多旋翼无人机的悬停控制精度

    要提高多旋翼无人机的悬停控制精度,可以从以下几个方面进行优化: 优化传感器配置:选用高精度的传感器,如激光雷达、红外传感器等,可以提供更准确的姿态和位置信息。同时,对传感器进行定期标定和校准,确保其准确性。 改进控制算法:采用更为先进的控制算法

    2024年02月21日
    浏览(27)
  • 无人机飞行控制系统功能,多旋翼飞行控制系统概述

    飞行控制系统存在的意义 行控制系统通过高效的控制算法内核,能够精准地感应并计算出飞行器的飞行姿态等数据,再通过主控制单元实现精准定位悬停和自主平稳飞行。 在没有飞行控制系统的情况下,有很多的专业飞手经过长期艰苦的练习,也能控制飞行器非常平稳地飞

    2024年02月21日
    浏览(36)
  • 超维空间S2无人机使用说明书——61、ROS无人机4G远程控制

    一、4G通信方案 我们的4G通信主要通过两种方式实现,一种是使用终端模拟器,比如Xshell、putty,另一种是使用远程软件,如nomachine。具体使用教程如下:机载电脑的相关环境已经配置完成,直接使用即可。 二、检查指示灯是否正常 出现两个蓝色灯,一个慢闪,表明当前网络

    2024年01月21日
    浏览(53)
  • 激光无人机打击系统——光束控制和指向系统

    激光无人机(UAV)打击系统中的光束控制和指向系统通常包括以下几个关键组件和技术: 激光发射器 :这是系统的核心,负责生成高能量的激光束。常用的激光类型包括固体激光器、化学激光器、光纤激光器等,选择取决于所需的功率、射程和稳定性。 光束质量控制 :高质

    2024年01月24日
    浏览(37)
  • 基于simulink的无人机姿态飞行控制仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB         无人机是无人驾驶飞机的简称(Unmanned Aerial Vehicle),是利用无线电遥控设备和自备的程序控制装置的不载人飞机,包括无人直升机、固定翼机、多旋翼飞行器、无人飞艇、无人伞翼机。广义地看也包括临近

    2024年02月02日
    浏览(42)
  • xtdrone用键盘控制无人机飞行 无法起飞

    运行案例 解锁无人机螺旋桨转动但无法起飞 也未报错 解决方法: 在QGC中修改: PX4飞控EKF配置 将PX4使用的EKF配置为 融合GPS的水平位置与气压计高度 。 如果我们想使用视觉定位,就需要把修改配置文件。  此修改意味着EKF融合来自mavros/vision_pose/pose的数据,并不是修改完无

    2024年01月22日
    浏览(65)
  • PX4无人机 - 键盘控制飞行代码

    仿真效果 实机效果 由于图片限制5M以内,只能上传一小段了,整段视频请点击链接 Pixhawk 6c | 无人机 | 键盘控制无人机 | Offboard模式 核心: 发布 mavros/setpoint_velocity/cmd_vel_unstamped 话题,控制x y z三个方向的速度 运行前先运行PX4自带仿真,例如 接着运行以下代码(根据WHEELTEC麦

    2024年02月16日
    浏览(33)
  • 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

    在上篇记录中,已经对整体的PX4仿真环境有了一定的了解,现如今就要开始对无人机进行起飞等仿真环境工作,在整体虚拟环境中如果程序能够安稳起飞降落,即可对无人机进行实飞操作。 需要做的是,通过PX4官网提供的基本程序包,在ROS工作空间下新建程序包对其进行运行

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包