ToppraPlanner#
ToppraPlanner is a trajectory planner based on the TOPPRA (Time-Optimal Path Parameterization via Reachability Analysis) library. It generates time-optimal joint trajectories under velocity and acceleration constraints.
Features#
Time-optimal trajectory generation: Computes the fastest possible trajectory between waypoints, given joint velocity and acceleration limits.
Flexible sampling: Supports sampling by time interval or by number of points.
Constraint handling: Automatically formats velocity and acceleration constraints for the TOPPRA solver.
Dense and sparse waypoints: Supports both dense and sparse waypoint interpolation.
Usage#
Initialization#
from embodichain.lab.sim.planners.toppra_planner import ToppraPlanner, ToppraPlannerCfg
# Configuration - constraints are now specified in ToppraPlanOptions, not here
cfg = ToppraPlannerCfg(
robot_uid="UR5"
)
planner = ToppraPlanner(cfg=cfg)
Planning#
from embodichain.lab.sim.planners.utils import TrajectorySampleMethod, PlanState
from embodichain.lab.sim.planners.toppra_planner import ToppraPlanOptions
# Create options with constraints and sampling parameters
options = ToppraPlanOptions(
constraints={
"velocity": 0.2, # Joint velocity limit (rad/s) - can also be a list per joint
"acceleration": 0.5, # Joint acceleration limit (rad/s²) - can also be a list per joint
},
sample_method=TrajectorySampleMethod.TIME, # Or TrajectorySampleMethod.QUANTITY
sample_interval=0.01 # Time interval in seconds (if TIME) or number of samples (if QUANTITY)
)
# Plan trajectory - only target_states needed now (current_state is handled internally)
result = planner.plan(
target_states=[
PlanState(qpos=[1, 1, 1, 1, 1, 1])
],
options=options
)
result.positions,result.velocities,result.accelerationsare arrays of sampled trajectory points.result.dtis the array of time intervals between each point.result.durationis the total trajectory time.result.successindicates whether planning succeeded.
Notes#
The planner requires the
toppralibrary (pip install toppra==0.6.3).For dense waypoints, the default spline interpolation is used. For sparse waypoints, you may need to adjust the interpolation method.
The number of grid points (
gridpt_min_nb_points) is important for accurate acceleration constraint handling.Constraints can be specified as a single float (applied to all joints) or as a list of values for each joint.
The
sample_methodcan beTrajectorySampleMethod.TIMEfor uniform time intervals orTrajectorySampleMethod.QUANTITYfor a fixed number of samples.