autoverse-cli 0.28.2__py3-none-any.whl → 0.28.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
1
  Metadata-Version: 2.4
2
2
  Name: autoverse-cli
3
- Version: 0.28.2
3
+ Version: 0.28.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
@@ -1,4 +1,4 @@
1
- autoverse_cli-0.28.2.dist-info/licenses/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
1
+ autoverse_cli-0.28.3.dist-info/licenses/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
2
2
  avrs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  avrs/app_version.py,sha256=ullV714kk4FcU4YhcTqWvwnpaDh3TO1AMKAxlmgp2dM,857
4
4
  avrs/argparse_help.py,sha256=EoEaohGXZXqJvs1dFEzbo9vh47CYdHdSY2Im2Ps2iFo,945
@@ -8,11 +8,11 @@ avrs/can_tool_util.py,sha256=G3q21dTGMLc09SDq_RieoW7kSn-kXPkXxPDjavPh4hQ,7710
8
8
  avrs/cfg.py,sha256=kMn08Z4Ms1PAu2-U1QI8weEJeIVEppP4A4_tFfwnjtg,2924
9
9
  avrs/launcher.py,sha256=uk7xG2JTLJv7FJMDo1diwc-zmTvUxXJME9-0ctrZRuk,11352
10
10
  avrs/launcher_util.py,sha256=zXUbJByn9M-ErkNM6DvLCFtUkueYH-R0dehjQj0aYEs,6879
11
- avrs/race_cloud.py,sha256=0m7BdclKhTrqdAA2kLIobwfoYA8X_PRDCFWoizHtPIQ,20124
11
+ avrs/race_cloud.py,sha256=jcAUPYUSQvO1P-DASkiLpYRzfK7ObHtjqaQ4p_Fg7y8,20143
12
12
  avrs/race_cloud_bridge_can.py,sha256=K3is7GFzWo2KBojr6V65kz138UfkVFXXofVxSAziArY,2888
13
- avrs/race_cloud_cfg_util.py,sha256=TF_gsP7c_39MKs1CyzeXkTH-Fwyd8wLkFkMbqQVmdeo,12066
13
+ avrs/race_cloud_cfg_util.py,sha256=kxeVqCAs1UaZ8FxAIScJcIIn5kR3qtC026os-HpdV5A,13706
14
14
  avrs/race_cloud_fwd_api.py,sha256=jB4kt6Shu9Pj96WPVjK790PZjucYxmuHjjVKczQfyZI,1620
15
- avrs/race_cloud_util.py,sha256=g1gCxmK-8n32aNj0NWEiZr79s1rB0EYbGmNLabsIW0U,14297
15
+ avrs/race_cloud_util.py,sha256=yV7NC7-zGpCvXxzCq2nzRQMu3YdbwNFzQyT59k2V00I,15175
16
16
  avrs/shell_completion.py,sha256=_IM85ADKQHYNMlTa1_nhnYWsgdOzRQ7tIFHxAT6EWWA,4298
17
17
  avrs/simconfig.py,sha256=UZc4FrxVHUkk2e9IglSpuojXkaL_nPrJW7trbEGgOOo,2907
18
18
  avrs/simconfig_util.py,sha256=ronvXg9Mraz60K99ABBvo_YDI1_rWphUWUn_s_voTKw,6044
@@ -44,8 +44,8 @@ avrs/requests/toggle_hud.py,sha256=sV5t5QZc4uvRihPVk8jEKZiQNsyF9tsUwq5b4jjZplc,3
44
44
  avrs/requests/vd.py,sha256=Rd0mCc89m2yKjftVf0cMHMFbJG4iFd09KzrI-DsCLgI,2606
45
45
  avrs/requests/vehicle_input.py,sha256=R1b1xkRtOBkwyU6OSN4bWVlYsIUroZG0WKbYbc4pEH8,729
46
46
  avrs/requests/vehicle_replay.py,sha256=7HPfVLjSLNbOyzU77Bz29qpHqRsMUAIWvnwvnNiw2nk,15026
47
- autoverse_cli-0.28.2.dist-info/METADATA,sha256=EN_N8x4TzqMGdvq37kRqV-3quJT2GrSWWa0ZV-ec-lc,3935
48
- autoverse_cli-0.28.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
49
- autoverse_cli-0.28.2.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
50
- autoverse_cli-0.28.2.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
51
- autoverse_cli-0.28.2.dist-info/RECORD,,
47
+ autoverse_cli-0.28.3.dist-info/METADATA,sha256=EXbQmiNN-6TDB1n9TPkZESMdFANMOU726lVwhCV5s7c,3935
48
+ autoverse_cli-0.28.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
49
+ autoverse_cli-0.28.3.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
50
+ autoverse_cli-0.28.3.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
51
+ autoverse_cli-0.28.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
avrs/race_cloud.py CHANGED
@@ -229,6 +229,7 @@ class AvrsRaceCloud(AvrsApiRequest):
229
229
  ok, response = call_race_cloud_api(connection_request)
230
230
  if not ok:
231
231
  print('connect api error: {}'.format(response))
232
+ return
232
233
 
233
234
  ok, rbody, sim_ip = get_api_script_response(response)
234
235
  if not ok:
