swarmae包

class swarmae.SwarmAEActor.SwarmAEActor(node_id, health, energy, color, size)

基类:object

角色实例抽象父类,派生出Node、Sensor和Weapon等实例类,并提供通用的相关基础信息接口

参数:
  • node_id – 节点唯一ID

  • health – 生命值

  • energy – 能源值

  • color – 颜色

  • size – 尺寸

get_color()

获取颜色

返回:

颜色

返回类型:

dict

返回示例:

{'a': 1, 'b': 6.966855, 'g': 12.675285, 'r': 12.28386}
get_energy()

获取能源

返回:

能量

返回类型:

float

get_health()

获取生命值

返回:

生命值

返回类型:

float

get_node_id()

获取节点id

返回:

节点id

返回类型:

int

get_size()

获取尺寸

返回:

尺寸

返回类型:

dict

返回示例:

{'x': 3.0, 'y': 1.2999999523162842, 'z': 1.5}
class swarmae.SwarmAEChannel.SwarmAEChannel(topic, channel_name, is_keepalived, lifetime, is_available)

基类:object

通讯通道实例类,提供通讯的相关信息接口

参数:
  • topic – 会话主题

  • channel_name – 通道名称

  • is_keepalived – 是否心跳监测

  • lifetime – 生命周期时长

  • is_available – 是否可用

get_channel_nodes(node_id)

获取通讯节点接口 根据节点ID获取可通讯的节点信息

参数:

node_id – 节点id

返回:

node_ids-可通讯节点ids(唯一id数组), count-可通讯节点总数, channel_name_通道名称, topic-会话主题, code-成功状态码,

frame_timestamp-当前帧时间戳, remain_lifetime-剩余生命周期时常, is_available-是否可用

receive_message(node_id, frame_timestamp, topic)

获取协同信息接口 获取消息接口

参数:
  • node_id – 发送方节点id

  • frame_timestamp – 当前帧时间戳

  • topic – 会话主题

返回:

code-成功状态码, msg_data-数据信息(字节流:ros或prototbuff), frame_timestamp-返回帧时间戳

send_message(node_id, msg_data, frame_timestamp, topic)

发送协同信息接口 发送消息接口

参数:
  • node_id (int) – 发送方节点id

  • msg_data – 数据信息(字节流:ros或prototbuff)

  • frame_timestamp (int) – 当前帧时间戳

  • topic (int) – 会话主题

返回:

code-成功状态码, frame_timestamp-返回帧时间戳

返回类型:

int, int

class swarmae.SwarmAEClient.SwarmAEClient(ue_ip=None, ue_port=None)

基类:object

节点客户端,提供连接和注册初始化工作

get_world()

获取当前仿真世界

返回:

返回帧时间戳, 仿真世界, 成功状态码

返回类型:

int, SwarmAEWorld, int

register_node(node_type, node_name, node_no, frame_timestamp)

注册节点接入平台接口

根据节点信息向平台注册接入,接入成功返回注册节点.

参数:
  • node_type (str) – 节点类型,四轮车、四旋翼

  • node_name (str) – 节点名称

  • node_no (int) – 节点编号(队伍中编号),编号从1开始

  • frame_timestamp (int) – 当前帧时间戳

返回:

返回帧时间戳, 节点, 成功状态码

返回类型:

int, SwarmAENode, int

示例(无人车):

# 注册无人车
timestamp, node, code = client.register_node(
  node_type="四轮车", node_name="节点1", node_no=1, frame_timestamp=int(round(time.time() * 1000))
)
if code == 200:
  # 注册成功,则可使用 node
示例(无人机):

# 注册无人机
timestamp, node, code = client.register_node(
  node_type="四旋翼", node_name="节点1", node_no=1, frame_timestamp=int(round(time.time() * 1000))
)
if code == 200:
  # 注册成功,则可使用 node
class swarmae.SwarmAEConnect.SwarmAEConnect

基类:object

通讯连接实例类,提供通讯的相关信息接口

create_channel(node_ids)

建立节点通讯连接接口 建立节点通讯通道

警告

接口暂未提供

:param node_ids:节点ids(唯一id数组) :return: swarmae_channel-通道, code-成功状态码, frame_timestamp-当前帧时间戳

release_channel(swarmae_channel)

回收节点通讯通道接口 回收节点通讯通道

警告

接口暂未提供

