autoverse-cli 0.17.2__py3-none-any.whl → 0.17.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: autoverse-cli
3
- Version: 0.17.2
3
+ Version: 0.17.3
4
4
  Summary: The Autoverse CLI
5
5
  Author-email: Dan Kamrath <dan.kamrath@autonomalabs.com>
6
6
  License: # End-User License Agreement (EULA) of the Autonoma AutoVerse CLI
@@ -43,6 +43,7 @@ Description-Content-Type: text/markdown
43
43
  License-File: LICENSE
44
44
  Requires-Dist: boto3
45
45
  Requires-Dist: cantools
46
+ Dynamic: license-file
46
47
 
47
48
  # Autoverse CLI
48
49
 
@@ -1,7 +1,8 @@
1
+ autoverse_cli-0.17.3.dist-info/licenses/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
1
2
  avrs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- avrs/app_version.py,sha256=JB8Bt557xZGVXfki6aU-BGT4XB6_8JEKHjJ22a6nOWg,856
3
+ avrs/app_version.py,sha256=2oXEAqnQd-QpTA32-FLVigt9qiX6HHsOKOE9PUNERck,856
3
4
  avrs/argparse_help.py,sha256=EoEaohGXZXqJvs1dFEzbo9vh47CYdHdSY2Im2Ps2iFo,945
4
- avrs/avrs.py,sha256=7aFrk4WxxfJvuuQ0qFPb5iNz0sFes4_laD35OGeXchI,4652
5
+ avrs/avrs.py,sha256=wRwZJeSvyJNlixkZnC3E2cwzEe_fjYHl7hD-HgRF2po,4717
5
6
  avrs/can_tool.py,sha256=IBoctKobBJ3wCq4ZdtuXuXH4AMEUxazCfYT6YP0Luw8,7161
6
7
  avrs/can_tool_util.py,sha256=G3q21dTGMLc09SDq_RieoW7kSn-kXPkXxPDjavPh4hQ,7710
7
8
  avrs/cfg.py,sha256=kMn08Z4Ms1PAu2-U1QI8weEJeIVEppP4A4_tFfwnjtg,2924
@@ -9,7 +10,7 @@ avrs/launcher.py,sha256=kk1lyHHLgFZ4zsFfa_zV5f1kYbUODT6wEILJ8TZ16rQ,9353
9
10
  avrs/launcher_util.py,sha256=sO3k_z3A-HIQdJVkVXNXUAE_MGFwAYiZUqQBoFwOqew,5325
10
11
  avrs/race_cloud.py,sha256=F95_ssdiKpkmTQQkqllaLJJFAnLK3NEfRiQZcofgDGo,20125
11
12
  avrs/race_cloud_bridge_can.py,sha256=K3is7GFzWo2KBojr6V65kz138UfkVFXXofVxSAziArY,2888
12
- avrs/race_cloud_cfg_util.py,sha256=9gHzAnI8s-vQZ24z0xvF7ZN3OKhx84Or6_iUL62crB4,7241
13
+ avrs/race_cloud_cfg_util.py,sha256=VMa7n7wF0LyeL0vvouQ8LT9YzAU_zoptzUa-e2vk5Q0,9818
13
14
  avrs/race_cloud_fwd_api.py,sha256=HuLE5kfmzVq08aP3tlEh3f8WNjGL5N3K5EbXg9uQomo,1506
14
15
  avrs/race_cloud_util.py,sha256=WwhmqxKIQJMxf4L4ReAJrW1Reu1A8tLfmYeEwTZDl-k,13184
15
16
  avrs/simconfig.py,sha256=UZc4FrxVHUkk2e9IglSpuojXkaL_nPrJW7trbEGgOOo,2907
@@ -21,16 +22,17 @@ avrs/requests/code_booz.py,sha256=SXaEAMTqID4lf1o_4Cc1wY9609X-dNcfNa-UZv3FWF4,24
21
22
  avrs/requests/demo.py,sha256=cbGQJK-OfeFUkQwVzafHgoWP15xoKL-ZgYkQ7moEt2A,872
22
23
  avrs/requests/dump_sim_config.py,sha256=ePtJZhq3gYLgMQkbi-YObIAaPk3Z2b0NWlWM5IYkCaM,479
23
24
  avrs/requests/environment.py,sha256=ORwOBxhXPcatn_W8aY5pgIy4f2paUbqIYii5oE540xA,1305
24
- avrs/requests/fault_injection.py,sha256=EkpjPCx-UtrNbAR_vQS1zaGKN49UDCyYOoVcdlP1T0M,5948
25
+ avrs/requests/fault_injection.py,sha256=UWf_Jzqkd4CdkNpLbxwyuyLPkuIYNz4LDABM0myHv3A,5950
25
26
  avrs/requests/get_object_config.py,sha256=Mkwp32lfskQERsqfmAgHi4vf4C0hfjg6Ru8UjyMt3cw,654
