airsim

本页面介绍 airsim,一个用于 Microsoft AirSim 的 Python 包。

class airsim.client.VehicleClient(ip='', port=41451, timeout_value=3600)[源]

基类: object

armDisarm(arm, vehicle_name='')[源]

武装或解除武装车辆

参数
  • arm (bool) – True 为武装,False 为解除武装车辆

  • vehicle_name (str, optional) – 发送此命令的车辆名称

返回

成功

返回类型

bool

cancelLastTask(vehicle_name='')[源]

取消上一个异步任务

参数

vehicle_name (str, optional) – 车辆名称

confirmConnection()[源]

每秒检查连接状态并在控制台中报告,以便用户可以看到连接进度。

enableApiControl(is_enabled, vehicle_name='')[源]

启用或禁用与 vehicle_name 对应的车辆的 API 控制

参数
  • is_enabled (bool) – True 为启用,False 为禁用 API 控制

  • vehicle_name (str, optional) – 发送此命令的车辆名称

getBarometerData(barometer_name='', vehicle_name='')[源]
参数
  • barometer_name (str, optional) – 要获取数据的气压计名称,在 settings.json 中指定

  • vehicle_name (str, optional) – 传感器对应的车辆名称

返回类型

气压计数据

getClientVersion()[源]
getDistanceSensorData(distance_sensor_name='', vehicle_name='')[源]
参数
  • distance_sensor_name (str, optional) – 要获取数据的距离传感器名称,在 settings.json 中指定

  • vehicle_name (str, optional) – 传感器对应的车辆名称

返回类型

距离传感器数据

getGpsData(gps_name='', vehicle_name='')[源]
参数
  • gps_name (str, optional) – 要获取数据的 GPS 名称,在 settings.json 中指定

  • vehicle_name (str, optional) – 传感器对应的车辆名称

返回类型

GPS 数据

getHomeGeoPoint(vehicle_name='')[源]

获取车辆的家园位置

参数

vehicle_name (str, optional) – 获取家园位置的车辆名称

返回

车辆的家园位置

返回类型

GeoPoint

getImuData(imu_name='', vehicle_name='')[源]
参数
  • imu_name (str, optional) – 要获取数据的 IMU 名称,在 settings.json 中指定

  • vehicle_name (str, optional) – 传感器对应的车辆名称

返回类型

IMU 数据

getLidarData(lidar_name='', vehicle_name='')[源]
参数
  • lidar_name (str, optional) – 要获取数据的激光雷达名称,在 settings.json 中指定

  • vehicle_name (str, optional) – 传感器对应的车辆名称

返回类型

激光雷达数据

getMagnetometerData(magnetometer_name='', vehicle_name='')[源]
参数
  • magnetometer_name (str, optional) – 要获取数据的磁力计名称,在 settings.json 中指定

  • vehicle_name (str, optional) – 传感器对应的车辆名称

返回类型

磁力计数据

getMinRequiredClientVersion()[源]
getMinRequiredServerVersion()[源]
getServerVersion()[源]
getSettingsString()[源]

获取 AirSim 正在使用的设置文本

返回

JSON 格式的设置文本

返回类型

str

isApiControlEnabled(vehicle_name='')[源]

如果建立了 API 控制,则返回 true。

如果为 false(默认),则 API 调用将被忽略。成功调用 enableApiControl 后,isApiControlEnabled 应该返回 true。

参数

vehicle_name (str, optional) – 车辆名称

返回

如果 API 控制已启用

返回类型

bool

isRecording()[源]

记录是否正在运行

返回

如果正在记录,则为 True,否则为 False

返回类型

bool

listVehicles()[源]

列出当前车辆的名称

返回

包含所有车辆名称的列表

返回类型

列表[字符串]

ping()[源]

如果连接已建立,则此调用将返回 true,否则它将被阻塞直到超时

返回类型

bool

reset()[源]

将车辆重置为原始起始状态

请注意,在调用重置后,必须再次调用 enableApiControlarmDisarm

simAddDetectionFilterMeshName(camera_name, image_type, mesh_name, vehicle_name='', external=False)[源]

添加要以通配符格式检测的网格名称

例如:simAddDetectionFilterMeshName(“Car_*”) 将检测所有名为“Car_*”的实例

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • image_type (ImageType) – 所需图像的类型

  • mesh_name (str) – 通配符格式的网格名称

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

simAddVehicle(vehicle_name, vehicle_type, pose, pawn_path='')[源]

在运行时创建车辆

参数
  • vehicle_name (str) – 正在创建的车辆的名称

  • vehicle_type (str) – 车辆类型,例如“simpleflight”

  • pose (Pose) – 车辆的初始姿态

  • pawn_path (str, optional) – 车辆蓝图路径,默认为空,使用车辆类型的默认蓝图

返回

车辆是否已创建

返回类型

bool

simClearDetectionMeshNames(camera_name, image_type, vehicle_name='', external=False)[源]

清除检测过滤器中的所有网格名称

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • image_type (ImageType) – 所需图像的类型

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

simContinueForFrames(frames)[源]

模拟将继续(如果已暂停则恢复)指定的帧数,之后模拟将暂停。

参数

frames (int) – 模拟运行的帧数

simContinueForTime(seconds)[源]

模拟将继续指定的秒数

参数

seconds (float) – 模拟运行的时间

simCreateVoxelGrid(position, x, y, z, res, of)[源]

构建并保存 binvox 格式的环境体素网格

参数
  • position (Vector3r) – 体素网格中心位置,单位为米

  • x (int) – 每个体素网格尺寸的大小,单位为米

  • y (int) – 每个体素网格尺寸的大小,单位为米

  • z (int) – 每个体素网格尺寸的大小,单位为米

  • res (float) – 体素网格的分辨率,单位为米

  • of (str) – 保存体素网格的输出文件名称

返回

如果输出成功写入文件,则为 True,否则为 False

返回类型

bool

simDestroyObject(object_name)[源]

从世界中移除选定的对象

参数

object_name (str) – 要移除的对象的名称

返回

如果对象已排队等待移除,则为 True

返回类型

bool

simEnableFocusPlane(enable, camera_name, vehicle_name='', external=False)[源]
simEnableManualFocus(enable, camera_name, vehicle_name='', external=False)[源]
simEnableWeather(enable)[源]

启用天气效果。在使用 simSetWeatherParameter API 之前需要调用。

参数

enable (bool) – True 为启用,False 为禁用

simFlushPersistentMarkers()[源]

清除所有持久标记——那些在下面的 API 中设置 is_persistent=True 绘制的标记

simGetCameraInfo(camera_name, vehicle_name='', external=False)[源]

获取摄像机详细信息

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

返回类型

相机信息

simGetCollisionInfo(vehicle_name='')[源]
参数

vehicle_name (str, optional) – 要获取信息的车辆名称

返回类型

碰撞信息

