< >
Home » DroneKit-Python教程 » DroneKit-python入门教程教程-SITL仿真-属性和参数的读取与设置

DroneKit-python入门教程教程-SITL仿真-属性和参数的读取与设置

DroneKit-python入门教程教程-SITL仿真-属性和参数的读取与设置

说明:

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

步骤:

  • 运行SITL
cd ~/ardupilot/ArduCopter/
./ArduCopter.elf --home -35,149,584,270 --model quad
  • MAVProxy
mavproxy.py --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501 --out 127.0.0.1:14550 --out 127.0.0.1:14551
  • 读取属性
  • 属性变量描述了无人机当前的系统状态。
  • 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

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: dronekit-python入门教程教程