26
27
  avrs/requests/list_sim_objects.py,sha256=YWpqHdCHijerPxI5606_KjeFvezcLFN33wO4YOr9G3U,977
27
28
  avrs/requests/log_path.py,sha256=Ur24C9VqPVx78MfpicgQu2uOEe-0dXbGoWF_7dzMtZE,1326
28
- avrs/requests/misc.py,sha256=995yXxzVS35X3CLqm4OtkJhWvFrqEhV1cPwbWxlFeHs,1779
29
+ avrs/requests/misc.py,sha256=sydYsBMLBFmpUHTnTK5VhM2JF6xYXgk_Xmdq7oIJC_s,2232
29
30
  avrs/requests/move_to_landmark.py,sha256=cLRBKu9XEDsmCoftBJ8JwoBLqzb0IZsxFMBnus4T-kc,702
30
31
  avrs/requests/npc.py,sha256=Y_WovbcLomCCcOLAMMO_DHZtc1crAzWo97qEIGS3SvU,9691
31
- avrs/requests/race_control.py,sha256=jkAGJMD_A2xn-eSO50Bu7ERU8NFWfXX5Lue35bL2XCM,1199
32
+ avrs/requests/race_control.py,sha256=IVpaaveeLOze0qXzuJVgkoYjydm0KBLEFXDmJnwtTpQ,1409
32
33
  avrs/requests/request.py,sha256=uUAndVZPbTQgbiXqrd4S3l3TQ0J_3STBtghEFlVr5GA,2058
33
34
  avrs/requests/reset_to_track.py,sha256=6BXe2EtezdZR1Xrs0pej_eBK-ilqeN8ZrJGN_KKPLbk,672
35
+ avrs/requests/rest_request.py,sha256=G4WzZw8OsF7ZnZeCcpRiADP9XK50e5VBaP6qpu9yXLs,1398
34
36
  avrs/requests/restart.py,sha256=ih5mnWiU34q3-xhOth45CtOUXxKI0PoMDCnFJV0JbwE,415
35
37
  avrs/requests/scenario_control.py,sha256=u-KQx-mdCm6IE_c88a6iEgWUsZZVOayxBo58Ocjg0ZI,1502
36
38
  avrs/requests/spawn_object.py,sha256=RzTJprcyPpNIesu4s_GMuEYbHII-sopw1sDcbTDgvrY,1429
@@ -39,9 +41,8 @@ avrs/requests/toggle_hud.py,sha256=sV5t5QZc4uvRihPVk8jEKZiQNsyF9tsUwq5b4jjZplc,3
39
41
  avrs/requests/vd.py,sha256=gdt5XCdCCVdECL3qt8y-PKDrlArjeY_lxtT4VpZmAJo,1804
40
42
  avrs/requests/vehicle_input.py,sha256=R1b1xkRtOBkwyU6OSN4bWVlYsIUroZG0WKbYbc4pEH8,729
41
43
  avrs/requests/vehicle_replay.py,sha256=nCAE21VNyKoeIjjXBGAihgOLO7zYHcu-HWvPZYxdQ2c,11099
42
- autoverse_cli-0.17.2.dist-info/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
43
- autoverse_cli-0.17.2.dist-info/METADATA,sha256=GjXeWGIPX1Pv2bCArG4tERoByDJhWKQC0E-ZunQasXQ,3342
44
- autoverse_cli-0.17.2.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
45
- autoverse_cli-0.17.2.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
46
- autoverse_cli-0.17.2.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
47
- autoverse_cli-0.17.2.dist-info/RECORD,,
44
+ autoverse_cli-0.17.3.dist-info/METADATA,sha256=4J_L2v28tGUsfbxmbh29BZE3dR3xyntCUT2iEHN9O5U,3364
45
+ autoverse_cli-0.17.3.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
46
+ autoverse_cli-0.17.3.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
47
+ autoverse_cli-0.17.3.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
48
+ autoverse_cli-0.17.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.0.0)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
avrs/app_version.py CHANGED
@@ -2,7 +2,7 @@ import http.client
2
2
  import json
3
3
 
4
4
  def get_app_version():
5
- return '0.17.2'
5
+ return '0.17.3'
6
6
 
7
7
  def check_app_is_latest():
8
8
  pass
avrs/avrs.py CHANGED
@@ -132,6 +132,9 @@ def main():
132
132
  AvrsDumpSimConfigRequest(sps, cfg)
133
133
  AvrsRaceControlRequest(sps, cfg)
134
134
 