simGetCurrentFieldOfView(camera_name, vehicle_name='', external=False)[源]
simGetDetections(camera_name, image_type, vehicle_name='', external=False)[源]

获取当前检测

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • image_type (ImageType) – 所需图像的类型

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

返回

检测信息数组

simGetDistortionParams(camera_name, vehicle_name='', external=False)[源]

获取相机畸变参数

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

返回

对应于 K1、K2、K3、P1、P2 的畸变参数值列表。

返回类型

列表 (浮点数)

simGetFilmbackSettings(camera_name, vehicle_name='', external=False)[源]
simGetFocalLength(camera_name, vehicle_name='', external=False)[源]
simGetFocusAperture(camera_name, vehicle_name='', external=False)[源]
simGetFocusDistance(camera_name, vehicle_name='', external=False)[源]
simGetGroundTruthEnvironment(vehicle_name='') EnvironmentState[源]

获取真实环境状态

返回的 EnvironmentState 中的位置以车辆起始点为坐标系

参数

vehicle_name (str, optional) – 车辆名称

返回

真实环境状态

返回类型

环境状态

simGetGroundTruthKinematics(vehicle_name='') KinematicsState[源]

获取车辆的真实运动学

返回的 KinematicsState 中的位置以车辆起始点为坐标系

参数

vehicle_name (str, optional) – 车辆名称

返回

车辆的真实值

返回类型

运动学状态

simGetImage(camera_name, image_type, vehicle_name='', external=False)[source]

获取单个图像

返回PNG格式图像的字节,可将其存储到二进制文件中以创建.png图像。string_to_uint8_array() 可用于转换为Numpy unit8数组。有关详细信息,请参见https://msdocs.cn/AirSim/image_apis/

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • image_type (ImageType) – 所需图像的类型

  • vehicle_name (str, 可选) – 带有摄像头的载具名称

  • external (bool, optional) – 摄像机是否为外部摄像机

返回

压缩PNG图像的二进制字符串字面量

simGetImages(requests, vehicle_name='', external=False)[source]

获取多个图像

有关详细信息和示例,请参见https://msdocs.cn/AirSim/image_apis/

参数
  • requests (list[ImageRequest]) – 所需图像

  • vehicle_name (str, 可选) – 与摄像头关联的载具名称

  • external (bool, optional) – 摄像机是否为外部摄像机

返回类型

list[ImageResponse]

simGetLensSettings(camera_name, vehicle_name='', external=False)[source]
simGetLidarSegmentation(lidar_name='', vehicle_name='')[source]

注意:已弃用的API,请改用getLidarData() API。返回上次Lidar更新中每个点碰撞对象的分割ID

参数
  • lidar_name (str, 可选) – Lidar传感器名称

  • vehicle_name (str, 可选) – 带有传感器的载具名称

返回

对象的分割ID

返回类型

list[int]

simGetMeshPositionVertexBuffers()[source]

返回构成场景的静态网格

有关详细信息以及如何使用此功能,请参见https://msdocs.cn/AirSim/meshes/

返回类型

list[MeshPositionVertexBuffersResponse]

simGetObjectPose(object_name)[source]

返回姿态中的位置在世界坐标系中

参数

object_name (str) – 要获取姿态的对象

返回类型

姿态

simGetObjectScale(object_name)[source]

获取世界中对象的比例

参数

object_name (str) – 要获取比例的对象

返回

缩放

返回类型

airsim.Vector3r

simGetPresetFilmbackSettings(camera_name, vehicle_name='', external=False)[source]
simGetPresetLensSettings(camera_name, vehicle_name='', external=False)[source]
simGetSegmentationObjectID(mesh_name)[source]

返回给定网格名称的对象ID

对象ID与RGB值的映射可在https://msdocs.cn/AirSim/seg_rgbs.txt查看。

参数

mesh_name (str) – 要获取ID的网格名称

simGetVehiclePose(vehicle_name='')[source]

返回姿态中的位置在载具起点坐标系中

参数

vehicle_name (str, 可选) – 要获取姿态的载具名称

返回类型

姿态

simGetWorldExtents()[source]

返回表示世界最小和最大范围的GeoPoint列表

返回

list[GeoPoint]

simIsPause()[source]

如果模拟暂停,则返回true

返回

如果模拟已暂停

返回类型

bool

simListAssets()[source]

列出资产注册表中存在的所有资产

返回

所有资产的名称

返回类型

列表[字符串]

simListSceneObjects(name_regex='.*')[source]

列出环境中存在的对象

默认行为是列出所有对象,可以使用正则表达式返回匹配对象或角色的较小列表

参数

name_regex (str, 可选) – 用于匹配角色名称的字符串,例如 “Cylinder.*”

返回

包含所有名称的列表

返回类型

列表[字符串]

simLoadLevel(level_name)[source]

加载由其名称指定的关卡

参数

level_name (str) – 要加载的关卡名称

返回

如果关卡成功加载,则为True

返回类型

bool

simPause(is_paused)[source]

暂停模拟

参数

is_paused (bool) – True表示暂停模拟,False表示释放

simPlotArrows(points_start, points_end, color_rgba=[1.0, 0.0, 0.0, 1.0], thickness=5.0, arrow_size=2.0, duration=-1.0, is_persistent=False)[source]

在世界NED坐标系中绘制一系列箭头,定义为从 points_start[0] 到 points_end[0],points_start[1] 到 points_end[1],…,points_start[n-1] 到 points_end[n-1]

参数
  • points_start (list[Vector3r]) – 箭头起点三维位置列表,指定为 Vector3r 对象

  • points_end (list[Vector3r]) – 箭头终点三维位置列表,指定为 Vector3r 对象

  • color_rgba (list, 可选) – 期望的RGBA值,范围从0.0到1.0

  • thickness (float, 可选) – 线条粗细

  • arrow_size (float, 可选) – 箭头头部大小

  • duration (float, 可选) – 绘制持续时间(秒)

  • is_persistent (bool, 可选) – 如果设置为 True,则所需对象将无限期绘制。

simPlotLineList(points, color_rgba=[1.0, 0.0, 0.0, 1.0], thickness=5.0, duration=-1.0, is_persistent=False)[source]

在世界NED坐标系中绘制线段列表,定义为从 points[0] 到 points[1],points[2] 到 points[3],…,points[n-2] 到 points[n-1]

参数
  • points (list[Vector3r]) – 线段起点和终点的三维位置列表,指定为Vector3r对象。必须是偶数。

  • color_rgba (list, 可选) – 期望的RGBA值,范围从0.0到1.0

  • thickness (float, 可选) – 线条粗细

  • duration (float, 可选) – 绘制持续时间(秒)

  • is_persistent (bool, 可选) – 如果设置为 True,则所需对象将无限期绘制。

simPlotLineStrip(points, color_rgba=[1.0, 0.0, 0.0, 1.0], thickness=5.0, duration=-1.0, is_persistent=False)[source]