@@ -78,13 +78,13 @@ def register_received_vehicle(team_name, slot, cfg_data, bsu_vcan, kistler_vcan,
78
78
  if eav24 is None:
79
79
  return (False, 'no eav24 payload found')
80
80
 
81
- logger.info('disabling perception for received vehicle config')
82
- eav24['body']['bLidarEnabled'] = False
81
+ #logger.info('disabling perception for received vehicle config')
82
+ # eav24['body']['bLidarEnabled'] = False
83
83
  eav24['body']['bCameraEnabled'] = False
84
84
  eav24['body']['bRadarEnabled'] = False
85
- eav24['body']['bPublishGroundTruth'] = False
85
+ # eav24['body']['bPublishGroundTruth'] = False
86
86
  eav24['body']['bPublishInputs'] = False
87
- eav24['body']['bRenderHudInWorld'] = True
87
+ eav24['body']['bRenderHudInWorld'] = False
88
88
 
89
89
  # do not disable HUD
90
90
  #logger.info('disabling hud for received vehicle config')
@@ -208,6 +208,32 @@ def register_received_vehicle(team_name, slot, cfg_data, bsu_vcan, kistler_vcan,
208
208
  logger.info("opponentGroundTruthDsd rate was > 100. clamping")
209
209
  gtc["body"]["opponentGroundTruthDsd"]["rateHz"] = 100
210
210
 
211
+ # clamp lidar rates
212
+ for payload in cfg_object['payloads']:
213
+ if payload['typeName'].lower() == 'genericlidaripd':
214
+ lidar_rate = payload.get("body", {}).get("sensorDesc", {}).get("dataStream", {}).get("rateHz", 0)
215
+ if lidar_rate > 20:
216
+ instance_name = payload.get("body", {}).get("componentConfig", {}).get("instanceName", "unknown")
217
+ logger.info("lidar {} rate was > 20. clamping".format(instance_name))
218
+ payload["body"]["sensorDesc"]["dataStream"]["rateHz"] = 20
219
+
220
+ # clamp camera rates
221
+ for payload in cfg_object['payloads']:
222
+ if payload['typeName'].lower() == 'camerasensor':
223
+ camera_rate = payload.get("body", {}).get("sensorDesc", {}).get("dataStream", {}).get("rateHz", 0)
224
+ if camera_rate > 20:
225
+ instance_name = payload.get("body", {}).get("componentConfig", {}).get("instanceName", "unknown")
226
+ logger.info("camera {} rate was > 20. clamping".format(instance_name))
227
+ payload["body"]["sensorDesc"]["dataStream"]["rateHz"] = 20
228
+
229
+ # clamp radar rates
230
+ for payload in cfg_object['payloads']:
231
+ if payload['typeName'].lower() == 'radarsensor':
232
+ radar_rate = payload.get("body", {}).get("sensorDesc", {}).get("dataStream", {}).get("rateHz", 0)
233
+ if radar_rate > 20:
234
+ instance_name = payload.get("body", {}).get("componentConfig", {}).get("instanceName", "unknown")
235
+ logger.info("radar {} rate was > 20. clamping".format(instance_name))
236
+ payload["body"]["sensorDesc"]["dataStream"]["rateHz"] = 20
211
237
 
212
238
  # do not allow default object name (collision)
213
239
  if cfg_object['name'] == 'eav24':
avrs/race_cloud_util.py CHANGED
@@ -375,10 +375,30 @@ def call_race_cloud_api(body):
375
375
  return (True, response.read().decode('utf-8'))
376
376
 
377
377
  def get_api_script_response(raw):
378
- decoded = json.loads(raw)['body']
379
378
  logger = logging.getLogger('avrs')
380
- logger.info('race cloud api response: {}'.format(decoded))
381
- if decoded['script_response']['statusCode'] != 200:
382
- return (False, 'inner response had bad status code {}'.format(decoded))
383
- #print(decoded)
384
- return (True, json.loads(decoded['script_response']['body']), decoded['sim_private_ip'])
379
+ try:
380
+ parsed = json.loads(raw)
381
+ decoded = parsed['body']
382
+
383
+ # Handle double-encoded JSON (body is a string instead of dict)
384
+ if isinstance(decoded, str):
385
+ decoded = json.loads(decoded)
386
+
387
+ logger.info('race cloud api response: {}'.format(decoded))
388
+
389
+ if 'script_response' not in decoded:
390
+ return (False, 'missing script_response in response: {}'.format(decoded), None)
391
+
392
+ if decoded['script_response']['statusCode'] != 200:
393
+ return (False, 'inner response had bad status code {}'.format(decoded), None)
394
+
395
+ return (True, json.loads(decoded['script_response']['body']), decoded['sim_private_ip'])
396
+ except json.JSONDecodeError as e:
397
+ logger.error('failed to parse API response as JSON: {}'.format(e))
398
+ return (False, 'invalid JSON response: {}'.format(raw[:500]), None)
399
+ except KeyError as e:
400
+ logger.error('missing expected key in API response: {}'.format(e))
401
+ return (False, 'missing key {} in response: {}'.format(e, raw[:500]), None)
402
+ except Exception as e:
403
+ logger.error('unexpected error parsing API response: {}'.format(e))
404
+ return (False, 'error parsing response: {}'.format(e), None)