Gripper
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 |
Mechanism
Section titled “Mechanism”- 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.
Mount and cable
Section titled “Mount and cable”- 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.
On this arm (2026-10-06)
Section titled “On this arm (2026-10-06)”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).
Model (URDF)
Section titled “Model (URDF)”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, pycolladascene.objects). The raw vertex arrays alone put the closed fingertips at about 61 mm.
Mount angle
Section titled “Mount angle”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:
- 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).
- 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 |
J7 in the 3D view
Section titled “J7 in the 3D view”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 |
In the software
Section titled “In the software”| 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. |
Control
Section titled “Control”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 / 4096with 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.
With the stock ATOM firmware
Section titled “With the stock ATOM firmware”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 |
Direct, on the servo bus
Section titled “Direct, on the servo bus”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.