在世界NED坐标系中绘制线带,定义为从points[0]到points[1],points[1]到points[2],……,points[n-2]到points[n-1]

参数
  • points (list[Vector3r]) – 线段起点和终点的三维位置列表,指定为 Vector3r 对象

  • color_rgba (list, 可选) – 期望的RGBA值,范围从0.0到1.0

  • thickness (float, 可选) – 线条粗细

  • duration (float, 可选) – 绘制持续时间(秒)

  • is_persistent (bool, 可选) – 如果设置为 True,则所需对象将无限期绘制。

simPlotPoints(points, color_rgba=[1.0, 0.0, 0.0, 1.0], size=10.0, duration=-1.0, is_persistent=False)[source]

在世界NED坐标系中绘制三维点列表

参数
  • points (list[Vector3r]) – Vector3r 对象列表

  • color_rgba (list, 可选) – 期望的RGBA值,范围从0.0到1.0

  • size (float, 可选) – 绘制点的大小

  • duration (float, 可选) – 绘制持续时间(秒)

  • is_persistent (bool, 可选) – 如果设置为 True,则所需对象将无限期绘制。

simPlotStrings(strings, positions, scale=5, color_rgba=[1.0, 0.0, 0.0, 1.0], duration=-1.0)[source]

在世界NED坐标系中的指定位置绘制字符串列表。

参数
  • strings (list[String], 可选) – 要绘制的字符串列表

  • positions (list[Vector3r]) – 字符串应绘制的位置列表。应与字符串列表一一对应。

  • scale (float, 可选) – 变换名称的字体比例

  • color_rgba (list, 可选) – 期望的RGBA值,范围从0.0到1.0

  • duration (float, 可选) – 绘制持续时间(秒)

simPlotTransforms(poses, scale=5.0, thickness=5.0, duration=-1.0, is_persistent=False)[source]

在世界NED坐标系中绘制姿态列表。

参数
  • poses (list[Pose]) – 表示要绘制的变换的姿态对象列表

  • scale (float, 可选) – 变换轴的长度

  • thickness (float, 可选) – 变换轴的粗细

  • duration (float, 可选) – 绘制持续时间(秒)

  • is_persistent (bool, 可选) – 如果设置为 True,则所需对象将无限期绘制。

simPlotTransformsWithNames(poses, names, tf_scale=5.0, tf_thickness=5.0, text_scale=10.0, text_color_rgba=[1.0, 0.0, 0.0, 1.0], duration=-1.0)[source]

在世界NED坐标系中绘制变换列表及其名称。

参数
  • poses (list[Pose]) – 表示要绘制的变换的姿态对象列表

  • names (list[string]) – 与姿态列表一一对应的字符串列表

  • tf_scale (float, 可选) – 变换轴的长度

  • tf_thickness (float, 可选) – 变换轴的粗细

  • text_scale (float, 可选) – 变换名称的字体比例

  • text_color_rgba (list, 可选) – 变换名称的RGBA值,范围从0.0到1.0

  • duration (float, 可选) – 绘制持续时间(秒)

simPrintLogMessage(message, message_param='', severity=0)[source]

在模拟器窗口中打印指定消息。

如果提供了 message_param,则它会打印在消息旁边,在这种情况下,如果使用相同消息值但不同 message_param 再次调用此 API,则上一行会被新行覆盖(而不是 API 在显示器上创建新行)。

例如,simPrintLogMessage(“迭代次数: “, to_string(i)) 在 API 以不同i值调用时,会持续更新显示器上的同一行。严重性参数的有效值是0到3(含),对应不同的颜色。

参数
  • message (str) – 要打印的消息

  • message_param (str, 可选) – 要在消息旁边打印的参数

  • severity (int, 可选) – 范围0-3,包含0和3,对应消息的严重性

simRunConsoleCommand(command)[source]

允许客户端通过API在虚幻引擎的本机控制台中执行命令。可以访问无数内置命令,例如“stat unit”、“stat fps”、“open [map]”、调整任何配置设置等。允许用户通过向关卡蓝图添加自定义事件,然后调用控制台命令“ce MyEventName [args]”来非常轻松地创建定制API。无需重新编译AirSim!

参数

command ([string]) – 要运行的虚幻引擎控制台命令

返回

成功

返回类型

[bool]

simSetCameraFov(camera_name, fov_degrees, vehicle_name='', external=False)[source]
  • 控制选定摄像头的视场角

参数
  • camera_name (str) – 要控制的摄像头名称

  • fov_degrees (float) – 视场角值,单位为度

  • vehicle_name (str, 可选) – 摄像头所属的载具名称

  • external (bool, optional) – 摄像机是否为外部摄像机

simSetCameraPose(camera_name, pose, vehicle_name='', external=False)[source]
  • 控制所选摄像机的姿态

参数
  • camera_name (str) – 要控制的摄像头名称

  • pose (姿态) – 表示摄像机所需位置和方向的姿态

  • vehicle_name (str, 可选) – 摄像头所属的载具名称

  • external (bool, optional) – 摄像机是否为外部摄像机

simSetDetectionFilterRadius(camera_name, image_type, radius_cm, vehicle_name='', external=False)[source]

设置所有摄像机的检测半径

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • image_type (ImageType) – 所需图像的类型

  • radius_cm (整数) – 半径,单位 [厘米]

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

simSetDistortionParam(camera_name, param_name, value, vehicle_name='', external=False)[source]

设置单个摄像机畸变参数

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • param_name (字符串) – 畸变参数名称

  • value (浮点数) – 畸变参数值

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

simSetDistortionParams(camera_name, distortion_params, vehicle_name='', external=False)[source]

设置摄像机畸变参数

参数
  • camera_name (str) – 摄像机名称,为了向后兼容,也可以使用 0,1 等 ID 号

  • distortion_params (字典) – 畸变参数名称和对应值的字典 {“K1”: 0.0, “K2”: 0.0, “K3”: 0.0, “P1”: 0.0, “P2”: 0.0}

  • vehicle_name (str, optional) – 摄像机关联的车辆

  • external (bool, optional) – 摄像机是否为外部摄像机

simSetFilmbackSettings(sensor_width, sensor_height, camera_name, vehicle_name='', external=False)[source]
simSetFocalLength(focal_length, camera_name, vehicle_name='', external=False)[source]
simSetFocusAperture(focus_aperture, camera_name, vehicle_name='', external=False)[source]
simSetFocusDistance(focus_distance, camera_name, vehicle_name='', external=False)[source]
simSetKinematics(state, ignore_collision, vehicle_name='')[source]

设置飞行器的运动学状态

如果您不想改变位置(或方向),只需将位置(或方向)的分量设置为浮点 NaN 值

参数
  • state (运动学状态) – 飞行器的期望姿态

  • ignore_collision (布尔值) – 是否忽略任何碰撞

  • vehicle_name (字符串, 可选) – 要移动的飞行器名称

