Per-move settings¶
Every move command takes these as keyword arguments. They apply to that one move:
A setting you leave out takes its default. The commands in the last column change a default for every move sent after them; a move's own setting still overrides it. Some settings matter only for some moves: a command's page says which have no effect on it.
| Setting | Values | Default | Default set by |
|---|---|---|---|
speed |
A percent of each joint's speed limit, above 0 and at most 100. 1 means 1 %, and 0.5 half a percent. |
100 % | set_joint_speed() |
accel |
A percent of each joint's acceleration limit, above 0 and at most 100. | 100 % | |
duration |
Seconds. | none (the speed decides) | |
profile |
One of the profiles below. | "ruckig" | set_profile() |
jerk |
A percent of the jerk limit, above 0 and at most 100. | 100 % | |
ramp_fraction |
More than 0, up to 0.5. | 0.25 | |
blend |
A percent, or millimetres, depending on blend_mode. |
0 | set_blending() |
blend_mode |
One of the modes below. | "exact_velocity" | |
blend_continuity |
One of the two curves below. | "c1" | |
ik_solver |
One of the solvers below. | "pinocchio" | set_ik_solver() |
singularity_strategy |
One of the strategies below. | "stop" | |
samples |
A whole number. | automatic | |
dry_run |
True or False. |
False |
speed¶
Scales every joint's speed limit for this move. A value of 0 or less, above 100 or not a number is refused when the move is sent (BAD_OPTIONS). Moves along a Cartesian path (straight lines, arcs, circles and splines) run at no more than 20 % of the speed limit, whatever this says.
accel¶
Scales every joint's acceleration limit for this move. A value of 0 or less, above 100 or not a number is refused when the move is sent (BAD_OPTIONS). A lower value gives gentler starts and stops and a longer move. It scales the jerk limit with it.
duration¶
The move takes exactly this long, overriding speed. A duration of 0 or less fails with INVALID_DURATION; one shorter than the limits allow fails with DURATION_INFEASIBLE. A pause (delay()) takes it in place of its seconds.
profile¶
How the move speeds up and slows down.
| Value | What it does |
|---|---|
"trapezoid" |
Limits speed and acceleration. Shorter moves; the arm can ring briefly after a full-speed stop. |
"quintic" |
A smooth polynomial shape that starts and ends at rest. |
"s_curve" |
A smooth fixed shape, with the gentlest jerk of the fixed shapes. |
"toppra" |
The fastest timing along the path within speed and acceleration limits. Needed for "zone" and "tolerance" blending. |
"ruckig" |
Limits speed, acceleration and jerk. Smooth starts and stops, with no ringing after a fast stop. |
Also accepted: "poly5" for "quintic", "s-curve" for "s_curve", "scurve" for "s_curve", "smoothstep7" for "s_curve", "trap" for "trapezoid", "trapezoidal" for "trapezoid".
jerk¶
Only with profile="ruckig", the only profile that limits jerk: jerk=25 is four times gentler. A value outside 0 to 100 % is refused when the move is sent (BAD_OPTIONS); with any other profile the move fails with PLAN_FAIL.
ramp_fraction¶
Only with profile="trapezoid": the share of the move spent speeding up, and again slowing down. 0.5 leaves no constant-speed part. A value outside the range is refused when the move is sent (BAD_OPTIONS); with any other profile the move fails with PLAN_FAIL.
blend¶
How much of a corner is rounded or kept at speed. With "exact_velocity" it is the percent of the corner speed kept, 0 to 100 (0 stops at every waypoint). With "zone" it is the radius of the rounded corner, and with "tolerance" the largest distance from the path, both in millimetres.
blend_mode¶
How a move joins the next one. "zone" and "tolerance" need profile="toppra", and "ruckig_corner" needs profile="ruckig" and joint moves. Without that, the moves are not refused: they run one by one, without blending, and the robot's log says so.
| Value | What it does |
|---|---|
"exact_velocity" |
Passes exactly through each waypoint, keeping part of its speed through it. |
"zone" |
Rounds each corner with a curve of radius blend. |
"tolerance" |
Rounds each corner so the path never strays more than blend from the programmed one. |
"ruckig_corner" |
Experimental. Jerk-limited corners, for joint moves only. |
Also accepted: "g64" for "tolerance", "ruckig" for "ruckig_corner", "velocity" for "exact_velocity".
blend_continuity¶
The shape of a rounded corner.
| Value | What it does |
|---|---|
"c1" |
The corner's direction changes smoothly, but its curvature jumps where it meets the straight path. |
"c2" |
The curvature also starts and ends at zero, so there is no jolt where the corner meets the path; the arm goes slower through the corner. |
Also accepted: "quad" for "c1", "quadratic" for "c1", "quintic" for "c2".
ik_solver¶
The solver that turns poses into joint angles. Joint moves do not use it.
| Value | What it does |
|---|---|
"pinocchio" |
Damped least squares on the Pinocchio model. |
"roboticstoolbox" |
Levenberg-Marquardt on the robotics toolbox model. |
Also accepted: "pin" for "pinocchio", "robotics_toolbox" for "roboticstoolbox", "rtb" for "roboticstoolbox".
singularity_strategy¶
What to do at a singular pose on a Cartesian path. Only "stop" is built; the robot refuses the other two when the move is sent (BAD_OPTIONS). Joint moves do not use it.
| Value | What it does |
|---|---|
"stop" |
Checks the whole path before the move starts and refuses a path through a singular pose. |
"variable_velocity" (refused for now) |
Reserved, not built yet. Would slow down through the singular region. |
"auto_avoid" (refused for now) |
Reserved, not built yet. Would bend the path around it. |
Also accepted: "avoid" for "auto_avoid", "var_vel" for "variable_velocity".
samples¶
How many points a Cartesian path is planned and checked at: 2 to 500 for a straight line, 2 to 3000 for an arc, circle or spline; a value outside is clamped. Meant for planning tools. Joint moves do not use it.
dry_run¶
True plans the move in full and runs every check (joint limits, safety zones, self-collision, the timing) without moving the arm, on every move type.
Not a per-move setting¶
completion_policyis refused on a single move (BAD_OPTIONS): use set_completion_policy() instead of a per-command option.
Found a mistake on this page? Edit it on GitHub · Report it · Get help