Trajectory planning
Two methods of planning trajectories are available
point_to_point: Generate a minimum-time point-to-point trajectory with specified start and endpoints, not exceeding specified speed and acceleration limits.traj5: Generate a 5:th order polynomial trajectory with specified start and end points. Additionally allows specification of start and end values for velocity and acceleration.
Components that make use of these trajectory generators is provided:
These both have output connectors of type RealOutput called q, qd, qdd for positions, velocities and accelerations.
See Industrial robot for an example making use of the point_to_point planner.
Example
Point-to-point trajectory
using Multibody, Plots
Ts = 0.001
t = -1:Ts:3
q1 = [1, 1.2] # Final point (2 DOF)
qd_max = [0.7, 1.2] # Max velocity (2 DOF)
qdd_max = [0.9, 1.1] # Max acceleration (2 DOF)
q, qd, qdd = point_to_point(t; q1, qd_max, qdd_max)
plot(t, [q qd qdd], ylabel=["\$q\$" "\$\\dot{q}\$" "\$\\ddot{q}\$"], layout=(3,1), l=2, sp=[1 1 2 2 3 3], legend=false)
hline!([qd_max' qdd_max'], l=(2, :dash), sp=[2 2 3 3], c=[1 2 1 2], legend=false)5:th order polynomial trajectory
t = 0:Ts:3
q1 = 1
q, qd, qdd = traj5(t; q1)
plot(t, [q qd qdd], ylabel=["\$q\$" "\$\\dot{q}\$" "\$\\ddot{q}\$"], layout=(3,1), l=2, legend=false)Docstrings
Multibody.Kinematic5Multibody.KinematicPTPMultibody.PathPlanning1Multibody.PathToAxisControlBusMultibody.RealPassThroughMultibody.point_to_pointMultibody.traj5
Multibody.Kinematic5 — MethodKinematic5(; time, name, q0 = 0, q1 = 1, qd0 = 0, qd1 = 0, qdd0 = 0, qdd1 = 0)A component emitting a 5:th order polynomial trajectory created using traj5. traj5 is a simple trajectory planner that plans a 5:th order polynomial trajectory between two points, subject to specified boundary conditions on the position, velocity and acceleration.
Arguments
time: Time vector, e.g.,0:0.01:10name: Name of the component
Outputs
q: Positionqd: Velocityqdd: Acceleration
Multibody.KinematicPTP — MethodKinematicPTP(; time, name, q0 = 0, q1 = 1, qd_max=1, qdd_max=1)A component emitting a trajectory created by the point_to_point trajectory generator.
Arguments
time: Time vector, e.g.,0:0.01:10name: Name of the componentq0: Initial positionq1: Final positionqd_max: Maximum velocityqdd_max: Maximum acceleration
Outputs
q: Positionqd: Velocityqdd: Acceleration
See also Kinematic5.
Multibody.PathPlanning1 — MethodGenerate reference angles for specified kinematic movement
Multibody.PathToAxisControlBus — MethodMap path planning to one axis control bus
Multibody.RealPassThrough — MethodRealPassThrough(; name)Pass a Real signal through without modification
Connectors
inputoutput
Multibody.traj5 — Methodq, qd, qdd = traj5(t; q0, q1, q̇0 = zero(q0), q̇1 = zero(q0), q̈0 = zero(q0), q̈1 = zero(q0))Generate a 5:th order polynomial trajectory with specified end points, vels and accs.
See also point_to_point and Kinematic5.
Multibody.point_to_point — Methodq,qd,qdd,t_end = point_to_point(time; q0 = 0.0, q1 = 1.0, t0 = 0, qd_max = 1, qdd_max = 1)Generate a minimum-time point-to-point trajectory with specified start and endpoints, not exceeding specified speed and acceleration limits.
The trajectory produced by this function will typically exhibit piecewise constant accleration, piecewise linear velocity and piecewise quadratic position curves.
If a vector of time points is provided, the function returns matrices q,qd,qdd of size (length(time), n_dims). If a scalar time point is provided, the function returns q,qd,qdd as vectors with the specified dimension (same dimension as q0). t_end is the time at which the trajectory will reach the specified end position.
Arguments:
time: A scalar or a vector of time points.q0: Initial coordinate, may be a scalar or a vector.q1: End coordinatet0: Tiem at which the motion starts. Iftimecontains time points beforet0, the trajectory will stand still atq0untiltimereachest0.qd_max: Maximum allowed speed.qdd_max: Maximum allowed acceleration.
See also KinematicPTP and traj5.