1.无人机真值状态读取

真值状态即无误差的无人机状态,通过以下的函数可读取无人机或无人车的真值状态,

state = client.simGetGroundTruthKinematics()

实际运行一次可以得到如下的结果:

<KinematicsState> {   'angular_acceleration': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'angular_velocity': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'linear_acceleration': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.41852283477783203},'linear_velocity': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.01781749166548252},'orientation': <Quaternionr> {   'w_val': 1.0,'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'position': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': -1.6848435401916504}}

可以看出其中包含六个属性:

angular_acceleration     # 角加速度x_val:    滚转角加速度y_val:    俯仰角加速度z_val:    偏航角加速度
angular_velocity            # 角速度x_val: 滚转角速度y_val: 俯仰角速度z_val: 偏航角速度
linear_acceleration         # 加速度x_val: x轴方向加速度(正北)y_val: y轴方向加速度(正东)z_val: z轴方向加速度(地面)
linear_velocity             # 速度x_val:  x轴方向速度(正北)y_val:  y轴方向速度(正东)z_val:  z轴方向速度(地面)
position                    # 位置x_val:  x轴方向位置(正北)y_val:  y轴方向位置(正东)z_val:  z轴方向位置(地面)

姿态角orientation读出的结果为四元数,AirSim中给出了将四元数转换为欧拉角的函数

(pitch, roll, yaw) = airsim.to_eularian_angles(state.orientation)

这里需要注意位姿角、角速度和角加速度的方向,在仿真环境中测试得到,数据为正时转向的对应关系为:

位姿角控制输入值:滚转角:逆时针;俯仰角:顺时针;偏航角:逆时针
角加速度读取值:滚转角:顺时针;俯仰角:顺时针;偏航角:顺时针
角速度读取值:滚转角:逆时针;俯仰角:逆时针;偏航角:顺时针
角度读取值:滚转角:逆时针;俯仰角:逆时针;偏航角:顺时针

观察角度方向时,视线沿坐标轴的反方向。同一个仿真环境下的四种角度方向不一致,真是挺奇怪的,也或许我在读取的过程中有误读或理解错误的地方。

2.无人机状态估计值读取

在实际情况下,我们无法直接获取无人机无误差的状态,只能通过传感器估计无人机状态。AirSim中可通过以下的函数读取:

 state = client.getMultirotorState(vehicle_name='')

得到的结果为:

<MultirotorState> {   'collision': <CollisionInfo> {   'has_collided': False,'impact_point': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'normal': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'object_id': -1,'object_name': '','penetration_depth': 0.0,'position': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'time_stamp': 0},'gps_location': <GeoPoint> {   'altitude': 122.14649963378906,'latitude': 47.6414680362309,'longitude': -122.14016508957918},'kinematics_estimated': <KinematicsState> {   'angular_acceleration': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'angular_velocity': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'linear_acceleration': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'linear_velocity': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'orientation': <Quaternionr> {   'w_val': 1.0,'x_val': 0.0,'y_val': 0.0,'z_val': 0.0},'position': <Vector3r> {   'x_val': 0.0,'y_val': 0.0,'z_val': -0.14649587869644165}},'landed_state': 1,'rc_data': <RCData> {   'is_initialized': True,'is_valid': True,'left_z': 0.0,'pitch': -0.0,'right_z': 0.0,'roll': 0.0,'switches': 0,'throttle': 0.5,'timestamp': 0,'vendor_id': 'VID_001F','yaw': 0.0},'timestamp': 1657094238512604416}

其中包含六大类信息信息:

collision  #碰撞信息 has_collidedimpact_pointnormalobject_idobject_namepenetration_depthpositiontime_stamp
gps_location  # GPS信息altitudelatitudelongitude
kinematics_estimated  # 运动信息,包含的运动信息与真实值读取得到的参数含义一致angular_accelerationangular_velocitylinear_accelerationlinear_velocityorientationposition
landed_state  # 着陆信息,0表示在地面,1表示在空中
rc_data  # 遥控器信息is_initializedis_validleft_zpitchright_zrollswitchesthrottle   timestampvendor_idyaw
timestamp  # 时间戳