simSetLightIntensity(light_name, intensity)[source]

改变指定光的强度

参数
  • light_name (字符串) – 要改变的光的名称

  • intensity (浮点数) – 新的强度值

返回

如果成功则为 True,否则为 False

返回类型

bool

simSetObjectMaterial(object_name, material_name, component_id=0)[source]

运行时交换纹理 API 详情请参阅 https://msdocs.cn/AirSim/retexturing/ :param object_name: 要设置材质的物体名称 :type object_name: str :param material_name: 要为物体设置的材质名称 :type material_name: str :param component_id: 材质元素的索引 :type component_id: int, 可选

返回

如果材质设置成功则为 True

返回类型

bool

simSetObjectMaterialFromTexture(object_name, texture_path, component_id=0)[source]

运行时交换纹理 API 详情请参阅 https://msdocs.cn/AirSim/retexturing/ :param object_name: 要设置材质的物体名称 :type object_name: str :param texture_path: 要为物体设置的纹理路径 :type texture_path: str :param component_id: 材质元素的索引 :type component_id: int, 可选

返回

如果材质设置成功则为 True

返回类型

bool

simSetObjectPose(object_name, pose, teleport=True)[source]

设置环境中物体(actor)的姿态

指定的 actor 必须将 Mobility 设置为可移动,否则将出现未定义的行为。有关如何设置 Mobility 和 Teleport 参数影响的详细信息,请参阅 https://www.unrealengine.com/en-US/blog/moving-physical-objects

参数
  • object_name (字符串) – 要移动的物体(actor)名称

  • pose (姿态) – 物体的期望姿态

  • teleport (布尔值, 可选) – 是否立即移动物体而不影响其速度

返回

如果移动成功

返回类型

bool

simSetObjectScale(object_name, scale_vector)[source]

设置世界中物体的缩放比例

参数
  • object_name (字符串) – 要设置缩放比例的物体

  • scale_vector (airsim.Vector3r) – 物体的期望缩放比例

返回

如果缩放比例更改成功则为 True

返回类型

bool

simSetPresetFilmbackSettings(preset_filmback_settings, camera_name, vehicle_name='', external=False)[source]
simSetPresetLensSettings(preset_lens_settings, camera_name, vehicle_name='', external=False)[source]
simSetSegmentationObjectID(mesh_name, object_id, is_name_regex=False)[source]

为特定物体设置分割 ID

详情请参阅 https://msdocs.cn/AirSim/image_apis/#segmentation

参数
返回

如果找到网格

返回类型

bool

simSetTimeOfDay(is_enabled, start_datetime='', is_start_datetime_dst=False, celestial_clock_speed=1, update_interval_secs=60, move_sun=True)[source]

控制环境中太阳的位置

太阳的位置使用设置中 OriginGeopoint 指定的坐标和参数中指定的日期时间计算,如果字符串为空,则使用当前日期和时间

参数
  • is_enabled (布尔值) – True 表示启用日间效果,False 表示将位置重置为原始位置

  • start_datetime (字符串, 可选) – 日期和时间,格式为 %Y-%m-%d %H:%M:%S,例如 2018-02-12 15:20:00

  • is_start_datetime_dst (布尔值, 可选) – True 表示调整夏令时

  • celestial_clock_speed (浮点数, 可选) – 天体时钟运行速度快于或慢于模拟时钟。例如,值 100 表示每模拟时钟 1 秒,太阳位置前进 100 秒,因此太阳将在天空中移动得更快

  • update_interval_secs (浮点数, 可选) – 更新太阳位置的间隔

  • move_sun (布尔值, 可选) – 是否移动太阳

simSetTraceLine(color_rgba, thickness=1.0, vehicle_name='')[source]

启用追踪时修改线的颜色和粗细

可以通过在编辑器中按 T 或在车辆设置中将 EnableTrace 设置为 True 来启用追踪

参数
  • color_rgba (列表) – 期望的 RGBA 值,范围 0.0 到 1.0

  • thickness (浮点数, 可选) – 线的粗细

  • vehicle_name (字符串, 可选) – 要设置追踪线值的飞行器名称

simSetVehiclePose(pose, ignore_collision, vehicle_name='')[source]

设置飞行器的姿态

如果您不想改变位置(或方向),只需将位置(或方向)的分量设置为浮点 NaN 值

参数
  • pose (姿态) – 飞行器的期望姿态

  • ignore_collision (布尔值) – 是否忽略任何碰撞

  • vehicle_name (字符串, 可选) – 要移动的飞行器名称

simSetWeatherParameter(param, val)[source]

启用各种天气效果

参数
simSetWind(wind)[source]

设置模拟风,在世界坐标系下,NED 方向,单位米/秒

参数

wind (Vector3r) – 风,在世界坐标系下,NED 方向,单位米/秒

simSpawnObject(object_name, asset_name, pose, scale, physics_enabled=False, is_blueprint=False)[source]

在世界中生成选定的物体

参数
  • object_name (字符串) – 新物体的期望名称

  • asset_name (字符串) – 项目数据库中资产(网格)的名称

  • pose (airsim.Pose) – 物体的期望姿态

  • scale (airsim.Vector3r) – 物体的期望缩放比例

  • physics_enabled (布尔值, 可选) – 是否为物体启用物理模拟

  • is_blueprint (布尔值, 可选) – 是生成蓝图还是 actor

返回

生成物体的名称,如果它必须被修改的话

返回类型

str

simSwapTextures(tags, tex_id=0, component_id=0, material_id=0)[source]

运行时交换纹理 API

详情请参阅 https://msdocs.cn/AirSim/retexturing/

参数
  • tags (字符串) – 以“,”或“, ”分隔的标签字符串,用于识别要在哪些 actor 上执行交换

  • tex_id (整数, 可选) –

    对每个进行交换的 actor 所分配的纹理数组进行索引

    如果超出某些物体纹理集的范围,则将对其可用的纹理数量取模

  • component_id (整数, 可选) –

  • material_id (整数, 可选) –

返回

匹配提供的标签并执行纹理交换的物体列表

返回类型

列表[字符串]

simTestLineOfSightBetweenPoints(point1, point2)[source]

返回目标点是否从源点视角可见

参数
返回

成功

返回类型

[bool]

simTestLineOfSightToPoint(point, vehicle_name='')[source]

返回目标点是否从输入飞行器视角可见

参数
返回

成功

返回类型

[bool]

startRecording()[source]

开始录制

将根据设置进行录制

stopRecording()[source]

停止录制

class airsim.client.MultirotorClient(ip='', port=41451, timeout_value=3600)[source]

基类:VehicleClient, object

getMultirotorState(vehicle_name='') MultirotorState[source]

返回的 MultirotorState 中的位置是相对于飞行器起点的坐标系

