carla-driver-interface 2.3.0__tar.gz → 2.3.1__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 (33) hide show
  1. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/PKG-INFO +1 -1
  2. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/pyproject.toml +1 -1
  3. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/pyproject.toml.orig +1 -1
  4. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/hdmap.py +15 -1
  5. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/LICENSE +0 -0
  6. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/README.md +0 -0
  7. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/__init__.py +0 -0
  8. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/__init__.py +0 -0
  9. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/carla_driver_pb2.py +0 -0
  10. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/carla_driver_pb2.pyi +0 -0
  11. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/carla_driver_pb2_grpc.py +0 -0
  12. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/common_pb2.py +0 -0
  13. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/common_pb2.pyi +0 -0
  14. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/egodriver_pb2.py +0 -0
  15. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/egodriver_pb2.pyi +0 -0
  16. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/egodriver_pb2_grpc.py +0 -0
  17. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/sensorsim_pb2.py +0 -0
  18. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/_proto/sensorsim_pb2.pyi +0 -0
  19. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/alpasim.py +0 -0
  20. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/cli.py +0 -0
  21. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/contract.py +0 -0
  22. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/driver.py +0 -0
  23. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/geometry.py +0 -0
  24. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/inprocess.py +0 -0
  25. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/policies/__init__.py +0 -0
  26. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/policies/constant_speed.py +0 -0
  27. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/policies/route_follower.py +0 -0
  28. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/polyline.py +0 -0
  29. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/protocol.py +0 -0
  30. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/py.typed +0 -0
  31. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/server.py +0 -0
  32. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/service.py +0 -0
  33. {carla_driver_interface-2.3.0 → carla_driver_interface-2.3.1}/src/carla_driver_interface/testing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: carla-driver-interface
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Both ends of alpasim's egodriver gRPC contract: serve a driving policy, or drive one without CARLA
5
5
  Author: Masaya Kataoka
6
6
  Author-email: Masaya Kataoka <ms.kataoka@gmail.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "carla-driver-interface"
3
- version = "2.3.0"
3
+ version = "2.3.1"
4
4
  description = "Both ends of alpasim's egodriver gRPC contract: serve a driving policy, or drive one without CARLA"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "carla-driver-interface"
3
- version = "2.3.0"
3
+ version = "2.3.1"
4
4
  description = "Both ends of alpasim's egodriver gRPC contract: serve a driving policy, or drive one without CARLA"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -259,13 +259,21 @@ class _GivenLanelet2:
259
259
  right = np.array([xy[n] for n in ways[members["right"]]])
260
260
  except KeyError:
261
261
  continue # a lanelet without both bounds, or off the local frame
262
- # The left bound gives the direction; the right runs with it.
262
+ # The right bound runs with the left.
263
263
  if np.linalg.norm(left[0] - right[-1]) + np.linalg.norm(
264
264
  left[-1] - right[0]
265
265
  ) < np.linalg.norm(left[0] - right[0]) + np.linalg.norm(
266
266
  left[-1] - right[-1]
267
267
  ):
268
268
  right = right[::-1]
269
+ # And the lanelet runs the way Lanelet2 reads it: with its left bound
270
+ # on the left, whichever order the ways are written in. A writer that
271
+ # shares one way between lanes running opposite ways -- roadgen does --
272
+ # writes a backward lane's bounds against its travel. Left bound on,
273
+ # right bound back, the outline turns clockwise when the left bound is
274
+ # on the left.
275
+ if _signed_area(np.vstack([left, right[::-1]])) > 0:
276
+ left, right = left[::-1], right[::-1]
269
277
  lanelet = rel.get("id", "")
270
278
  rules = tuple(
271
279
  m.get("ref", "")
@@ -395,6 +403,12 @@ def _length(points: np.ndarray) -> float:
395
403
  return float(np.linalg.norm(np.diff(points, axis=0), axis=1).sum())
396
404
 
397
405
 
406
+ def _signed_area(polygon: np.ndarray) -> float:
407
+ """The shoelace area of a closed ``(N, 2)`` outline: positive anticlockwise."""
408
+ x, y = polygon[:, 0], polygon[:, 1]
409
+ return 0.5 * float(np.dot(x, np.roll(y, -1)) - np.dot(np.roll(x, -1), y))
410
+
411
+
398
412
  def _cell(point: np.ndarray) -> tuple[int, int]:
399
413
  return (math.floor(point[0]), math.floor(point[1]))
400
414