airsim
本页面介绍 airsim,一个用于 Microsoft AirSim 的 Python 包。
- class airsim.client.VehicleClient(ip='', port=41451, timeout_value=3600)[源]
基类:
object
- isApiControlEnabled(vehicle_name='')[源]
如果建立了 API 控制,则返回 true。
如果为 false(默认),则 API 调用将被忽略。成功调用 enableApiControl 后,isApiControlEnabled 应该返回 true。
- simAddDetectionFilterMeshName(camera_name, image_type, mesh_name, vehicle_name='', external=False)[源]
添加要以通配符格式检测的网格名称
例如:simAddDetectionFilterMeshName(“Car_*”) 将检测所有名为“Car_*”的实例
- simClearDetectionMeshNames(camera_name, image_type, vehicle_name='', external=False)[源]
清除检测过滤器中的所有网格名称
- simEnableWeather(enable)[源]
启用天气效果。在使用 simSetWeatherParameter API 之前需要调用。
- 参数
enable (bool) – True 为启用,False 为禁用
- simGetGroundTruthEnvironment(vehicle_name='') EnvironmentState [源]
获取真实环境状态
返回的 EnvironmentState 中的位置以车辆起始点为坐标系
- simGetGroundTruthKinematics(vehicle_name='') KinematicsState [源]
获取车辆的真实运动学
返回的 KinematicsState 中的位置以车辆起始点为坐标系
- simGetImage(camera_name, image_type, vehicle_name='', external=False)[source]
获取单个图像
返回PNG格式图像的字节,可将其存储到二进制文件中以创建.png图像。string_to_uint8_array() 可用于转换为Numpy unit8数组。有关详细信息,请参见https://msdocs.cn/AirSim/image_apis/。
- simGetImages(requests, vehicle_name='', external=False)[source]
获取多个图像
有关详细信息和示例,请参见https://msdocs.cn/AirSim/image_apis/。
- 参数
requests (list[ImageRequest]) – 所需图像
vehicle_name (str, 可选) – 与摄像头关联的载具名称
external (bool, optional) – 摄像机是否为外部摄像机
- 返回类型
- simGetLidarSegmentation(lidar_name='', vehicle_name='')[source]
注意:已弃用的API,请改用getLidarData() API。返回上次Lidar更新中每个点碰撞对象的分割ID
- simGetMeshPositionVertexBuffers()[source]
返回构成场景的静态网格
有关详细信息以及如何使用此功能,请参见https://msdocs.cn/AirSim/meshes/。
- simGetObjectScale(object_name)[source]
获取世界中对象的比例
- 参数
object_name (str) – 要获取比例的对象
- 返回
缩放
- 返回类型
airsim.Vector3r
- simGetSegmentationObjectID(mesh_name)[source]
返回给定网格名称的对象ID
对象ID与RGB值的映射可在https://msdocs.cn/AirSim/seg_rgbs.txt查看。
- 参数
mesh_name (str) – 要获取ID的网格名称
- 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]
- 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]
- 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]
- simPlotPoints(points, color_rgba=[1.0, 0.0, 0.0, 1.0], size=10.0, duration=-1.0, is_persistent=False)[source]
在世界NED坐标系中绘制三维点列表
- simPlotStrings(strings, positions, scale=5, color_rgba=[1.0, 0.0, 0.0, 1.0], duration=-1.0)[source]
在世界NED坐标系中的指定位置绘制字符串列表。
- simPlotTransforms(poses, scale=5.0, thickness=5.0, duration=-1.0, is_persistent=False)[source]
在世界NED坐标系中绘制姿态列表。
- 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坐标系中绘制变换列表及其名称。
- simPrintLogMessage(message, message_param='', severity=0)[source]
在模拟器窗口中打印指定消息。
如果提供了 message_param,则它会打印在消息旁边,在这种情况下,如果使用相同消息值但不同 message_param 再次调用此 API,则上一行会被新行覆盖(而不是 API 在显示器上创建新行)。
例如,simPrintLogMessage(“迭代次数: “, to_string(i)) 在 API 以不同i值调用时,会持续更新显示器上的同一行。严重性参数的有效值是0到3(含),对应不同的颜色。
- simRunConsoleCommand(command)[source]
允许客户端通过API在虚幻引擎的本机控制台中执行命令。可以访问无数内置命令,例如“stat unit”、“stat fps”、“open [map]”、调整任何配置设置等。允许用户通过向关卡蓝图添加自定义事件,然后调用控制台命令“ce MyEventName [args]”来非常轻松地创建定制API。无需重新编译AirSim!
- 参数
command ([string]) – 要运行的虚幻引擎控制台命令
- 返回
成功
- 返回类型
[bool]
- simSetDetectionFilterRadius(camera_name, image_type, radius_cm, vehicle_name='', external=False)[source]
设置所有摄像机的检测半径
- simSetDistortionParam(camera_name, param_name, value, vehicle_name='', external=False)[source]
设置单个摄像机畸变参数
- simSetDistortionParams(camera_name, distortion_params, vehicle_name='', external=False)[source]
设置摄像机畸变参数
- simSetFilmbackSettings(sensor_width, sensor_height, camera_name, vehicle_name='', external=False)[source]
- simSetKinematics(state, ignore_collision, vehicle_name='')[source]
设置飞行器的运动学状态
如果您不想改变位置(或方向),只需将位置(或方向)的分量设置为浮点 NaN 值
- 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
- 返回类型
- 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
- 返回类型
- simSetObjectPose(object_name, pose, teleport=True)[source]
设置环境中物体(actor)的姿态
指定的 actor 必须将 Mobility 设置为可移动,否则将出现未定义的行为。有关如何设置 Mobility 和 Teleport 参数影响的详细信息,请参阅 https://www.unrealengine.com/en-US/blog/moving-physical-objects
- 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
- 参数
mesh_name (字符串) – 要设置 ID 的网格名称(支持正则表达式)
object_id (整数) –
要设置的物体 ID,范围 0-255
ID 的 RBG 值可在 https://msdocs.cn/AirSim/seg_rgbs.txt 查看
is_name_regex (布尔值, 可选) – 网格名称是否为正则表达式
- 返回
如果找到网格
- 返回类型
- 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 来启用追踪
- simSetVehiclePose(pose, ignore_collision, vehicle_name='')[source]
设置飞行器的姿态
如果您不想改变位置(或方向),只需将位置(或方向)的分量设置为浮点 NaN 值
- simSpawnObject(object_name, asset_name, pose, scale, physics_enabled=False, is_blueprint=False)[source]
在世界中生成选定的物体
- class airsim.client.MultirotorClient(ip='', port=41451, timeout_value=3600)[source]
基类:
VehicleClient
,object
- getMultirotorState(vehicle_name='') MultirotorState [source]
返回的 MultirotorState 中的位置是相对于飞行器起点的坐标系
- 参数
vehicle_name (字符串, 可选) – 要获取状态的飞行器
- 返回类型
- getRotorStates(vehicle_name='') RotorStates [source]
用于获取多旋翼所有旋翼的当前状态。状态包括所有旋翼的速度、推力和扭矩。
- 参数
vehicle_name (字符串, 可选) – 要获取旋翼状态的飞行器
- 返回
包含时间戳以及所有旋翼的速度、推力和扭矩。
- 返回类型
- 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 平面中逆时针旋转。
- 参数
- 返回
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 平面中逆时针旋转。
- 参数
- 返回
future. 调用 .join() 等待方法完成。示例:client.METHOD().join()
- 返回类型
msgpackrpc.future.Future
- 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 值控制电机。
- 参数
- 返回
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 平面中逆时针旋转。
- moveByRollPitchYawZAsync(roll, pitch, yaw, z, duration, vehicle_name='')[source]
Z 值在飞行器的局部 NED 坐标系中给出。
横滚角、俯仰角和偏航角的设定值在机体坐标系中以**弧度**为单位给出。
机体坐标系遵循前左上 (FLU) 约定和右手定则。
- 坐标系约定
X 轴沿着四旋翼飞行器的**前方**方向。
绕此轴的顺时针旋转定义为正**横滚**角。因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。Y 轴沿着四旋翼飞行器的**左方**方向。
绕此轴的顺时针旋转定义为正**俯仰**角。因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。Z 轴沿着**上方**方向。
绕此轴的顺时针旋转定义为正**偏航**角。因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
- moveByRollPitchYawrateThrottleAsync(roll, pitch, yaw_rate, throttle, duration, vehicle_name='')[source]
期望油门在 0.0 到 1.0 之间。
横滚角、俯仰角和偏航角速率的设定值在机体坐标系中以**弧度**为单位给出。
机体坐标系遵循前左上 (FLU) 约定和右手定则。
- 坐标系约定
X 轴沿着四旋翼飞行器的**前方**方向。
绕此轴的顺时针旋转定义为正**横滚**角。因此,以正角横滚等同于相对于我们的 FLU 机体坐标系向**右**方向平移。Y 轴沿着四旋翼飞行器的**左方**方向。
绕此轴的顺时针旋转定义为正**俯仰**角。因此,以正角俯仰等同于相对于我们的 FLU 机体坐标系向**前方**向平移。Z 轴沿着**上方**方向。
绕此轴的顺时针旋转定义为正**偏航**角。因此,以正角偏航等同于相对于我们的 FLU 机体坐标系向**左**方向旋转。或者在机体 XY / FL 平面中逆时针旋转。
- 参数
- 返回
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 平面中逆时针旋转。
- 参数
- 返回
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]
- 参数
- 返回
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]
- 参数
- 返回
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]
- 参数
- 返回
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]
- 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) – 接收此命令的多旋翼飞行器的名称
- class airsim.client.CarClient(ip='', port=41451, timeout_value=3600)[source]
基类:
VehicleClient
,object
- 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 控制器的控制器增益结构体
- class airsim.types.AngleRateControllerGains(roll_gains=<airsim.types.PIDGains object>, pitch_gains=<airsim.types.PIDGains object>, yaw_gains=<airsim.types.PIDGains object>)[source]
用于角度水平 PID 控制器的控制器增益结构体
- 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
- 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.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.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.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.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.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 对象时传输控制器增益值。
- class airsim.types.Pose(position_val=None, orientation_val=None)[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 控制器使用的控制器增益的结构体
- class airsim.types.Quaternionr(x_val=0.0, y_val=0.0, z_val=0.0, w_val=1.0)[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.Vector3r(x_val=0.0, y_val=0.0, z_val=0.0)[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 控制器的控制器增益结构体
- class airsim.types.WeatherParameter[source]
- Dust = 6
- Enabled = 8
- Fog = 7
- MapleLeaf = 4
- Rain = 0
- RoadLeaf = 5
- RoadSnow = 3
- Roadwetness = 1
- Snow = 2