Skip to content

Per-move settings

Every move command takes these as keyword arguments. They apply to that one move:

robot.move_joints(90, -105, 165, 0, -30, 180, speed=20, profile="trapezoid")

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_policy is 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