参数

vehicle_name (字符串, 可选) – 要获取状态的飞行器

返回类型

MultirotorState

getRotorStates(vehicle_name='') RotorStates[source]

用于获取多旋翼所有旋翼的当前状态。状态包括所有旋翼的速度、推力和扭矩。

参数

vehicle_name (字符串, 可选) – 要获取旋翼状态的飞行器

返回

包含时间戳以及所有旋翼的速度、推力和扭矩。

返回类型

RotorStates

goHomeAsync(timeout_sec=3e+38, vehicle_name='')[source]

飞行器返回主页,即起飞位置

参数
  • timeout_sec (整数, 可选) – 飞行器达到期望高度的超时时间

  • vehicle_name (str, optional) – 发送此命令的车辆名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

hoverAsync(vehicle_name='')[source]
landAsync(timeout_sec=60, vehicle_name='')[source]

使飞行器着陆。

参数
  • timeout_sec (int, optional) – 飞行器着陆的超时时间。

  • vehicle_name (str, optional) – 发送此命令的车辆名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByAngleRatesThrottleAsync(roll_rate, pitch_rate, yaw_rate, throttle, duration, vehicle_name='')[source]
  • 期望油门在 0.0 到 1.0 之间。

  • 横滚角速率、俯仰角速率和偏航角速率设定值以**弧度**为单位,在机体坐标系中给出。

  • 机体坐标系遵循前左上 (FLU) 约定和右手定则。

  • 坐标系约定
    • X 轴沿着四旋翼飞行器的**前方**方向。

    绕此轴的顺时针旋转定义为正**横滚**角。
    因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。
    • Y 轴沿着四旋翼飞行器的**左方**方向。

    绕此轴的顺时针旋转定义为正**俯仰**角。
    因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。
    • Z 轴沿着**上方**方向。

    绕此轴的顺时针旋转定义为正**偏航**角。
    因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
参数
  • roll_rate (float) – 期望的横滚角速率,单位为弧度/秒

  • pitch_rate (float) – 期望的俯仰角速率,单位为弧度/秒

  • yaw_rate (float) – 期望的偏航角速率,单位为弧度/秒

  • throttle (float) – 期望的油门(介于 0.0 到 1.0 之间)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByAngleRatesZAsync(roll_rate, pitch_rate, yaw_rate, z, duration, vehicle_name='')[source]
  • Z 值在飞行器的局部 NED 坐标系中给出。

  • 横滚角速率、俯仰角速率和偏航角速率设定值以**弧度**为单位,在机体坐标系中给出。

  • 机体坐标系遵循前左上 (FLU) 约定和右手定则。

  • 坐标系约定
    • X 轴沿着四旋翼飞行器的**前方**方向。

    绕此轴的顺时针旋转定义为正**横滚**角。
    因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。
    • Y 轴沿着四旋翼飞行器的**左方**方向。

    绕此轴的顺时针旋转定义为正**俯仰**角。
    因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。
    • Z 轴沿着**上方**方向。

    绕此轴的顺时针旋转定义为正**偏航**角。
    因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
参数
  • roll_rate (float) – 期望的横滚角速率,单位为弧度/秒

  • pitch_rate (float) – 期望的俯仰角速率,单位为弧度/秒

  • yaw_rate (float) – 期望的偏航角速率,单位为弧度/秒

  • z (float) – 期望的 Z 值(在飞行器的局部 NED 坐标系中)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByAngleThrottleAsync(pitch, roll, throttle, yaw_rate, duration, vehicle_name='')[source]
moveByAngleZAsync(pitch, roll, z, yaw, duration, vehicle_name='')[source]
moveByManualAsync(vx_max, vy_max, z_min, duration, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, vehicle_name='')[source]
  • 读取当前遥控器状态并用它来控制飞行器。

参数设置了飞行时速度和最小高度的限制。如果检测到遥控器状态违反这些限制,则该遥控器状态将被忽略。

参数
  • vx_max (float) – 允许在 X 方向上的最大速度

  • vy_max (float) – 允许在 Y 方向上的最大速度

  • vz_max (float) – 允许在 Z 方向上的最大速度

  • z_min (float) – 允许的飞行器最小 Z 位置

  • duration (float) – 在此持续时间后,飞行器将切换回非手动模式

  • drivetrain (DrivetrainType) – 当为 ForwardOnly 时,飞行器会自行旋转,使其前方始终面向行驶方向。如果为 MaxDegreeOfFreedom,则不会这样做(螃蟹式移动)

  • yaw_mode (YawMode) – 指定飞行器应面向给定角度 (is_rate=False) 还是应以给定速率绕其轴旋转 (is_rate=True)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByMotorPWMsAsync(front_right_pwm, rear_left_pwm, front_left_pwm, rear_right_pwm, duration, vehicle_name='')[source]
  • 直接使用 PWM 值控制电机。

参数
  • front_right_pwm (float) – 右前电机的 PWM 值(介于 0.0 到 1.0 之间)

  • rear_left_pwm (float) – 左后电机的 PWM 值(介于 0.0 到 1.0 之间)

  • front_left_pwm (float) – 左前电机的 PWM 值(介于 0.0 到 1.0 之间)

  • rear_right_pwm (float) – 右后电机的 PWM 值(介于 0.0 到 1.0 之间)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByRC(rcdata=<RCData> {   'is_initialized': False, 'is_valid': False, 'pitch': 0.0, 'roll': 0.0, 'switch1': 0, 'switch2': 0, 'switch3': 0, 'switch4': 0, 'switch5': 0, 'switch6': 0, 'switch7': 0, 'switch8': 0, 'throttle': 0.0, 'timestamp': 0, 'yaw': 0.0}, vehicle_name='')[source]
moveByRollPitchYawThrottleAsync(roll, pitch, yaw, throttle, duration, vehicle_name='')[source]
  • 期望油门在 0.0 到 1.0 之间。

  • 当使用 PX4 时,横滚角、俯仰角和偏航角以**度**为单位给出;当使用 SimpleFlight 时,则以**弧度**为单位给出,在机体坐标系中。

  • 机体坐标系遵循前左上 (FLU) 约定和右手定则。

  • 坐标系约定
    • X 轴沿着四旋翼飞行器的**前方**方向。

    绕此轴的顺时针旋转定义为正**横滚**角。
    因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。
    • Y 轴沿着四旋翼飞行器的**左方**方向。

    绕此轴的顺时针旋转定义为正**俯仰**角。
    因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。
    • Z 轴沿着**上方**方向。

    绕此轴的顺时针旋转定义为正**偏航**角。
    因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
