BB.Ufactory.Message.Command.CartesianMove (bb_ufactory v0.2.0)

Copy Markdown View Source

Command payload for a Cartesian linear move (MOVE_LINE, register 0x15).

BB's built-in BB.Message.Actuator.Command.Position holds a single scalar, which cannot express a 6-DOF end-effector pose. This payload carries the full pose and is declared by BB.Ufactory.Actuator.Cartesian via BB.Actuator.command_payloads/1, so it travels through the same gated command pipeline as any built-in command — the robot must be armed, and refusals reach a synchronous caller.

Fields

  • x, y, z — target TCP position in millimetres (arm base frame)
  • roll, pitch, yaw — target orientation in radians (RPY)
  • speed — optional TCP linear speed in mm/s; the actuator's configured default applies when nil
  • acceleration — optional TCP linear acceleration in mm/s²; the actuator's configured default applies when nil
  • command_id — optional correlation reference for feedback tracking

Examples

alias BB.Message
alias BB.Ufactory.Message.Command.CartesianMove

{:ok, msg} = Message.new(CartesianMove, :tcp,
  x: 300.0, y: 0.0, z: 400.0,
  roll: 3.14159, pitch: 0.0, yaw: 0.0
)

# Deliver synchronously and learn whether it was accepted:
BB.call(MyRobot, :tcp, {:command, msg})

Summary

Types

t()

@type t() :: %BB.Ufactory.Message.Command.CartesianMove{
  acceleration: number() | nil,
  command_id: reference() | nil,
  pitch: number(),
  roll: number(),
  speed: number() | nil,
  x: number(),
  y: number(),
  yaw: number(),
  z: number()
}

Functions

new(frame_id, attrs)

@spec new(
  atom(),
  keyword()
) :: {:ok, BB.Message.t()} | {:error, term()}