Articles & Tutorials

Interbotix WidowX 250 6DoF desktop robot

Interbotix WidowX 250

I’ve just taken delivery of a new desktop robot arm, a significant upgrade from my old PhantomX Pincher.  Here are some initial notes and impressions.

While there is a lot of software available, including ROS support, I’m being stubborn and am going to do this from first principles as part of the Robotics Toolbox for Python project.


Annotated schematic of Interbotix WidowX 250 6DoF arm
Annotated schematic of Interbotix WidowX 250 6DoF arm


The WidowX 250 comes in a 6DoF version and the kinematic details are given by the schematic above. Note that STL mesh files are also available.  Assuming that this is the zero joint angle configuration (the servos are all at mid-range or 180deg), the kinematics in ETS form are:

Rz(q1) Tz(L1) Ry(q2) Tz(L2) Tx(L3) Ry(q3) Tx(L4) Rx(q4) Tx(L5) Ry(q5) Tx(L6) Rx(q6) Tx(L7)

with the base at the intersection of joint 1 and the tabletop, and the end-effector being the midpoint of the base of the fingers.

The elbow offset means that there is no Denavit-Hartenberg representation, but there is if we replace the dog-leg link with the diagonal link shown in dark blue where \(\beta=11.537\) degrees. The ETS representation becomes:

Rz(q1) Tz(L1) Ry(q2) Ry(beta) Tz(L8) Ry(-beta) Ry(q3) Tx(L4) Rx(q4) Tx(L5) Ry(q5) Tx(L6) Rx(q6) Tx(L7)

which can be factored using DHFactor from the Robotics Toolbox for MATLAB as:

DH(q1, L1, 0, -90) DH(q2+90+beta, 0, -L8, 0) DH(q3-beta, 0, 0, 90) DH(q4, L4+L5, 0, -90) DH(q5+180, 0, 0, 90) DH(q6+90, L6+L7, 0, -90) Rz(-90)

where \(\mbox{DH}(\theta_i, d_i, a_i, \alpha_i)\).


There are a total of 9 servos, 1 for the gripper, and 8 for the arm. With respect to the schematic, servos 2 and 4 are on the far side of the robot, while servos 3 and 5 are on the front side.

Joints 2 and 3 each have two servos to provide the required torque:

  • For joint 2, servo 3 has the same rotation direction as q2, while servo 2 is the complement, ie. 180-q2.
  • For joint 3, servo 5 has the same rotation direction as q3, while servo 4 is the complement, ie. 180-q5.

Servo 7 rotation direction is the same as q5.

To test the arm out I used the Dynamixel Wizard 2.0 which is a very impressive app.  I installed the Mac version from AppStore (but Linux and Windows versions are also available) and it provides a convenient and intuitive way to do some low-level testing.  The servos are all X-series and use Protocol 2.0 which should get around some of the overhead issues that contribute to latency with Protocol 1.0.  The servo motors have ids from 1 to 9.


View all posts