BB robot definition for the UFactory xArm6.
6-DOF serial manipulator with revolute joints J1–J6. All joints rotate about
their local Z axis. Joint limits and effort values are sourced from the
xArm Developer Manual V1.10.0 and confirmed against the URDF in tmp/urdf/xarm6/.
Joint Limits
| Joint | Lower (rad) | Upper (rad) | Effort (N·m) | Max Velocity (rad/s) |
|---|---|---|---|---|
| J1 | -2π | +2π | 50 | π |
| J2 | -2.059 | +2.094 | 50 | π |
| J3 | -3.927 | +0.192 | 32 | π |
| J4 | -2π | +2π | 32 | π |
| J5 | -1.693 | +π | 32 | π |
| J6 | -2π | +2π | 20 | π |
Usage
defmodule MyRobot do
use BB.Ufactory.Robots.XArm6
controllers do
controller :xarm, {BB.Ufactory.Controller,
host: "192.168.1.111",
model: :xarm6,
loop_hz: 100
}
end
endOr copy the topology into an existing robot module that also includes accessories (gripper, F/T sensor, linear track).
Summary
Functions
Returns a child specification for starting this robot under a supervisor.
Returns the optimised robot representation.
Starts the robot's supervision tree.
Functions
@spec child_spec(Keyword.t()) :: Supervisor.child_spec()
Returns a child specification for starting this robot under a supervisor.
@spec robot() :: BB.Robot.t()
Returns the optimised robot representation.
This struct is built at compile-time from the DSL definition and contains:
- All physical values converted to SI base units (floats)
- Flat maps for O(1) lookup of links, joints, sensors, and actuators
- Pre-computed topology metadata for efficient traversal
Examples
robot = Elixir.BB.Ufactory.Robots.XArm6.robot()
link = BB.Robot.get_link(robot, :base_link)
joint = BB.Robot.get_joint(robot, :shoulder)
@spec start_link(Keyword.t()) :: Supervisor.on_start()
Starts the robot's supervision tree.
Options
All options are passed through to sensor and actuator child processes.