AirSim学习日志 6-无人机状态读取相关推荐

  1. AirSim学习日志 4-多无人机集群控制

    集群编队控制有集中式和分布式两种.集中式控制需要一个控制中心,受限于中心计算机计算资源的限制,无法做到大规模编队,且中心计算机被击毁后,系统将失控. 分布式控制没有一个中心点对集群进行控制,通过集群中 ...

  2. AirSim学习日志 3-使用AirSim控制无人机

    AirSim提供很多API接口,本文将使用python,通过这些接口实现对单个无人机简单飞行的控制. 1.python库的安装 需安装两个airsim相关的库: pip install msgpack ...

  3. Python学习日志12 - 办公自动化

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志12课 - 办公自动 ...

  4. 安卓学习日志 Day11 — JSON 解析

    文章目录 概述 USGS 网站 导入项目 JSON JSON 处理 Unix 时间 位置信息拆分 震级信息 震级显示一位小数 震级的圆圈背景 改进界面 添加地震Intent 总结 参考 概述 我们将设 ...

  5. Ajax学习日志(七)—— 解决低版本IE浏览器的缓存问题

    Ajax入门(七) 一.解决低版本IE浏览器的缓存问题 1.1) 低版本IE浏览器的缓存问题及解决方案 1.2)需了解的知识 1.3)在app.js同目录下新建一个txt文件 1.4)在app.js创 ...

  6. 学习日志框架之——搞懂logback

    文章目录 系列文章目录 一.logback概述 1.Logback简介 2.Logback中的组件 3.Logback配置文件 4.日志输出格式 二.使用示例 1.依赖导入 2.入门案例 3.配置文件 ...

  7. 0122 - EOS 编程学习日志(1)

    EOS 编程到底是什么呢.学什么呢? 抱歉,我现在也不无法回答.不过,我可以告诉你我做了哪些尝试.目前的理解,以及下一步还要做什么. 首先,EOS 开发最重要的文档自然是在 GitHub: githu ...

  8. 混合现实在医学领域的应用学习日志

    混合现实在医学领域的应用学习日志 理论知识 混合现实 追踪系统 硬件 场景 可扩展性 应用 教育 培训 手术 远程手术 da Vinci Research Kit (dVRK) 理论知识 混合现实 保 ...

  9. 2021.1.17-Robocup 2D学习日志

    2021.1.17-Robocup 2D学习日志 环境平台 比赛平台server和monitor 球员客户端client 比赛规则 自动裁判 人为干预 基本的资料 环境平台 比赛平台server和mo ...

最新文章

  1. 06章 映射一对多双向关联关系、以及cascade、inverse属性
  2. 递归和循环:斐波那契数列
  3. select下拉列表选中后,跳转新链接
  4. error C1189: #error : WINDOWS.H already included. MFC apps must not #include windows.h
  5. java writablesheet_jxl加边框,jxl合并单元格,单元格的设置,单元格居中
  6. Java基础11-封装(思想、访问权限、this、构造方法)
  7. 【使用注意】多线程导致解码混乱的情况
  8. 为什么选择Cassandra
  9. css三栏布局技巧,CSS-三栏布局的常用6种方法
  10. 冒泡排序(一分钟懂)
  11. JDBC上传文件存入BLOB字段
  12. javascript中对象的深度克隆
  13. 单价数量和总价的公式_单价、数量和总价之间的关系
  14. 如何将手机的网络代理给电脑 win10
  15. iOS多线程——GCD底层探索中(dispatch_async与dispatch_sync源码)
  16. CSS控制背景图片自适应表格大小
  17. 计算机有哪些值得参加的比赛
  18. 计算机专业英语动名词句子,40句英文写作开头表达+五类加分句型
  19. Win10下C:\Users\John以账户名称命名的系统文件夹用户名的修改
  20. 物联网通信协议(接入协议)

热门文章

  1. 乐趣浏览器 v1.1.26
  2. 维特比算法 python_HMM-维特比算法理解与实现(python)
  3. 不要再这么傻,OK?
  4. 界面控件Telerik UI for WinForms入门教程 - Telerik Upgrade API Analyzer
  5. 【坤坤讲课--图】Dijkstra与prim算法的比较
  6. myfriend 的博客
  7. 关于账号安全的问题解答|亚马逊电商
  8. 锥形角膜对视力危害大,可采用适当方法及早治疗!
  9. 国内知名scada产品的特点介绍
  10. 浏览器搜索一个内容会跳转到空白网页的问题解决方案