autoverse-cli 0.28.2__tar.gz → 0.28.3__tar.gz

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.
Files changed (56) hide show
  1. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/PKG-INFO +1 -1
  2. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/pyproject.toml +1 -1
  3. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/autoverse_cli.egg-info/PKG-INFO +1 -1
  4. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/race_cloud.py +1 -0
  5. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/race_cloud_cfg_util.py +30 -4
  6. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/race_cloud_util.py +26 -6
  7. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/LICENSE +0 -0
  8. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/README.md +0 -0
  9. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/setup.cfg +0 -0
  10. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/autoverse_cli.egg-info/SOURCES.txt +0 -0
  11. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/autoverse_cli.egg-info/dependency_links.txt +0 -0
  12. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/autoverse_cli.egg-info/entry_points.txt +0 -0
  13. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/autoverse_cli.egg-info/requires.txt +0 -0
  14. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/autoverse_cli.egg-info/top_level.txt +0 -0
  15. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/__init__.py +0 -0
  16. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/app_version.py +0 -0
  17. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/argparse_help.py +0 -0
  18. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/avrs.py +0 -0
  19. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/can_tool.py +0 -0
  20. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/can_tool_util.py +0 -0
  21. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/cfg.py +0 -0
  22. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/launcher.py +0 -0
  23. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/launcher_util.py +0 -0
  24. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/race_cloud_bridge_can.py +0 -0
  25. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/race_cloud_fwd_api.py +0 -0
  26. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/change_camera.py +0 -0
  27. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/code_booz.py +0 -0
  28. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/demo.py +0 -0
  29. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/dump_sim_config.py +0 -0
  30. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/environment.py +0 -0
  31. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/fault_injection.py +0 -0
  32. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/get_object_config.py +0 -0
  33. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/get_web_viz_meta.py +0 -0
  34. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/leaderboard.py +0 -0
  35. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/list_sim_objects.py +0 -0
  36. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/log_path.py +0 -0
  37. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/misc.py +0 -0
  38. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/move_to_landmark.py +0 -0
  39. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/npc.py +0 -0
  40. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/race_control.py +0 -0
  41. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/request.py +0 -0
  42. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/reset_to_track.py +0 -0
  43. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/rest_request.py +0 -0
  44. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/restart.py +0 -0
  45. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/scenario_control.py +0 -0
  46. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/spawn_object.py +0 -0
  47. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/teleport.py +0 -0
  48. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/toggle_hud.py +0 -0
  49. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/vd.py +0 -0
  50. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/vehicle_input.py +0 -0
  51. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/requests/vehicle_replay.py +0 -0
  52. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/shell_completion.py +0 -0
  53. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/simconfig.py +0 -0
  54. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/simconfig_util.py +0 -0
  55. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/tests.py +0 -0
  56. {autoverse_cli-0.28.2 → autoverse_cli-0.28.3}/src/avrs/util.py +0 -0
@@ -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,6 +1,6 @@
1
1
  [project]
2
2
  name = "autoverse-cli"
3
- version = "0.28.2"
3
+ version = "0.28.3"
4
4
  dependencies = [
5
5
  "boto3",
6
6
  "cantools",
@@ -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
@@ -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':
@@ -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)
File without changes
File without changes
File without changes