天天看点

AirSim官方动态 | Airsim-API接口总结

作者:诗歌的古老韵律

在上一期中,我们将带您了解Airsim的一些常见API接口和使用一些简单API接口的模拟控制模型。接下来,我们将为您介绍一些用于世界(地图)接口的 API 接口、用于模型系统状态的 API 以及如何添加新的 API。

AirSim官方动态 | Airsim-API接口总结

首先,映射接口相关的API1.1视线和全球API来测试从车辆到一个或两个视点的模拟,参见SimTestLineOfSightToPoint(point,Vehicle_name)和simTestLineOfSightBetweenPoints(point1,point2)这两个API,都是全球模拟的,以GeoPoints向量的形式,你可以使用simGetWorldExtents检索它们。().

1.2 天气 API 默认禁用所有天气效果。要启用天气效果,请先调用:SimEnableWeather(True)可以使用以下SimSetWeatherParameter方法启用各种天气效果天气效果,例如client.simSetWeatherParameter。天气参数雨, 0.25);第二个参数值是从 0 到 1。第一个参数提供以下选项:

类天气参数: 雨 = 0 道路湿地 = 1 雪 = 2 道路雪 = 3 枫叶 = 4 路叶 = 5 灰尘 = 6 雾 = 7

有关更多详细信息,请参阅示例代码:https://github.com/Microsoft/AirSim/blob/master/PythonClient/environment/weather.py

1.3 记录API记录API可以通过控制API接口来记录数据,需要记录的数据可以通过设置进行开发。要开始录制,请输入:client.startRecording() 再次,要停止录制,请使用: client.stopRecording() 要检查录制是否正在运行,请致电:client.isRecording()

此 API 与 R 按钮(用于切换录制状态)配合使用,如果使用 R 键启用了录制,则 IsRecording()) 将返回 True,并且可以使用 stopRecording()。同样,如果在视口中按 R 键,则以 API 开头的录制将停止。当您使用 API 开始或停止录制时,LogMessage 也会显示在视口的左上角。

1.4 Wind APIPI: SimSetWind()) API可以在模拟过程中改变风的状态。例如,可以在世界框架,NED方向和风速中使用此API开发风,以设置北(即前进)方向的20,m / s风:

#Set风到(20,0,0)在NED(前进方向)风=airsim。Vector3r(20, 0, 0)client.simSetWind(wind)

有关详细信息,请参阅示例:https://github.com/Microsoft/AirSim/blob/master/PythonClient/multirotor/set_wind.py

1.5 Lidar APIAirSim 提供了一个 API,用于从车辆上的激光雷达传感器检索点云数据。您可以在 settings.json 中设置通道数、每秒点数、水平和垂直 FOV 等参数。有关激光雷达 API 和设置以及传感器设置的详细信息,请参阅以下 url:

激光雷达 API 设置:https://microsoft.github.io/AirSim/lidar/

传感器设置:https://microsoft.github.io/AirSim/sensors/

1.6 坐标系的所有 AirSim API 都使用 NED 坐标系,即 S 的北部、Y 的东部和 Z 的底部。所有单位都使用THE系统。请注意,这与虚幻引擎中使用的坐标系不同。在虚幻引擎中,Z是向上而不是向下,长度单位是厘米而不是米。

AirSim API 负责进行适当的转换。车辆的起点始终是 NED 系统中的坐标 (0, 0, 0)。因此,在从虚幻坐标转换为NED时,我们首先减去起始偏移量,然后缩放100以进行cm到m的转换。运营商是使用虚拟引擎中的 Start Player 组件构建的。Setings.json 中的一个设置是 Named OriginGeopoint,它将地理经度、经度和高度分配给 Player Start 组件。

二、用于控制器模型的API 2.1汽车API

汽车具有以下可用的 API:

setCarControls:这允许您设置油门,转向,手刹以及自动或手动档位。

getCarState:这将检索状态信息,包括速度,当前齿轮和6个动力学量:位置,方向,线速度和角速度,线速度和角加速度。所有量均在 NED 坐标系中,世界坐标系中的 SI 单位是主体坐标系中角速度和加速度的补充。

图像 API(参考上一期)

2.2 多旋翼 API 多旋翼可以通过指定角度、速度矢量、目标位置或这些因素的某种组合来控制。有一个用于此目的的 API 对应关系。在进行位置控制时,我们需要使用一些路径跟踪算法。默认情况下,AirSim 使用 carrot after 算法。高级控制 - 您只需指定高级目标,其余部分由固件处理。AirSim目前可用的最低控制级别是MoveByAngleThrottleAsync API。