:param swarmae_channel:通道 :return: frame_timestamp-当前帧时间戳, code-状态码

swarmae.SwarmAEMulticast.SwarmMulticast(*args, **kw)
swarmae.SwarmAEMulticast.singleton(cls, *args, **kw)
class swarmae.SwarmAENode.SwarmAENode(actor_info, actor, node_type, node_name, node_no, rgb, lidar)

基类:SwarmAEActor

节点实例类,继承SwarmAEActor类。提供获取节点的相关信息接口

apply_control(throttle, steer, brake, hand_brake, gear)

控制车辆行为接口 - 现版本SDK暂未提供,后续SDK更新支持

参数:
  • throttle – 油门

  • steer – 转向

  • brake – 刹车

  • hand_brake – 手刹

  • gear – 档位

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

control_kinetic_full(elevator_angle, direct_angle, aileron_angle, flap_angle, throttle, frame_timestamp)

动力学控制信息接口(复杂飞控,按舵角、油门等) 动力学控制飞机飞行,目前按照目标点设置

警告

接口暂未提供

参数:
  • elevator_angle – 升降舵偏角(下偏为正)

  • direct_angle – 方向舵偏角(左偏为正)

  • aileron_angle – 副翼舵偏角(左上右下为正)

  • flap_angle – 襟翼舵偏角(下偏为正)

  • throttle – 油门

  • frame_timestamp – 当前帧时间戳

返回:

code-返回状态码, frame_timestamp-返回帧时间戳

control_kinetic_simply(x, y, z, v, frame_timestamp)

仅支持无人机

动力学控制信息接口(简单飞控,按目标点) 动力学控制飞机飞行,目前按照目标点设置从 出生点 往 指定位置飞行距离,例如出生点为10,10,10 调用该接口即为飞机向10+x,10+y,10+z飞行

参数:
  • x (float) – N,北向(米)

  • y (float) – E,东向(米)

  • z (float) – U,天向(米)

  • v (float) – GS,地速(米/秒)

  • frame_timestamp – 当前帧时间戳

返回:

code-返回状态码, frame_timestamp-返回帧时间戳

返回类型:

int, int

control_kinetic_simply_global(x, y, z, v, frame_timestamp)

仅支持无人机

动力学控制信息接口(简单飞控,按目标点) 动力学控制飞机飞行,目前按照目标点设置

参数:
  • x (float) – N,北向(米)

  • y (float) – E,东向(米)

  • z (float) – U,天向(米)

  • v (float) – GS,地速(km/h)

  • frame_timestamp – 当前帧时间戳

返回:

code-返回状态码, frame_timestamp-返回帧时间戳

返回类型:

int, int

control_vehicle(throttle)

设置车辆油门数据接口 设置当前车辆油门信息

参数:

throttle (float) – 油门 范围:[-1.0, 1.0] 默认:0.0, 负为倒车

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

detect_hostile_list()

获取侦察范围内侦测到的敌人信息列表

返回:

侦察的敌人信息列表

返回类型:

list

示例返回:

>>> [('imv|1', Transform(Location(x=-880.337891, y=455.569061, z=486.440033), Rotation(pitch=0.272791, yaw=0.010868, roll=0.261231)))]
get_attitude()

获取当前节点的姿态信息

返回:

偏航角(yaw), 俯仰角(pitch), 翻滚角(roll), 朝向(heading), 当前帧时间戳

:rtype; float, float, float, str, int

get_damage()

获取节点中弹信息接口 获取当前节点的中弹信息 :return: damage-损伤程度, is_hit-是否中弹, frame_timestamp-当前帧时间戳

get_fire_angle()

获取攻击角度

返回:

z轴, y轴

返回类型:

float, float

get_fire_angle_range()

获取攻击范围

返回:

最小z轴, 最大z轴, 最小y轴, 最大y轴

返回类型:

float, float, float, float

get_health()

获取节点生命值信息接口 获取当前节点的生命值信息

返回:

current_health-当前生命值 frame_timestamp-当前帧时间戳

get_kinetic_data()

获取飞行数据接口 获取当前飞机飞行数据状态信息

警告

接口暂未提供

返回:

elevator_angle-升降舵偏角 direct_angle-方向舵偏角 aileron_angle-副翼舵偏角 flap_angle-襟翼舵偏角 throttle-油门 h-海拔高度 lat-纬度 lon-经度

