Skip to content

Gripper

The gears are inside the body (drawn see-through).Clamp width20–45 mm (label)Load150 g maximumSize110 × 90 × 60 mm

From the gripper label:

Item Value
Name 自适应夹爪 myCobot_gripper_ag (adaptive gripper)
Type End effector
Clamp width 20–45 mm (the range of object sizes)
Maximum load 150 g
Size 110 × 90 × 60 mm
  • One servo in the body turns a gear. The gear meshes with a second gear, which turns the other way.
  • On each side, the geared link and a parallel link carry the finger (a parallelogram). The finger moves on an arc and stays parallel to the other finger.
  • The finger pads are black rubber. Closed without an object, the pads stay a few millimetres apart; they do not touch. Open, they are about 43 mm apart.
  • The drawing above uses the outlines and pivots of Elephant’s 3D model (see Model). Its gripper matches the photos of this gripper.
Flange faceLEGO-style holes4 threaded brass insertsATOM socket on topgroup 6 (drawing below)Side port3 pins, for thegripper cableflangeLEDmatrixJ5 belowThe hole pattern is schematic. Count the holes on the robot before you design a part for the flange.
  • Mount: two black LEGO Technic-style pins on the back face of the body go into the holes of the flange. The side faces of the body also have LEGO-style holes.
  • Cable: one cable with a 3-pin white plug. It connects to the 3-pin side port at the end of the arm. Without a tool J6 turns without an end stop; with the gripper on, the cable limits J6.

The gripper is mounted at 45° to the flange, so that J6 has the largest range on both sides of zero. Look at the flange face (the LEGO holes) with J6 at 0°:

Part Position on the flange face
Fingers One bottom left, one top right (on a diagonal)
Gripper servo Top left
Cable Leaves the body at the top right and goes to the 3-pin side port at J5

With only J6 limp, the cable stops J6 at −237.1° and +139.9° (scripts/measure_joint_range.jl 6). The J6 limits are −225° to +135° (one full turn; J6 is multi-turn from firmware 4.5, see Robot).

The robot description has the gripper since 2026-10-06. Set the xacro argument gripper:=true. The generator writes the arm with the gripper to mycobot_280_arduino_gripper.urdf.

The model comes from Elephant’s model of this gripper for the 280 M5 arm: mycobot_ros/mycobot_description/urdf/mycobot_280_m5/mycobot_280m5_with_gripper_parallel.urdf. urdf/adaptive_gripper/ in the same package has the same meshes and finger joints, but no mount. The outlines of these meshes match the photos of this gripper. Our model:

Item Our model Elephant’s model
Meshes gripper_base.dae, gripper_left1–3.dae, gripper_right1–3.dae (millimetres, scale 0.001) The same
Mount Fixed joint joint6output_to_gripper_base, 34 mm along the J6 axis and 1.2 mm to the side (from the camera), roll 90°, then the mount angle (below) 34 mm, roll 1.579 rad
Actuated joint gripper_controller, −0.70 rad (closed) to +0.15 rad (open) −0.78 or −0.7 to +0.15 rad
Other finger joints Five joints that follow gripper_controller (mimic, multiplier ±1). Their limits are the range that the mimic gives. Limits narrower than the mimic range (urdf-loader then stops the fingers)
Finger joints on the body 7.5 mm nearer the flange than in Elephant’s model —
Mass and inertia None. The masses are not known. Placeholders (0.1 kg on every link)
Collision The visual meshes Small cylinders
  • 7.5 mm shift: in Elephant’s model the finger mechanism is 7.5 mm too far from the body. With the shift, the gears are in the slot of the body and the parallel links are on their pivots, as in the meshes’ own coordinates. The drawing at the top of this page uses the same positions.
  • Pad gap in the model: 6.0 mm closed, 43.4 mm open (the inner faces of the finger tips). This agrees with the gripper (a few millimetres closed, about 43 mm open).
  • Body: the back face of the body touches the flange face (1.7 mm along the J6 axis from the flange frame).
  • Body position (measured with the camera, 2026-10-09): the 9 holes in the palm, in 10 snapshots, put the body 2.4 mm nearer J6 than Elephant’s model and 1.2 mm to the side (flange y). The body sits on the flange face, so the model moves the flange 2.4 mm nearer J6 (see Robot model) and the body 1.2 mm to the side. Error of the holes: 5.9 px before, 2.1 px after. See Kinematic calibration.
  • Fingertips (measured 2026-10-08 and 2026-10-09): from the body’s back face, 115 mm closed and 95 mm open. The model gives 113.0 mm and 95.2 mm. The 2 mm difference when closed is not resolved; the camera agrees with the model’s closed finger angle.
  • Node transforms: each mesh file places its parts with COLLADA <matrix> nodes. Read the meshes with a loader that applies them (urdf-loader, pycollada scene.objects). The raw vertex arrays alone put the closed fingertips at about 61 mm.

The xacro property gripper_mount_deg turns the gripper about the J6 axis. It is 0 for this arm (2026-10-06). It is the angle from Elephant’s mount, positive counterclockwise when you look at the flange face. Change it in steps of 45° (the flange holes).

How the value was found:

  1. At the zero pose the arm is upright and the flange face points forward (+x). To look at the flange face, stand in front of the robot. Up is +z. Your left is −y (the robot’s right).
  2. The user’s report and the model at the zero pose agree with mount angle 0. Elephant’s mount on our flange (which is turned 45°) already puts the fingers on a diagonal.