2.3 获取多旋翼状态 多旋翼状态API只需调用一次即可返回多旋翼状态。这里的状态包括碰撞,估计动力学(即由聚变传感器计算的动力学)和时间戳(自纪元以来的纳秒)。这里的运动学对应于六个要素:位置,方向,线速度和角速度,线速度和角加速度。所有数量都在 NED 坐标系中,世界地图中坐标系的 SI 单位(角速度和加速度除外)都在主体坐标系中。

2.4 异步方法、持续时间、max_wait_seconds参数 许多 API 都有称为后缀"异步"的参数;这些参数指示任务在 AirSim 中启动后立即返回,以便代码可以在执行任务时执行其他操作。如果要等待此任务完成,可以调用 waitOnLastTask,例如:

C++client.takeoffAsync()->waitOnLastTask();

#Pythonclient.takeoffAsync().join()

如果启动另一个命令,则会自动取消上一个任务并启动新命令。每个新发布的轨道都会取消以前的轨道,从而允许代码在新的传感器数据到达时不断更新。

2.5 传动系统

API:动力传动系统飞行有两种模式可供选择,通过参数设置:irsim。DrivetrainType.ForwardOnly 或 Airsim.DrivetrainType.MaxDegreeOfFreedom.

(1)当您指定"仅向前"时,请指示车辆的前部应始终指向行驶方向。因此,如果您希望无人机向左转,它将首先旋转,因此前部指向左侧。当您只有前置摄像头并使用FPV视图操作车辆时,此模式非常有用。

(2)MaxDegree OfFreedom意味着你不需要关心你指向哪里。因此,当您左转时,多旋翼无人机可以向任何方向飞行,视角不会受到影响。

2.6 偏航模式(yaw_mode)yaw_mode是一个具有两个场的结构,yaw_or_rate和is_rate。如果is_ratefield为真,则yaw_or_ratefield是以度/秒为单位的角速度,此时模型在移动时围绕其轴连续旋转。如果is_rate为 False,则yaw_or_rate以度为单位的角度,其中模型旋转到特定角度(即偏航),并在移动时保持该角度。

2.7 Lookahead and adaptive_lookahead AirSim 在设置跟随路径时使用"胡萝卜跟随"算法。该算法通过向前看路径并调整其速度矢量来运行。该算法的参数由前瞻adaptive_lookahead并指定。

第三,添加新的 API 接口以添加新的 API 需要修改源代码。AirSim支持的各个抽象级别需要进行许多更改。需要修改的主要文件如下所述。此外,如果您不确定如何进行更改或获得反馈,请随时提出问题或起草PR。

3.1 实现 API 需要先实现添加的 API,然后再添加调用和处理 API。以下是一些示例:

(1) 基于车辆的 API moveByVelocity BodyFrameAsync 用于多旋翼 XY 坐标系中基于速度的运动调节。

在某些情况下,可能需要其他结构来存储数据,GetRotorStates API 就是一个很好的例子,其中 RotorStates 在两个位置定义结构,主要用于从 RPC 到内部代码的转换。但它也需要在AirLib和虚幻/插件中进行修改才能实现它。

(2) 环境相关原料药

这些与环境相关的API需要与模拟环境本身进行交互,通常在虚幻/插件文件夹中,例如:

simCreateVoxelGrid API主要用于构建和保存环境网格的binvox格式 - WorldSimApi .cpp

SimAddVehicle API 用于在运行时创建车辆 - SimMode、WorldSimApi 文件

有关 Airsim 创建新 API 接口的详细信息,请参阅 URL:https://microsoft.github.io/AirSim/adding_new_apis/

AirSim所有API的结束语到此结束。AirSim Research Platform作为一款支持计算机的深度学习、计算机视觉和增强型学习算法,具有高性能、真实世界的地图模拟功能,确实很有前途。提供的API接口也是Airsim广泛应用的关键,所以在API接口上介绍这两个问题也是至关重要的,希望关心Airsim的同学们能认真看看文章或官网。

官方信息 此PX4更新: https://microsoft.github.io/AirSim/apis/

结束 - 随着技术的快速发展,Amu Labs将跟上技术的步伐,不断向大家推荐机器人行业的最新技术和硬件。看到我们训练有素的学生在技术上取得进步是我们培训的最大价值。如果您从事机器人行业,请关注我们的公众号,我们将继续发布机器人行业最有价值的信息和技术。阿木实验室致力于前沿的IT技术教育和智能装备,让机器人研发更高效!