135
+ # new api requests
136
+ AvrsDescribeSimRestRequest(sps, cfg)
137
+
135
138
  if os.environ.get('AVRS_WITH_DEMO', '0') == '1':
136
139
  AvrsDemoRequest(sps, cfg)
137
140
 
@@ -72,6 +72,55 @@ def register_received_vehicle(team_name, slot, cfg_data, bsu_vcan, kistler_vcan,
72
72
  eav24['body']['kistlerCanName'] = kistler_vcan
73
73
  eav24['body']['badeniaCanName'] = badenia_vcan
74
74
 
75
+ # limit can rates to conserve resources
76
+
77
+ if eav24["body"]["canReceiveRate"] > 10000:
78
+ logger.info("can rx was > 10000. clamping")
79
+ eav24["body"]["canReceiveRate"]
80
+
81
+ if eav24["body"]["canLowSendRate"] > 10:
82
+ logger.info("can tx low was > 10. clamping")
83
+ eav24["body"]["canLowSendRate"] = 10
84
+
85
+ if eav24["body"]["canMedSendRate"] > 100:
86
+ logger.info("can tx med was > 100. clamping")
87
+ eav24["body"]["canMedSendRate"] = 100
88
+
89
+ if eav24["body"]["canHighSendRate"] > 500:
90
+ logger.info("can tx high was > 500. clamping")
91
+ eav24["body"]["canHighSendRate"] = 500
92
+
93
+ # clamp vectornav rates
94
+
95
+ vn = get_payload(cfg_object, "VectornavIpd")
96
+ if vn.get("namedDataStreams", {}).get("CommonGroup", {}).get("rateHz", 0) > 100:
97
+ logger.info("vn CommonGroup rate was > 100. clamping")
98
+ vn["namedDataStreams"]["CommonGroup"]["rateHz"] = 100
99
+
100
+ if vn.get("namedDataStreams", {}).get("GpsGroup", {}).get("rateHz", 0) > 10:
101
+ logger.info("vn GpsGroup rate was > 10. clamping")
102
+ vn["namedDataStreams"]["GpsGroup"]["rateHz"] = 10
103
+
104
+ if vn.get("namedDataStreams", {}).get("Gps2Group", {}).get("rateHz", 0) > 10:
105
+ logger.info("vn Gps2Group rate was > 10. clamping")
106
+ vn["namedDataStreams"]["Gps2Group"]["rateHz"] = 10
107
+
108
+ if vn.get("namedDataStreams", {}).get("ImuGroup", {}).get("rateHz", 0) > 150:
109
+ logger.info("vn ImuGroup rate was > 150. clamping")
110
+ vn["namedDataStreams"]["ImuGroup"]["rateHz"] = 150
111
+
112
+ if vn.get("namedDataStreams", {}).get("AttitudeGroup", {}).get("rateHz", 0) > 100:
113
+ logger.info("vn AttitudeGroup rate was > 100. clamping")
114
+ vn["namedDataStreams"]["AttitudeGroup"]["rateHz"] = 100
115
+
116
+ if vn.get("namedDataStreams", {}).get("Tii", {}).get("rateHz", 0) > 100:
117
+ logger.info("vn Tii rate was > 100. clamping")
118
+ vn["namedDataStreams"]["Tii"]["rateHz"] = 100
119
+
120
+ if vn.get("namedDataStreams", {}).get("NavSatFix", {}).get("rateHz", 0) > 10:
121
+ logger.info("vn NavSatFix rate was > 10. clamping")
122
+ vn["namedDataStreams"]["NavSatFix"]["rateHz"] = 10
123
+
75
124
  ros2 = get_payload(cfg_object, 'Ros2')
76
125
  if ros2 is None:
77
126
  logger.info('no ros2 payload found. adding with domain id {}'.format(slot))
@@ -123,6 +172,18 @@ def register_received_vehicle(team_name, slot, cfg_data, bsu_vcan, kistler_vcan,
123
172
  logger.info('found GroundTruthSensor payload. ensuring it is enabled')
124
173
  gtc['bEnabled'] = True
125
174
 
175
+ # limit gt rates
176
+
177
+ gtc = get_payload(cfg_object, 'GroundTruthSensor')
178
+ if gtc["body"]["myGroundTruthDsd"]["rateHz"] > 100:
179
+ logger.info("myGroundTruthDsd rate was > 100. clamping")
180
+ gtc["body"]["myGroundTruthDsd"]["rateHz"] = 100
181
+
182
+ if gtc["body"]["opponentGroundTruthDsd"]["rateHz"] > 100:
183
+ logger.info("opponentGroundTruthDsd rate was > 100. clamping")
184
+ gtc["body"]["opponentGroundTruthDsd"]["rateHz"] = 100
185
+
186
+
126
187
  # do not allow default object name (collision)
127
188
  if cfg_object['name'] == 'eav24':
128
189
  logger.info('setting vehicle name from default to team name: {}'.format(team_name))
@@ -16,7 +16,7 @@ def add_base_injection_args(psr):
16
16
  psr.add_argument(
17
17
  '--target',
18
18
  default='ego',
19
- help='the simulated object to apply the fault to')
19
+ help='the simulated object to apply the command to')
20
20
 
21
21
  psr.add_argument(
22
22
  '--duration',
avrs/requests/misc.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from avrs.requests.request import AvrsApiRequest
2
+ from avrs.requests.rest_request import AvrsRestApiRequest
2
3
 
3
4
  class AvrsGetSimVersionRequest(AvrsApiRequest):
4
5
  def __init__(self, parser, cfg):
@@ -10,6 +11,15 @@ class AvrsGetSimVersionRequest(AvrsApiRequest):
10
11
  return {
11
12
  }
12
13
 
14
+ class AvrsDescribeSimRestRequest(AvrsRestApiRequest):
15
+ def __init__(self, parser, cfg):
16
+ AvrsRestApiRequest.__init__(self, parser, cfg, '/api/v1.0/describe-app', 'GET')
17
+ psr = parser.add_parser('describe-app', help='get the version of the currently running simulator')
18
+ psr.set_defaults(func=self.send_request)
19
+
20
+ def get_request_params(self, args):
21
+ return {}
22
+
13
23
  class AvrsGetExitSimRequest(AvrsApiRequest):
14
24
  def __init__(self, parser, cfg):
15
25
  AvrsApiRequest.__init__(self, parser, cfg, 'ExitSim', 0)
@@ -4,7 +4,7 @@ from avrs.requests.request import AvrsApiRequest
4
4
  class AvrsRaceControlRequest(AvrsApiRequest):
5
5
  def __init__(self, parser, cfg):
6
6
  AvrsApiRequest.__init__(self, parser, cfg, 'RaceControl', 'Ego')
7
- psr = parser.add_parser('race-control', help='command an object to move to a landmark')
7
+ psr = parser.add_parser('race-control', help='send different flags to the race control')
8
8
 
9
9
  psr.add_argument(
10
10
  '--session-type',
@@ -23,6 +23,12 @@ class AvrsRaceControlRequest(AvrsApiRequest):
23
23
  type=int,
24
24
  default=-1,
25
25
  help='the id of the car flag to set')
26
+
27
+ psr.add_argument(
28
+ '--sector-flag',
29
+ type=int,
30
+ default=-1,
31
+ help='the id of the sector flag to set')
26
32
 
27
33
  psr.add_argument(
28
34
  '--object-name',
@@ -37,5 +43,6 @@ class AvrsRaceControlRequest(AvrsApiRequest):
37
43
  return {
38
44
  'sessionType': args.session_type,
39
45
  'trackFlag': args.track_flag,
40
- 'carFlag': args.car_flag
46
+ 'carFlag': args.car_flag,
47
+ 'sectorFlag': args.sector_flag
41
48
  }
@@ -0,0 +1,45 @@
1
+ import socket
2
+ import json
3
+ import os
4
+ import os.path
5
+ import multiprocessing
6
+ import time
7
+ import sys
8
+ import http.client
9
+
10
+ # the new API request
11
+
12
+ class AvrsRestApiRequest:
13
+ def __init__(self, parser, cfg, endpoint, method):
14
+ self.endpoint = endpoint
15
+ self.method = method
16
+ self.verbose = False
17
+ self.cfg = cfg
18
+
19
+ def get_request_body(self, args):
20
+ return {}
21
+
22
+ def get_request_params(self, args):
23
+ return {}
24
+
25
+ def send_request(self, args):
26
+
27
+ sim_address = '0.0.0.0'
28
+ # if 'sim_address' in self.cfg:
29
+ # sim_address = self.cfg['sim_address']
30
+ # connection_addr = os.environ.get('AVRS_SIM_ADDRESS', sim_address)
31
+
32
+ sim_port = 51111
33
+ # if 'sim_api_port' in self.cfg:
34
+ # sim_port = self.cfg['sim_api_port']
35
+
36
+ if args.verbose:
37
+ print('sending request to: {}:{}'.format(sim_address, sim_port))
38
+ connection = http.client.HTTPConnection(sim_address, sim_port, timeout=10)
39
+ headers = {'Content-type': 'application/json'}
40
+ body = json.dumps(self.get_request_body(args)).encode('utf-8')
41
+ connection.request(self.method, self.endpoint, body, headers)
42
+ response = connection.getresponse()
43
+ if response.status != 200:
44
+ print('response had status code {}'.format(response.status))
45
+ print('{}'.format(response.read().decode('utf-8')))