模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

3348查看 | 0回复

Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据

[复制链接]
发表于 2020-7-4 19:04:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前面的2篇教程分别介绍了树莓派在飞行器上的安装 和 ubuntu-mate系统的安装及基本设置。现在我们可以使用笔记本ubuntu终端通过ssh命令远程连接树莓派。这篇教程介绍在树莓派上安装Dronekit,以及如何使用Dronekit编写自己的第一个脚本读取飞控数据。

先了解一下Dronekit是什么?


Dronekit也叫DroneKit-Python,是一个用于控制无人机的Python库。允许开发人员创建在机载电脑上运行的应用程序,并使用低延迟链接与ArduPilot飞控通信。可以显着增强自动驾驶性能,为飞行器增加更多智能,以及执行计算密集或时间敏感的任务(例如,计算机视觉,路径规划或3D建模)。除了DroneKit-Python以外,还有DroneKit-Android以及DroneKit-Cloud的API供不同的开发者使用。API通过MAVLink与飞控通信。它提供对连接飞控的遥测,状态和参数信息的编程访问,并实现任务管理和对飞行器运动和操作的直接控制。

相比之下,Dronekit比搭建ros来控制无人机更容易上手一些。

对于Dronekit,PX4(原生固件)被支持的较少,目前不可以进行模式切换。而对Ardupilot(APM固件)支持的比较多,可调用的函数也比较多。

一、安装Dronekit


  • 飞行器接上电池,检查树莓派和飞控是否正常启动,树莓派和笔记本是否连接到同一个路由器。具体请参考前面两篇教程 树莓派在飞行器上的安装 和 ubuntu-mate系统的安装及基本设置

  • 笔记本端通过ssh命令连接树莓派;

    Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 4806

  • 输入cd切换到根目录;

  • 首先安装pip和python-dev:

    sudo apt-get install python-pip python-dev

    Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 214

  • 输入以下命令安装DroneKit:

    sudo pip install dronekit

    官方文档上,就是以上两个简单命令就能安装。但实际安装时,会出现以下错误:

    Running setup.py install for lxml ... error

    Compile failed: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

    错误内容是ARM交叉编译工具无法安装。


如果你也遇到相同的警报,执行下面的命令:

sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev python-py

顺利的话,Dronrkit就能安装成功了,如下所示:

Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 1421

二、编写测试代码


安装好Dronekit,接下来我们需要测试树莓派与飞控是否能正常通讯获取浮空数据。

  • 首先在树莓派根目录下新建一个名为test的文件夹用于存放测试代码文件。和使用windows系统存放文件一样,不过这是用命令操作,新手可能不太习惯,命令:mkdir ,输入以下命令:

    mkdir -p  ~/test

    可以输入 ls 命令,查看是否新建好这个文件夹,如下所示:

    Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 5773

  • 通过cd命令切换到test文件夹下,创建名为connect.py的文件,测试树莓派能否连接飞控:

    cd test

    touch connect.py

  • 可以输入 ls 命令,查看是否新建好这个文件,如下所示:

    Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 1571

  • 用 vim编辑文件:

    sudo vim connect.py

    将以下代码复制到文件中:

    from dronekit import connect

    # Connect to the Vehicle (in this case a UDP endpoint)

    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

    Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 2529

  • 保存代码并退出(如何保存编辑操作请参考《Pixhawk无人机扩展教程(2)》)

    以上代码涵盖了大部分的无人机状态,通过执行以上代码就能读取当前飞控状态参数。

    注意:不要急着执行以上脚本。可能提示权限不够出错。需要赋予USB0端口权限,以下逐步介绍。

三、赋予端口权限


确认树莓派与飞控已经通过数据线连接好,输入以下命令查看端口:
ls /dev/ttyUSB*
如果显示:/dev/ttyUSB0说明树莓派已经有USB0端口连接
然后输入以下命令,赋予端口权限sudo chmod 666 /dev/ttyUSB0
(注意:此命令是暂时的,每次系统,重启以后,又得重新运行这个命令,下面介绍一下永久改写USB口读写权限的方法。)

永久改写USB口读写权限的方法
1.运行命令,如下图所示:ls usb -vvv
记录"idVendor"和"idProduct"后面的两个编码。

2.创建新的udev规则:sudo vim /etc/udev/rules.d/myusb0.rules

3.在文件中输入以下代码:SUBSYSTEMS=="usb",ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523",GROUP="users", MODE="0666"

其中idVendor和idProduct改成上图中得到的编码。

4.重新加载udev规则,运行以下命令:sudo udevadm control --reload
四、测试连接

输入以下命令:

cd test
python connect.py
(注意:执行python语句脚本,请将路径切换到脚本所在文件夹以下,否则会报错。)

成功运行后,会显示如下信息:

Pixhawk无人机扩展教程(3)---树莓派安装Dronekit及读取飞控数据 无人机,仿真,电池,飞控,固件 作者:RXDlwE 3845

说明树莓派通过Dronekit读取到了目前飞控的数据:系统警报、固件版本、姿态数据、电池电量、解锁状态、当前飞行模式等等。这样就成功运行了第一个DroneKit-Python脚本。

连接到多个飞控



通过多次使用connect函数连接到不同的地址,即可在同一个代码文件内连接到多个飞控。

每次调用connect,都会返回一个Vehicle类的对象。通过控制这些对象,即可在同一份代码中控制多架无人机。

DroneKit-Python API参考

https://dronekit-python.readthedocs.io/en/latest/automodule.html#

注意:新手进行ubuntu系统下操作命令,因系统及使用习惯的不同,或多或少都会遇到一些问题,不同的安装方式,遇到的问题不尽相同。大家在遇到错误提示后,可根据错误提示百度或则谷歌一下相关信息,或则到相关网站及论坛,基本都会找到处理问题的方法。

总结:通过以上操作,我们成功安装了Dronekit,并编写了代码测试了树莓派与飞控能够正常通讯。以后的教程我们将编写一个脚本,控制pixhawk无人机飞行。并且介绍如何通过仿真SITL模拟飞行,验证自己编写代码的正确性,从而减少实际飞行中的失误,敬请期待!





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!