科目7注册及使用说明

科目7注册与其他科目稍有不同,请参照以下示例进行注册,且需要设置启动参数 -t,参数值为 0 或 1,分别表示红蓝队。

警告

必须更新 SDK 到 1.0.2 否则无法正常获取敌人id。

必须更新地图配置文件及启动参数(即 UE4配置及启动脚本 ),否则无法正常加载地图或初始化车机。

 1#!/usr/bin/env python
 2
 3import argparse
 4import random
 5import threading
 6import time
 7from os import times
 8
 9from swarmae.SwarmAEClient import SwarmAEClient
10
11
12def main():
13    argparser = argparse.ArgumentParser(
14        description=__doc__)
15    argparser.add_argument(
16        '-i', '--address',
17        default='127.0.0.1')
18    argparser.add_argument(
19        '-p', '--port',
20        type=int,
21        default=2000)
22    argparser.add_argument(
23        '-n', '--number',
24        type=int,
25        default=10)
26    argparser.add_argument(
27        '-s', '--subject',
28        type=int,
29        default=1
30    )
31    argparser.add_argument(
32        '-t', '--team',
33        type=int,
34        default=0
35    )
36    args = argparser.parse_args()
37    try:
38        client = SwarmAEClient(ue_ip=args.address.strip(), ue_port=args.port)
39        timestamp, world, code = client.get_world()
40
41        # 无人机
42        vehicles = []
43        number = 5
44        for i in range(number):
45            num = i + 1
46            frame_timestamp, sw_node, sw_code = client.register_node('四轮车', str(num), num,
47                                                                     int(round(time.time() * 1000)))
48            if sw_code == 200:
49                vehicles.append(sw_node)
50                location = sw_node.get_location()
51                print(f'{sw_node.get_node_id()} {location[0]} {location[1]} {location[1]}')
52
53        # 无人机
54        uavs = []
55        number = 10
56        for i in range(number):
57            num = i + 5 + 1
58            frame_timestamp, sw_node, sw_code = client.register_node('四旋翼', str(num), num,
59                                                                     int(round(time.time() * 1000)))
60            if sw_code == 200:
61                uavs.append(sw_node)
62                location = sw_node.get_location()
63                print(f'{sw_node.get_node_id()} {location[0]} {location[1]} {location[1]}')
64
65        node_name, node_no, _, node_type, node_model, color = uavs[0].get_node_info()
66        if node_no not in [11, 21]:
67            print('请设置运行参数 -t , 0 表示红队, 1 表示蓝队,示例: -t=0')
68            return
69
70    finally:
71        print('main')
72
73
74if __name__ == '__main__':
75
76    try:
77        main()
78    except KeyboardInterrupt:
79        pass
80    finally:
81        print('done.')

正常注册的的无人机编号(node_no)如下:

  • 红队无人车:1~5

  • 蓝队无人车:6~10

  • 红队无人机:11~20,前5个编号为对空,后5个编号为对地。

  • 蓝队无人机:21~30,前5个编号为对空,后5个编号为对地。