Cartesian-space position actuator for xArm arms.
Sends end-effector pose commands (x, y, z, roll, pitch, yaw) directly to
the arm using register 0x15 (MOVE_LINE). The arm's own controller solves
inverse kinematics internally, so no IK computation is needed here.
Unlike BB.Ufactory.Actuator.Joint, this actuator bypasses the ETS batch
loop — frames are forwarded immediately to the controller via
BB.Process.call/3 and dispatched to the hardware on the same call.
Command Interface
The actuator declares BB.Ufactory.Message.Command.CartesianMove via
BB.Actuator.command_payloads/1, so pose commands travel through BB's
gated command pipeline (armed check, refusals reaching the caller):
alias BB.Ufactory.Message.Command.CartesianMove
msg = BB.Message.new!(CartesianMove, :tcp,
x: 300.0, y: 0.0, z: 400.0, roll: 3.14159, pitch: 0.0, yaw: 0.0)
# Synchronous — learn whether the arm accepted the command:
{:ok, :accepted} = BB.call(MyRobot, :tcp, {:command, msg})
# Fire-and-forget:
BB.cast(MyRobot, :tcp, {:command, msg})x,y,z— position in millimetresroll,pitch,yaw— orientation in radians
speed and acceleration default to the values configured in
options_schema and can be overridden per-command in the payload.
Legacy cast interface (deprecated)
The pre-0.2 raw cast is still accepted for backwards compatibility: it
logs a deprecation warning on every use and is dropped when the robot
is not armed — prefer CartesianMove:
BB.Process.cast(robot, :cartesian, {:move_cartesian, {x, y, z, roll, pitch, yaw}})
BB.Process.cast(robot, :cartesian, {:move_cartesian, pose, speed, accel})