get_kinetic_data_simply()

获取飞行数据接口 获取当前飞机飞行数据状态信息

返回:

x: N,北向(米), y: E,东向(米), z: U,天向(米), pitch: 俯仰角, roll: 横倾角, yaw: 指向, speed:地速(米/秒)

返回类型:

x: float, y: float, z: float, pitch: float, roll: float, yaw: float, speed: float

get_location()

根据节点实例获取当前节点的位置信息

返回:

x坐标, y坐标, z坐标, 当前帧时间戳

返回类型:

float, float, float, int

get_node_info()

获取该节点的基本信息,包括类型、编号、编队等

返回:

节点名称, 节点编号(队伍中编号), 节点编队归属(红/蓝), 节点类型(车/飞机、侦察类型/打击类型), 节点模型(具体型号), 颜色

返回类型:

str, int, str, str, str

get_sensor()

获取节点传感器信息接口 获取节点传感器载荷

返回:

{load_slot-插槽: swarmae_sensor-传感器载荷}, frame_timestamp:当前帧时间戳, code-返回状态码

get_sim_status()

获取节点仿真状态信息接口 获取当前节点的仿真状态信息,包括仿真中断/仿真正常/仿真未完成/完成待命/仿真失败等

返回:

sim_status-当前仿真状态, frame_timestamp-当前帧时间戳

get_vehicle_status()

获取车辆状态数据接口 获取当前车辆数据状态信息

返回:

throttle-油门, steer-转向, gear-档位, brake-手刹

返回类型:

float, float, int, float

get_velocity()

获取当前节点的速度信息

返回:

velocity_x-X分量速度 velocity_y-Y分量速度 velocity_z-Z分量速度 velocity-速度 acc_x-X分量加速度 acc_y-Y分量加速度 acc_z-Z分量加速度 acceleration-加速度 gs-地速 p-滚转角速度 q-俯仰角速度 r-航向角速度 frame_timestamp-当前帧时间戳

get_weapon()

获取节点武器信息接口 获取节点武器载荷

返回:

load_slot:插槽, swarmae_weapon:火力载荷, frame_timestamp:当前帧时间戳, code-返回状态码

gun_fire(num: Optional[int] = None)

火力打击-开火

Param:

num 打击次数(可选)

Type:

int

launch_kinetic(sim_type, count, switch, frame_timestamp)

动力学启动停止仿真接口 动力学启动停止仿真指令接口

警告

接口暂未提供

参数:
  • sim_type – 仿真类型

  • count – 数量

  • switch – 启动/停止

  • frame_timestamp – 当前帧时间戳

返回:

code-返回状态码, frame_timestamp: 返回帧时间戳

missile_fire(target_id: int)
receive_msg()

发送参数说明:

msg:载具发送的消息

send_msg(msg: bytes)

发送参数说明:

msg:载具发送的消息

set_fire_angle(yaw: float, pitch: float)

设置攻击角度

Param:

z轴, y轴

Type:

float, float

set_vehicle_brake(brake)

设置车辆控制刹车数据接口设置当前车辆刹车信息

参数:

brake (float) – 刹车力度 范围:[0.0, 1.0],默认为 0.0

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

set_vehicle_gear(gear)

设置车辆控制档位数据接口 设置当前车辆档位信息

参数:

gear (int) – 档位

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

set_vehicle_handle_brake(brake: bool)

设置当前车辆手刹信息。

参数:

brake (bool) – 手刹,默认值:False

返回:

响应帧时间戳, 返回状态码

返回类型:

int, int

set_vehicle_steer(steer)

设置当前车辆转向信息

参数:

steer (float) – 转向 范围:[-1.0, 1.0], 0.0 to [steer]

返回:

时间戳, 状态码

返回类型:

int, int

class swarmae.SwarmAESensor.SwarmAESensor(parameter, sensor_type)

基类:SwarmAEActor

mport 传感器实例类,继承SwarmAEActor类。提供获取传感器的相关信息接口

get_image_data()

获取可视化数据接口 获取普通摄像机采集的原始图形数据信息

返回:

image_data-图形数据流, swarmae_sensor_basic-传感器基础信息

返回类型:

array, SwarmAESensorBasic

get_rawdata()

获取原始数据接口 获取传感器原始数据信息

返回:

swarmae_sensor_basic-传感器基础信息, fov-以度为单位的水平视场, raw_data-原始数据的数组

返回类型:

SwarmAESensorBasic, float, bytes

get_semantic()

获取周围物体语义数据接口 获取周围物体语义信息

返回:

swarmae_sensor_basic-传感器基础信息(根据传感器类型不同,返回的具体字段数据不同),

x-物体所在位置X, y-物体所在位置Y, z-物体所在位置Z, size-大小, heading-朝向, bounding_box-包围盒, object_type-物体类型

get_sensor_angle()

获取传感器角度接口 获取该传感器当前的角度

返回:

angle-角度, frame_timestamp-当前帧时间戳

返回类型:

json-{“yaw”: rotation.yaw, “pitch”: rotation.pitch, “roll”: rotation.roll},int

get_sensor_energy()

获取传感器能源接口 获取传感器的能源

参数:
  • energy – 能源

  • frame_timestamp – 当前帧时间戳

返回:

current_energy-当前能源值, frame_timestamp-当前帧时间戳

返回类型:

int, int

get_sensor_status()

获取传感器状态接口 获取该传感器当前的状态信息

返回:

is_available-是否可用, is_working-工作中, is_sent-数据分发, frame_timestamp-当前帧时间戳

返回类型:

bool, bool, bool, int

set_sensor_angle(angle, frame_timestamp)

设置传感器角度接口 设置当前传感器的角度信息

参数:
  • angle – 角度

  • frame_timestamp – 当前帧时间戳

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

class swarmae.SwarmAESensorBasic.SwarmAESensorBasic(sensor_type, frame, timestamp, transform, horizontal_angle, channels, width, height, frame_timestamp)

基类:object

传感器基础实例类。提供传感器的相关信息封装

参数:
  • sensor_type – 传感器类型

  • frame (int) – 测量发生时的时间

  • timestamp (float) – 自开始以来以秒为单位的测量模拟时间

  • transform (Transform) – 测量时传感器的世界坐标中的位置和姿态

  • horizontal_angle (float) – 当前帧中传感器的XY平面中的角度(弧度)

  • channels (int) – 传感器的通道数

  • width – 图像宽度(以像素为单位)

  • height – 图像高度(以像素为单位)

  • frame_timestamp (int) – 当前帧时间戳

class swarmae.SwarmAEUtils.SwarmAEUtils

基类:object

FAIL = 500
OVERTIME = 400
SUCCESS = 200
static get_frame_timestamp()
class swarmae.SwarmAEWeapon.SwarmAEWeapon(actor)

基类:SwarmAEActor

火力载荷实例类,继承SwarmAEActor类。提供获取和设置火力载荷的相关信息接口

get_weapon_ammo()

获取火力载荷弹药接口 获取火力载荷的弹药信息

返回:

is_available-是否可用, ammo_count-剩余弹药数, frame_timestamp-当前帧时间戳

返回类型:

bool, int, int

get_weapon_angle()

获取火力载荷角度接口 获取火力载荷的角度信息

返回:

angle-获取当前载具开火角度(yaw,pitch), frame_timestamp-当前帧时间戳

返回类型:

angle(int,int), int

get_weapon_config()

获取载荷配置信息接口

获取当前节点的载荷配置信息,包括打击载荷、传感器等对应载荷的类型、模型等信息

警告

接口暂未提供

返回:

load_name-载荷名称, load_no-载荷编号, load_slot-接口所在插槽, load_type-载荷类型(打击载荷/传感器), ammo_count-弹药数,

load_model-载荷模型(具体型号), color-颜色, aggressivity-杀伤力, range-杀伤半径, energy-能源值

get_weapon_energy()

获取火力载荷能源接口 获取火力载荷的能源信息

返回:

energy-当前能源值, frame_timestamp-当前帧时间戳

返回类型:

int, int

get_weapon_fire()

获取火力载荷开火接口 获取火力载荷的开火信息

返回:

is_fire-是否开火, frame_timestamp-当前帧时间戳

返回类型:

bool, int

missile_fire(target_id: int)

无人机设置导弹目标,配合 gun_fire 进行发射。

参数:

target_id – 目标id。可以通过 detect_hostile_list 获取

返回:

set_weapon_ammo(reset_ammo, frame_timestamp)

设置火力载荷弹药接口 设置载荷的上弹

参数:
  • reset_ammo (bool) – 上弹

  • frame_timestamp (int) – 当前帧时间戳

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

set_weapon_angle(barrel_angle, barrel_altitude, frame_timestamp)

设置火力载荷角度接口 设置指定火力载荷的角度信息

参数:
  • barrel_angle (float) – 炮筒角度(Z轴)

  • barrel_altitude (float) – 炮筒高度角(Y轴)

  • frame_timestamp (int) – 当前帧时间戳

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int, int

set_weapon_status(ammo_number, frame_timestamp)

设置火力载荷状态接口 设置载荷的开火

参数:
  • ammo_number (int) – 发射子弹数量

  • frame_timestamp (int) – 当前帧时间戳

返回:

frame_timestamp-响应帧时间戳, code-返回状态码

返回类型:

int,int

class swarmae.SwarmAEWorld.SwarmAEWorld(world, targets=None)

基类:object

世界实例类,提供获取世界环境的相关信息接口

get_environment_objects()

获取所有环境信息

返回:

环境信息列表。环境信息物体的位置旋转信息(transform)、边界框(bounding_box)等信息

返回类型:

list

提供版本:

1.0.1

返回信息示例:

>>> 其中一条数据如下:
>>> result = {EnvironmentObject}
>>>   id = {int} 5148036365721985073
>>>   name = {str} 'SM_SpeedBump_0_SM_0'
>>>   transform = {Transform}
>>>      location = {Location}
>>>        x = {float} -1072.719970703125
>>>        y = {float} 439.79998779296875
>>>        z = {float} 486.446044921875
>>>      rotation = {Rotation}
>>>        pitch = {float} 0.0
>>>        roll = {float} 0.0
>>>        yaw = {float} 0.0
>>>   bounding_box = {BoundingBox}
>>>     extent = {Vector3D}
>>>       x = {float} 0.19999998807907104
>>>       y = {float} 30.000009536743164
>>>       z = {float} 0.010476627387106419
>>>     location = {Location}
>>>       x = {float} -1072.719970703125
>>>       y = {float} 439.79998779296875
>>>       z = {float} 486.446044921875
>>>     rotation = {Rotation}
>>>       pitch = {float} 0.0
>>>       roll = {float} 0.0
>>>       yaw = {float} 0.0
get_interference(node_id)

获取干扰数据信息接口 根据节点获取附近干扰区域信息

警告

接口暂未提供

参数:

node_id – 节点id

返回:

  • interference_type - 干扰类型,

  • interference_loc - 干扰源位置,

  • interference_range - 烦扰范围,

  • interference_str - 干扰强度,

  • interference_time - 干扰时间,

  • frame_timestamp - 当前帧时间戳

get_light()

获取光照信息接口 获取环境的光照信息

返回:

  • sun_altitude - 太阳高度角,

  • sun_azimuth - 太阳方位角,

  • frame_timestamp - 当前帧时间戳

返回类型:

float, float, int

get_map(map_filter)

获取地图信息接口 获取环境的基本地图信息

参数:

map_filter – 过滤条件(可选。高精、栅格等)

返回:

  • hd_map - 高精地图

  • grid_map - 栅格地图 (暂未提供,返回None)

  • map_name - 地图名称

  • frame_timestamp - 当前帧时间戳

get_targets()

获取敌人列表

返回:

敌人列表

返回信息示例:

>>> [
>>>  {"id": 敌人ID, "location": 敌人location, "health_point": 敌人healthponit}
>>> ]
get_weather(weather_filter)

获取环境的云水风等天气信息

参数:

weather_filter

过滤条件(可选。风雨雾风等), 例如,[“cloud”,

”precipitation”, “wind_intensity”, “fog_intensity”, “humidity”]

返回:

{cloud-云量, precipitation-降水量, wind_intensity-风强, fog_intensity-雾霾强度, humidity-湿度, frame_timestamp-当前帧时间戳}

返回类型:

dict

get_zone(node_id)

获取周围区域信息接口 根据节点ID获取附近区域,包括风场/林场/隔离带等

警告

接口暂未提供

参数:

node_id – 节点id

返回:

  • zone_type - 区域类型(风场/林场/隔离带),

  • zone_loc - 区域中心位置,

  • zone_size - 区域大小,

  • zone_shape - 区域形状,

  • points - 定点位置,

  • radius - 半径,

  • frame_timestamp - 当前帧时间戳