AirSim学习日志 6-无人机状态读取
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-无人机状态读取相关推荐
- AirSim学习日志 4-多无人机集群控制
集群编队控制有集中式和分布式两种.集中式控制需要一个控制中心,受限于中心计算机计算资源的限制,无法做到大规模编队,且中心计算机被击毁后,系统将失控. 分布式控制没有一个中心点对集群进行控制,通过集群中 ...
- AirSim学习日志 3-使用AirSim控制无人机
AirSim提供很多API接口,本文将使用python,通过这些接口实现对单个无人机简单飞行的控制. 1.python库的安装 需安装两个airsim相关的库: pip install msgpack ...
- Python学习日志12 - 办公自动化
Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志12课 - 办公自动 ...
- 安卓学习日志 Day11 — JSON 解析
文章目录 概述 USGS 网站 导入项目 JSON JSON 处理 Unix 时间 位置信息拆分 震级信息 震级显示一位小数 震级的圆圈背景 改进界面 添加地震Intent 总结 参考 概述 我们将设 ...
- Ajax学习日志(七)—— 解决低版本IE浏览器的缓存问题
Ajax入门(七) 一.解决低版本IE浏览器的缓存问题 1.1) 低版本IE浏览器的缓存问题及解决方案 1.2)需了解的知识 1.3)在app.js同目录下新建一个txt文件 1.4)在app.js创 ...
- 学习日志框架之——搞懂logback
文章目录 系列文章目录 一.logback概述 1.Logback简介 2.Logback中的组件 3.Logback配置文件 4.日志输出格式 二.使用示例 1.依赖导入 2.入门案例 3.配置文件 ...
- 0122 - EOS 编程学习日志(1)
EOS 编程到底是什么呢.学什么呢? 抱歉,我现在也不无法回答.不过,我可以告诉你我做了哪些尝试.目前的理解,以及下一步还要做什么. 首先,EOS 开发最重要的文档自然是在 GitHub: githu ...
- 混合现实在医学领域的应用学习日志
混合现实在医学领域的应用学习日志 理论知识 混合现实 追踪系统 硬件 场景 可扩展性 应用 教育 培训 手术 远程手术 da Vinci Research Kit (dVRK) 理论知识 混合现实 保 ...
- 2021.1.17-Robocup 2D学习日志
2021.1.17-Robocup 2D学习日志 环境平台 比赛平台server和monitor 球员客户端client 比赛规则 自动裁判 人为干预 基本的资料 环境平台 比赛平台server和mo ...
最新文章
- 06章 映射一对多双向关联关系、以及cascade、inverse属性
- 递归和循环:斐波那契数列
- select下拉列表选中后,跳转新链接
- error C1189: #error : WINDOWS.H already included. MFC apps must not #include windows.h
- java writablesheet_jxl加边框,jxl合并单元格,单元格的设置,单元格居中
- Java基础11-封装(思想、访问权限、this、构造方法)
- 【使用注意】多线程导致解码混乱的情况
- 为什么选择Cassandra
- css三栏布局技巧,CSS-三栏布局的常用6种方法
- 冒泡排序(一分钟懂)
- JDBC上传文件存入BLOB字段
- javascript中对象的深度克隆
- 单价数量和总价的公式_单价、数量和总价之间的关系
- 如何将手机的网络代理给电脑 win10
- iOS多线程——GCD底层探索中(dispatch_async与dispatch_sync源码)
- CSS控制背景图片自适应表格大小
- 计算机有哪些值得参加的比赛
- 计算机专业英语动名词句子,40句英文写作开头表达+五类加分句型
- Win10下C:\Users\John以账户名称命名的系统文件夹用户名的修改
- 物联网通信协议(接入协议)