Part Report (look at the flange face, J6 at 0°) Model, gripper_mount_deg = 0
Fingers Bottom left and top right gripper_right1 at −y −z (bottom left), gripper_left1 at +y +z (top right)
Gripper servo Top left The servo box (+z side of gripper_base) at −y +z
Cable Leaves the body at the top right Not in the meshes, not checked

Other values, from the front of the flange:

gripper_mount_deg Fingers Servo
0 (this arm) Bottom left, top right Top left
45 Bottom, top Left
90 Bottom right, top left Bottom left
180 Bottom left, top right (the two fingers change places) Bottom right

The Control page’s 3D view (viewer3d.ts) sets gripper_controller linearly from J7 (the gripper servo angle): J7’s limits (the end stops) go to the joint’s URDF limits.

J7 (servo) gripper_controller Pad gap (model)
−51.5° (closed end stop, step 1462) −0.70 rad 6.0 mm
0° (open end stop, step 2048) +0.15 rad 43.4 mm
Use How
Julia load_mechanism(urdf=...) with mycobot_280_arduino_gripper.urdf. RigidBodyDynamics.jl ignores mimic: the six finger joints are free joints, so the mechanism has 12 positions instead of 6. The default is the arm without the gripper.
Control page ArmView.setGripper(present) swaps the 3D view (solid arm and goal ghost) to the URDF with the gripper. setPose(q) and setGoal(q) take J7 as the 7th angle. urdf-loader applies the mimic tags.

With our controller firmware (5.0+): joint J7

Section titled “With our controller firmware (5.0+): joint J7”

The gripper is a Feetech bus servo, ID 7, model 0x070A (registers 3–4), on the same bus as J1–J6 (checked 2026-10-06). It is of the same family as the joint servos (J4 is 0x0709), with the same register map. Firmware 5.0 uses it as a seventh joint, J7 (see J7 in the WebSocket API):

  • The ATOM looks for it at power-up and then once a second while the robot is idle, so you can connect it later. When it finds it, it writes the gains and the torque (below) and holds the gripper where it is.
  • J7 is in every read and write of the joints, in the same units as J1–J6 (degrees, angle = sign × (step − 2048) × 360 / 4096 with sign +1, so the angle grows as the gripper opens). MOVE_TO, JOG and TRACK move it with the other joints.
  • Grasps: J7 has no following-error check (on an object it stops short of its goal), and a hold keeps its goal. So the gripper keeps squeezing through HOLD, STOP and the end of a move.
  • Plans (PLAY) can have J7 (7 columns). With a 6-joint plan or PLAY_SIGNAL, it holds its goal.

Firmware 4.6 and 4.7 had a separate GRIPPER command with the opening in 0.1 %; 5.0 removes it.

Item Value (servos.yaml, key gripper)
End stops = J7 limits (slow scan at 15 % torque, 2026-10-06) 1462 closed (−51.5°), 2048 open (0°); 51.5° (the model joint range is 48.7°)
Goals The whole range, end stop to end stop: −51.5° to 0° (steps 1462–2048). J7 has no margin (J1–J6 stay 2° inside their limits): grasps drive the jaws against the object or the stops.
Speed and acceleration 90 °/s and 2000 °/s², as J4–J6: a full stroke in about 0.7 s
Gains (registers 21–23) 150 / 150 / 0, the values found on it, written when found
Torque (registers 16, 28, 48) 1000 (100 %) from firmware 4.7, set by the ATOM when it finds the gripper (torque). Elephant’s values: 140 / 300 / 300 (30 %). Register 28 (protection current) caps register 48.
Thermal derating Above 70 °C the torque limit drops to 500; below 60 °C it is 1000 again (firmware 4.7). Measured at 1000: 45–53 °C in 1–2 min holds. The servo’s own limit (register 13) is 80 °C.

Checked with the camera on 2026-10-06: at step 2033 the jaws are wide open, at 1477 the pads almost touch. The stock calibration point (2048) is the open end. Firmware 4.6 and 4.7 used 1477–2033 (15 steps inside the stops); 5.0 uses the joint rule (2°, 22.8 steps).

Servo registers as found (2026-10-06): firmware 3.40, angle limits 0–4095, P/D/I 150/150/0, offset −889 (the stock calibration), torque off, goal speed 0.

On the Control page a J7 strip appears next to J6 when the ATOM finds the gripper.

pymycobot sends these stock-ATOM commands (FE FE frames):

Command Code Data
GET_GRIPPER_VALUE 0x65 Reply: opening, 0–100
SET_GRIPPER_STATE 0x66 flag (0 open, 1 close, 10 release), speed 1–100
SET_GRIPPER_VALUE 0x67 opening 0–100, speed 1–100
SET_GRIPPER_CALIBRATION 0x68 The present position becomes 2048
IS_GRIPPER_MOVING 0x69 Reply: 0 or 1

The gripper is a bus servo with ID 7 (checked 2026-10-06). The evidence before:

  • The stock firmware sends a PING to ID 7 before each angle read. See Stock ATOM protocol.
  • Calibration sets the position to 2048, the centre of a 12-bit Feetech position.

The ATOM controller (above) and the laptop can control it with the same packets as J1–J6.