set_blending¶
Runs at once Any mode Takes control
Set the default blend: how queued moves join at their corners. Every queued move that does not pass its own blend takes this value. What the number means depends on the move's blend_mode, which each move passes for itself ("exact_velocity" when it passes none):
"exact_velocity": the percent of the corner speed kept, from 0 to 100. It works between twomove_joints()moves in a row with the"ruckig"or"trapezoid"profile, when the second one uses the same profile and is already queued while the first is planned (so never in sync mode). Every other move stops at its end."zone": the radius of the rounded corner, in millimetres."tolerance": the largest distance from the programmed path, in millimetres."ruckig_corner": the size of the corner cut, in millimetres.
"zone" and "tolerance" need the "toppra" profile, "ruckig_corner" the "ruckig" profile; see Per-move settings. The setting is the robot's: it applies to the moves every client sends after it, and moves already sent keep their value. It lasts until it is changed or the robot software restarts.
Syntax¶
Arguments¶
| Name | Type | Default | Description |
|---|---|---|---|
percent |
float |
required | The blend value: a percent with "exact_velocity" (a value above 100 counts as 100), millimetres with the other modes. 0 means no blending; a negative value is refused. |
Default values¶
0 (no blending), set each time the robot software starts.
Returns¶
Any
None: the robot sends no value back.
Examples¶
robot.set_blending(50)
robot.move_joints(90, -105, 165, 0, -30, 180)
robot.move_joints(95, -105, 165, 0, -30, 180)
robot.move_joints(95, -100, 160, 0, -30, 180)
robot.wait_idle()
robot.set_blending(0)
Further details¶
Note
Arcs, circles and splines cannot blend yet: they ignore this value, and
one that passes its own blend above 0 fails with
CURVE_BLEND_UNSUPPORTED.
Usage restrictions 2 codes
This command runs at once; it is not queued. The robot accepts it in any mode and state, from the client that holds control or when no client does.
It answers with one of these codes when it does not carry the command out:
- [6101] Control held by another client — another client holds control; the message names it
- [6003] Invalid arguments —
percentis negative or not a finite number
In Python, a code above raises CommandRejected; its number is the code. The call raises:
CommandRejected: The robot refused it:percentis negative or not a finite number, or another client holds control.RobotTimeout: The robot did not answer within 5 s.RobotConnectionError: The client is not connected.ValueError:percentcannot be read as a number, for example"some". Nothing is sent.TypeError:percentisNoneor another type that is no number. Nothing is sent.
If the connection drops while the call waits for the robot's answer, it raises CommandRejected with the code CONNECTION_LOST (DISCONNECTED after disconnect()); while it waits for the robot's status, RobotConnectionError.
Like every immediate command, it also answers BAD_ARGS when a raw client sends a value the robot cannot read at all, and INTERNAL when it fails inside the robot.
Protocol¶
A client that does not use robotclient sends this over the TCP command protocol (port 29000) for the example above: