This is the design document for the lane_planner
package.
Purpose / Use cases
Lane Planner is used to calculate trajectory within lanes. It will use centerline of lanes obtained from HADMap and convert it into trajectory.
Design
Assumptions / Known limits
Assumptions:
- Route message does not include primitive that is irrelevant.
e.g. if lane are connected as 1->2->3, and if start_point is within lane 2 and goal_point is lane 3, given route should not include lane 1.
Limitations:
- Since the lane planner is using centerline of lane, it may not be kinematically feasible path, for example, when the lanes have sharp turns.
- Optimization of trajectories with vehicle's limitations will be future work.
Inputs / Outputs / API
Inputs
- HADMap
- Route via ActionGoalRequest
Outputs
- Trajectory via ActionResult
Inner-workings / Algorithms
Trajectory is generated by following steps:
- Generation of trajectory points from centerline in Lanelet Map
- Calculation of steering angle from curvature of the path
- Calcuation of time of arrival for each points from velocity
- Resizing trajectory to fit within trajectory capacity
- Smoothing of velocity
Error detection and handling
If any invalid route is given, the planner will return empty trajectory.
Security considerations
References / External links
Future extensions / Unimplemented parts
- Optimization of the shape of the path using drivable area from lane geometry
- Velocity optimization with vehicle's jerk/acceleration/velocity limits
Related issues