参数
  • roll (float) – 期望的横滚角。

  • pitch (float) – 期望的俯仰角。

  • yaw (float) – 期望的偏航角。

  • throttle (float) – 期望的油门(介于 0.0 到 1.0 之间)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByRollPitchYawZAsync(roll, pitch, yaw, z, duration, vehicle_name='')[source]
  • Z 值在飞行器的局部 NED 坐标系中给出。

  • 横滚角、俯仰角和偏航角的设定值在机体坐标系中以**弧度**为单位给出。

  • 机体坐标系遵循前左上 (FLU) 约定和右手定则。

  • 坐标系约定
    • X 轴沿着四旋翼飞行器的**前方**方向。

    绕此轴的顺时针旋转定义为正**横滚**角。
    因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。
    • Y 轴沿着四旋翼飞行器的**左方**方向。

    绕此轴的顺时针旋转定义为正**俯仰**角。
    因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。
    • Z 轴沿着**上方**方向。

    绕此轴的顺时针旋转定义为正**偏航**角。
    因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
参数
  • roll (float) – 期望的横滚角,单位为弧度。

  • pitch (float) – 期望的俯仰角,单位为弧度。

  • yaw (float) – 期望的偏航角,单位为弧度。

  • z (float) – 期望的 Z 值(在飞行器的局部 NED 坐标系中)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByRollPitchYawrateThrottleAsync(roll, pitch, yaw_rate, throttle, duration, vehicle_name='')[source]
  • 期望油门在 0.0 到 1.0 之间。

  • 横滚角、俯仰角和偏航角速率的设定值在机体坐标系中以**弧度**为单位给出。

  • 机体坐标系遵循前左上 (FLU) 约定和右手定则。

  • 坐标系约定
    • X 轴沿着四旋翼飞行器的**前方**方向。

    绕此轴的顺时针旋转定义为正**横滚**角。
    因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。
    • Y 轴沿着四旋翼飞行器的**左方**方向。

    绕此轴的顺时针旋转定义为正**俯仰**角。
    因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。
    • Z 轴沿着**上方**方向。

    绕此轴的顺时针旋转定义为正**偏航**角。
    因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
参数
  • roll (float) – 期望的横滚角,单位为弧度。

  • pitch (float) – 期望的俯仰角,单位为弧度。

  • yaw_rate (float) – 期望的偏航角速率,单位为弧度/秒。

  • throttle (float) – 期望的油门(介于 0.0 到 1.0 之间)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByRollPitchYawrateZAsync(roll, pitch, yaw_rate, z, duration, vehicle_name='')[source]
  • Z 值在飞行器的局部 NED 坐标系中给出。

  • 横滚角、俯仰角和偏航角速率的设定值在机体坐标系中以**弧度**为单位给出。

  • 机体坐标系遵循前左上 (FLU) 约定和右手定则。

  • 坐标系约定
    • X 轴沿着四旋翼飞行器的**前方**方向。

    绕此轴的顺时针旋转定义为正**横滚**角。
    因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。
    • Y 轴沿着四旋翼飞行器的**左方**方向。

    绕此轴的顺时针旋转定义为正**俯仰**角。
    因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。
    • Z 轴沿着**上方**方向。

    绕此轴的顺时针旋转定义为正**偏航**角。
    因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
参数
  • roll (float) – 期望的横滚角,单位为弧度。

  • pitch (float) – 期望的俯仰角,单位为弧度。

  • yaw_rate (float) – 期望的偏航角速率,单位为弧度/秒。

  • z (float) – 期望的 Z 值(在飞行器的局部 NED 坐标系中)

  • duration (float) – 发送此命令的期望时间量(秒)

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByVelocityAsync(vx, vy, vz, duration, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, vehicle_name='')[source]
参数
  • vx (float) – 在世界 (NED) X 轴上的期望速度

  • vy (float) – 在世界 (NED) Y 轴上的期望速度

  • vz (float) – 在世界 (NED) Z 轴上的期望速度

  • duration (float) – 发送此命令的期望时间量(秒)

  • drivetrain (DrivetrainType, optional) –

  • yaw_mode (YawMode, optional) –

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByVelocityBodyFrameAsync(vx, vy, vz, duration, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, vehicle_name='')[source]
参数
  • vx (float) – 飞行器局部 NED 坐标系 X 轴上的期望速度。

  • vy (float) – 飞行器局部 NED 坐标系 Y 轴上的期望速度。

  • vz (float) – 飞行器局部 NED 坐标系 Z 轴上的期望速度。

  • duration (float) – 发送此命令的期望时间量(秒)

  • drivetrain (DrivetrainType, optional) –

  • yaw_mode (YawMode, optional) –

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveByVelocityZAsync(vx, vy, z, duration, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, vehicle_name='')[source]
moveByVelocityZBodyFrameAsync(vx, vy, z, duration, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, vehicle_name='')[source]
参数
  • vx (float) – 飞行器局部 NED 坐标系 X 轴上的期望速度

  • vy (float) – 飞行器局部 NED 坐标系 Y 轴上的期望速度

  • z (float) – 期望的 Z 值(在飞行器局部 NED 坐标系中)

  • duration (float) – 发送此命令的期望时间量(秒)

  • drivetrain (DrivetrainType, optional) –

  • yaw_mode (YawMode, optional) –

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

moveOnPathAsync(path, velocity, timeout_sec=3e+38, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, lookahead=-1, adaptive_lookahead=1, vehicle_name='')[source]
moveToGPSAsync(latitude, longitude, altitude, velocity, timeout_sec=3e+38, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, lookahead=-1, adaptive_lookahead=1, vehicle_name='')[source]
moveToPositionAsync(x, y, z, velocity, timeout_sec=3e+38, drivetrain=0, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, lookahead=-1, adaptive_lookahead=1, vehicle_name='')[source]
moveToZAsync(z, velocity, timeout_sec=3e+38, yaw_mode=<YawMode> {   'is_rate': True, 'yaw_or_rate': 0.0}, lookahead=-1, adaptive_lookahead=1, vehicle_name='')[source]
rotateByYawRateAsync(yaw_rate, duration, vehicle_name='')[source]
rotateToYawAsync(yaw, timeout_sec=3e+38, margin=5, vehicle_name='')[source]
setAngleLevelControllerGains(angle_level_gains=<airsim.types.AngleLevelControllerGains object>, vehicle_name='')[source]
  • 设置角度级别控制器增益(由任何设置角度参考的 API 使用 - 例如:moveByRollPitchYawZAsync()、moveByRollPitchYawThrottleAsync() 等)

  • 修改这些增益也会影响 moveByVelocityAsync() API 的行为。

    这是因为 AirSim 飞行控制器将通过将速度设定点转换为角度设定点来跟踪速度设定点。

  • 此函数仅在需要修改默认角度级别控制 PID 增益时调用。

  • 传入 AngleLevelControllerGains() 将增益设置为默认的 airsim 值。

参数
  • angle_level_gains (AngleLevelControllerGains) –

    • 对应于机体坐标系中定义的横滚、俯仰、偏航轴。

    • 传入 AngleLevelControllerGains() 以将增益重置为默认推荐值。

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

