您的位置:首页 > 编程语言 > Python开发

DroneKit教程(四):属性和参数的读取与设置

2017-09-16 17:28 567 查看

DroneKit教程(四):属性和参数的读取与设置

DroneKit内置了无人机的属性和参数,使用简单的Python代码即可进行读取和修改。

此教程的例子均使用在本地编译完成的SITL进行测试。如何启动SITL和MAVProxy请参见使用从源码编译的SITL测试DroneKit代码在测试时,请保持SITL和MAVProxy正常运行

读取属性

属性变量描述了无人机当前的系统状态。connect函数返回的Vehicle对象中包含了许多属性变量,可以直接读取和调用。

from dronekit import connect
vehicle = connect('127.0.0.1:14551', wait_ready = True)

# 飞控软件版本
print "Autopilot Firmware version: %s" % vehicle.version
# 全球定位信息(经纬度,高度相对于平均海平面)
print "Global Location: %s" % vehicle.location.global_frame
# 全球定位信息(经纬度,高度相对于home点)
print "Global Location (relative altitude): %s" % vehicle.location.global_relative_frame
# 相对home点的位置信息(向北、向东、向下);解锁之前返回None
print "Local Location: %s" % vehicle.location.local_frame
# 无人机朝向(欧拉角:roll,pitch,yaw,单位为rad,范围-π到+π)
print "Attitude: %s" % vehicle.attitude
# 三维速度(m/s)
print "Velocity: %s" % vehicle.velocity
# GPS信息
print "GPS: %s" % vehicle.gps_0
# 地速(m/s)
print "Groundspeed: %s" % vehicle.groundspeed
# 空速(m/s)
print "Airspeed: %s" % vehicle.airspeed
# 云台信息(得到的为当前目标的roll, pitch, yaw,而非测量值。单位为度)
print "Gimbal status: %s" % vehicle.gimbal
# 电池信息
print "Battery: %s" % vehicle.battery
# EKF(拓展卡曼滤波器)状态
print "EKF OK?: %s" % vehicle.ekf_ok
# 超声波或激光雷达传感器状态
print "Rangefinder: %s" % vehicle.rangefinder
# 无人机朝向(度)
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
# 解锁状态
print "Armed: %s" % vehicle.armed


设置属性

少数的属性变量可以被设置,通过设置这些属性变量,我们可以控制无人机的运行状态。

锁定无人机:

vehicle.disarmed = False


切换到GUIDED模式:

vehicle.mode = VehicleMode("GUIDED")


设置航点模式下,无人机飞行的地速为3.2m/s(注意:读、写groundspeed的意义不同)

vehicle.groundspeed = 3.2


读取参数

参数以字典(dictionary)的形式,存储在
vehicle.parameters
变量中。具体参数的名称即为相应的键值(key)。

例如,在屏幕上显示THR_MIN参数(THR_MIN代表油门处于最低时的电机带速,以PWM值表示):

print "Param: %s" % vehicle.parameters['THR_MIN']


显示全部参数:

print "\nPrint all parameters (iterate `vehicle.parameters`):"
for key, value in vehicle.parameters.iteritems():
print " Key:%s Value:%s" % (key,value)


设置参数

使用读取参数类似的方法,即可设置参数:

vehicle.parameters['THR_MIN']=100


版本信息

1.0 20170914 initial commit




本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息