用户
 找回密码
 立即注册
monkey_pro 该用户已被删除
发表于 2019-4-11 14:01:57
73761
  最近都在忙着搞底层硬件结构的东西,买了一大堆铁完全不知道怎么搞,还是回来写个简单的程序比较友好。。。

  Dronekit内置了机器的属性和参数,使用很简单的Python就可以进行读取和修改了。首先先参考我的上一篇内容把仿真环境搭起来,接下来就可以操作啦!


  读取属性
  
  属性变量描述了无人机当前的系统状态。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 = [color=rgb(0, 0, 136) !important]False
切换为AUTO状态 :vehicle.mode = VehicleMode([color=rgb(0, 153, 0) !important]"GUIDED")


等等等等啦。。。

通过获取属性可以有效的知道飞控的状态,能很方便地监控异常;通过设置属性可以实现简单的控制,这样飞控使用起来就更加得心应手啦!


使用道具 举报 回复
发表于 2021-1-28 15:51:45
学习了,感谢!
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册