setAngleRateControllerGains(angle_rate_gains=<airsim.types.AngleRateControllerGains object>, vehicle_name='')[source]
  • 修改这些增益将影响 所有 move*() API。

    这是因为任何速度设定点都将转换为角度级别设定点,该设定点由角度级别控制器跟踪。该角度级别设定点本身由角度速率控制器跟踪。

  • 此函数仅在需要修改默认角度速率控制 PID 增益时调用。

参数
  • angle_rate_gains (AngleRateControllerGains) –

    • 对应于机体坐标系中定义的横滚、俯仰、偏航轴。

    • 传入 AngleRateControllerGains() 以将增益重置为默认推荐值。

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

setPositionControllerGains(position_gains=<airsim.types.PositionControllerGains object>, vehicle_name='')[source]

设置 moveByPositionAsync 的位置控制器增益。此函数仅在需要修改默认位置控制 PID 增益时调用。

参数
  • position_gains (PositionControllerGains) –

    • 对应于 X、Y、Z 轴。

    • 传入 PositionControllerGains() 以将增益重置为默认推荐值。

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

setVelocityControllerGains(velocity_gains=<airsim.types.VelocityControllerGains object>, vehicle_name='')[source]
  • 设置 moveByVelocityAsync() 的速度控制器增益。

  • 此函数仅在需要修改默认速度控制 PID 增益时调用。

  • 传入 VelocityControllerGains() 将增益设置为默认的 airsim 值。

参数
  • velocity_gains (VelocityControllerGains) –

    • 对应于世界 X、Y、Z 轴。

    • 传入 VelocityControllerGains() 以将增益重置为默认推荐值。

    • 修改速度控制器增益将影响 moveOnSplineAsync() 和 moveOnSplineVelConstraintsAsync() 的行为,因为它们都使用速度控制来跟踪轨迹。

  • vehicle_name (str, optional) – 接收此命令的多旋翼飞行器的名称

takeoffAsync(timeout_sec=20, vehicle_name='')[source]

使飞行器起飞至离地 3 米。使用此 API 时,飞行器不应移动。

参数
  • timeout_sec (整数, 可选) – 飞行器达到期望高度的超时时间

  • vehicle_name (str, optional) – 发送此命令的车辆名称

返回

future. 调用 .join() 等待方法完成。示例:client.METHOD().join()

返回类型

msgpackrpc.future.Future

class airsim.client.CarClient(ip='', port=41451, timeout_value=3600)[source]

基类:VehicleClient, object

getCarControls(vehicle_name='')[source]
参数

vehicle_name (字符串, 可选) – 飞行器名称

返回类型

汽车控制

getCarState(vehicle_name='')[source]

返回的 CarState 中的位置在车辆的起始点框架中。

参数

vehicle_name (字符串, 可选) – 飞行器名称

返回类型

汽车状态

setCarControls(controls, vehicle_name='')[source]

使用油门、转向、刹车等控制汽车。

参数
  • controls (CarControls) – 包含控制值的结构体

  • vehicle_name (str, optional) – 要控制的车辆名称

class airsim.types.AngleLevelControllerGains(roll_gains=<airsim.types.PIDGains object>, pitch_gains=<airsim.types.PIDGains object>, yaw_gains=<airsim.types.PIDGains object>)[source]

用于角度速率 PID 控制器的控制器增益结构体

roll_gains

滚转轴的 kP, kI, kD

类型

PID增益

pitch_gains

俯仰轴的 kP, kI, kD

类型

PID增益

yaw_gains

偏航轴的 kP, kI, kD

类型

PID增益

to_lists()[source]
class airsim.types.AngleRateControllerGains(roll_gains=<airsim.types.PIDGains object>, pitch_gains=<airsim.types.PIDGains object>, yaw_gains=<airsim.types.PIDGains object>)[source]

用于角度水平 PID 控制器的控制器增益结构体

roll_gains

滚转轴的 kP, kI, kD

类型

PID增益

pitch_gains

俯仰轴的 kP, kI, kD

类型

PID增益

yaw_gains

偏航轴的 kP, kI, kD

类型

PID增益

to_lists()[source]
class airsim.types.BarometerData[source]
altitude = <Quaternionr> {   'w_val': 1.0,     'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
pressure = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
qnh = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
time_stamp = 0
class airsim.types.Box2D[source]
max = <Vector2r> {   'x_val': 0.0,     'y_val': 0.0}
min = <Vector2r> {   'x_val': 0.0,     'y_val': 0.0}
class airsim.types.Box3D[source]
max = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
min = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
class airsim.types.CameraInfo[source]
fov = -1
pose = <Pose> {   '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.0}}
proj_mat = <ProjectionMatrix> {   }
class airsim.types.CarControls(throttle=0, steering=0, brake=0, handbrake=False, is_manual_gear=False, manual_gear=0, gear_immediate=True)[source]
brake = 0.0
gear_immediate = True
handbrake = False
is_manual_gear = False
manual_gear = 0
set_throttle(throttle_val, forward)[source]
steering = 0.0
throttle = 0.0
class airsim.types.CarState[source]
collision = <CollisionInfo> {   }
gear = 0
handbrake = False
kinematics_estimated = <KinematicsState> {   }
maxrpm = 0.0
rpm = 0.0
speed = 0.0
timestamp = 0
class airsim.types.CollisionInfo[source]
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.0
class airsim.types.DetectionInfo[source]
box2D = <Box2D> {   }
box3D = <Box3D> {   }
geo_point = <GeoPoint> {   }
name = ''
relative_pose = <Pose> {   '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.0}}
class airsim.types.DistanceSensorData[source]
distance = 0.0
max_distance = 0.0
min_distance = 0.0
relative_pose = <Pose> {   '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.0}}
time_stamp = 0
class airsim.types.DrivetrainType[source]
ForwardOnly = 1
MaxDegreeOfFreedom = 0
class airsim.types.EnvironmentState[source]
air_density = 0.0
air_pressure = 0.0
geo_point = <GeoPoint> {   }
gravity = <Vector3r> {   '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.0}
temperature = 0.0
class airsim.types.GeoPoint[source]
altitude = 0.0
latitude = 0.0
longitude = 0.0
class airsim.types.GnssFixType[source]
GNSS_FIX_2D_FIX = 2
GNSS_FIX_3D_FIX = 3
GNSS_FIX_NO_FIX = 0
GNSS_FIX_TIME_ONLY = 1
class airsim.types.GnssReport[source]
eph = 0.0
epv = 0.0
fix_type = <GnssFixType> {   }
geo_point = <GeoPoint> {   }
time_utc = 0
velocity = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
class airsim.types.GpsData[source]
gnss = <GnssReport> {   }
is_valid = False
time_stamp = 0
class airsim.types.ImageRequest(camera_name, image_type, pixels_as_float=False, compress=True)[source]
camera_name = '0'
compress = False
image_type = 0
pixels_as_float = False
class airsim.types.ImageResponse[source]
camera_orientation = <Quaternionr> {   'w_val': 1.0,     'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
camera_position = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
compress = True
height = 0
image_data_float = 0.0
image_data_uint8 = 0
image_type = 0
message = ''
pixels_as_float = 0.0
time_stamp = 0
width = 0
class airsim.types.ImageType[source]
DepthPerspective = 2
DepthPlanar = 1
DepthVis = 3
DisparityNormalized = 4
Infrared = 7
OpticalFlow = 8
OpticalFlowVis = 9
Scene = 0
Segmentation = 5
SurfaceNormals = 6
class airsim.types.ImuData[source]
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}
orientation = <Quaternionr> {   'w_val': 1.0,     'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
time_stamp = 0
class airsim.types.KinematicsState[source]
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.0}
class airsim.types.LandedState[source]
Flying = 1
Landed = 0
class airsim.types.LidarData[source]
point_cloud = 0.0
pose = <Pose> {   '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.0}}
segmentation = 0
time_stamp = 0
class airsim.types.MagnetometerData[source]
magnetic_field_body = <Vector3r> {   'x_val': 0.0,     'y_val': 0.0,     'z_val': 0.0}
magnetic_field_covariance = 0.0
time_stamp = 0
class airsim.types.MeshPositionVertexBuffersResponse[source]
indices = 0.0
name = ''
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.0}
vertices = 0.0
class airsim.types.MsgpackMixin[source]
classmethod from_msgpack(encoded)[source]
to_msgpack(*args, **kwargs)[source]
class airsim.types.MultirotorState[source]
can_arm = False
collision = <CollisionInfo> {   }
gps_location = <GeoPoint> {   }
kinematics_estimated = <KinematicsState> {   }
landed_state = 0
rc_data = <RCData> {   'is_initialized': False,     'is_valid': False,     'pitch': 0.0,     'roll': 0.0,     'switch1': 0,     'switch2': 0,     'switch3': 0,     'switch4': 0,     'switch5': 0,     'switch6': 0,     'switch7': 0,     'switch8': 0,     'throttle': 0.0,     'timestamp': 0,     'yaw': 0.0}
ready = False
ready_message = ''
timestamp = 0
class airsim.types.PIDGains(kp, ki, kd)[source]

用于存储 PID 增益值的结构体。用于在实例化 AngleLevel/AngleRate/Velocity/PositionControllerGains 对象时传输控制器增益值。

kP

比例增益

类型

float

kI

积分增益

类型

float

kD

微分增益

类型

float

to_list()[source]
class airsim.types.Pose(position_val=None, orientation_val=None)[source]
containsNan()[source]
static nanPose()[source]
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.0}
class airsim.types.PositionControllerGains(x_gains=<airsim.types.PIDGains object>, y_gains=<airsim.types.PIDGains object>, z_gains=<airsim.types.PIDGains object>)[source]

包含位置 PID 控制器使用的控制器增益的结构体

x_gains

X 轴的 kP, kI, kD

类型

PID增益

y_gains

Y 轴的 kP, kI, kD

类型

PID增益

z_gains

Z 轴的 kP, kI, kD

类型

PID增益

to_lists()[source]
class airsim.types.ProjectionMatrix[source]
matrix = []
class airsim.types.Quaternionr(x_val=0.0, y_val=0.0, z_val=0.0, w_val=1.0)[source]
conjugate()[source]
containsNan()[source]
cross(other)[source]
dot(other)[source]
get_length()[source]
inverse()[source]
static nanQuaternionr()[source]
outer_product(other)[source]
rotate(other)[source]
sgn()[source]
star()[source]
to_numpy_array()[source]
w_val = 0.0
x_val = 0.0
y_val = 0.0
z_val = 0.0
class airsim.types.RCData(timestamp=0, pitch=0.0, roll=0.0, throttle=0.0, yaw=0.0, switch1=0, switch2=0, switch3=0, switch4=0, switch5=0, switch6=0, switch7=0, switch8=0, is_initialized=False, is_valid=False)[source]
is_initialized = False
is_valid = False
pitch = 0.0
roll = 0.0
switch1 = 0
switch2 = 0
switch3 = 0
switch4 = 0
switch5 = 0
switch6 = 0
switch7 = 0
switch8 = 0
throttle = 0.0
timestamp = 0
yaw = 0.0
class airsim.types.RotorStates[source]
rotors = []
timestamp = 0
class airsim.types.Vector2r(x_val=0.0, y_val=0.0)[source]
x_val = 0.0
y_val = 0.0
class airsim.types.Vector3r(x_val=0.0, y_val=0.0, z_val=0.0)[source]
containsNan()[source]
cross(other)[source]
distance_to(other)[source]
dot(other)[source]
get_length()[source]
static nanVector3r()[source]
to_Quaternionr()[source]
to_numpy_array()[source]
x_val = 0.0
y_val = 0.0
z_val = 0.0
class airsim.types.VelocityControllerGains(x_gains=<airsim.types.PIDGains object>, y_gains=<airsim.types.PIDGains object>, z_gains=<airsim.types.PIDGains object>)[source]

用于速度 PID 控制器的控制器增益结构体

x_gains

X 轴的 kP, kI, kD

类型

PID增益

y_gains

Y 轴的 kP, kI, kD

类型

PID增益

z_gains

Z 轴的 kP, kI, kD

类型

PID增益

to_lists()[source]
class airsim.types.WeatherParameter[source]
Dust = 6
Enabled = 8
Fog = 7
MapleLeaf = 4
Rain = 0
RoadLeaf = 5
RoadSnow = 3
Roadwetness = 1
Snow = 2
class airsim.types.YawMode(is_rate=True, yaw_or_rate=0.0)[source]
is_rate = True
yaw_or_rate = 0.0
airsim.utils.get_pfm_array(response)[source]
airsim.utils.get_public_fields(obj)[source]
airsim.utils.list_to_2d_float_array(flst, width, height)[source]
airsim.utils.read_pfm(file)[source]

读取 pfm 文件

airsim.utils.string_to_float_array(bstr)[source]
airsim.utils.string_to_uint8_array(bstr)[source]
airsim.utils.to_dict(obj)[source]
airsim.utils.to_eularian_angles(q)[source]
airsim.utils.to_quaternion(pitch, roll, yaw)[source]
airsim.utils.to_str(obj)[source]
airsim.utils.wait_key(message='')[source]

等待控制台按键并返回。

airsim.utils.write_file(filename, bstr)[source]

将二进制数据写入文件。用于写入压缩的 PNG 图像

airsim.utils.write_pfm(file, image, scale=1)[source]

写入 pfm 文件

airsim.utils.write_png(filename, image)[source]

图像必须是 numpy 数组 H X W X 通道