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, 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). The 34 mm offset is not measured on this arm.
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 |
Opening in the 3D view
Section titled “Opening in the 3D view”The Control page’s 3D view (viewer3d.ts) shows the opening as a fraction. It sets
gripper_controller linearly between its limits:
| Opening | gripper_controller |
Pad gap (model) |
|---|---|---|
| 0 (closed) | −0.70 rad | 6.0 mm |
| 1 (open) | +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. setGripperOpening(fraction) sets the measured opening, setGoalGripperOpening(fraction or null) the opening of the ghost. urdf-loader applies the mimic tags. |
Control
Section titled “Control”With our controller firmware (4.6+)
Section titled “With our controller firmware (4.6+)”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). Our firmware:
- looks for it at power-up and then once a second, so it can be connected later; it reads its position 10 times a second while it is there;
- reports it in the STREAM (present, opening, load) and takes the GRIPPER command
(
0x11): opening 0 (closed) to 1000 (open) in 0.1 %, or0xFFFFto turn its torque off. See WebSocket API; - works also during MOVE_TO, JOG and TRACK (Live mode), but not during PLAY or PLAY_SIGNAL.
The opening maps linearly to servo steps (servos.yaml, key gripper):
| Item | Value |
|---|---|
| End stops (slow scan at 15 % torque, 2026-10-06) | 1462 closed, 2048 open (51.5°; the model joint range is 48.7°) |
| Opening 0 (closed) | 1477 (15 steps inside the stop at 1462) |
| Opening 1000 (open) | 2033 (15 steps inside the stop at 2048) |
| Goal speed | 1000 steps/s: the full stroke in about 0.6 s |
| Torque (registers 16, 28, 48) | 1000 (100 %) from firmware 4.7, set by the ATOM when it finds the gripper (servos.yaml, key 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 2033 the jaws are wide open, at 1477 the pads almost touch. The stock calibration point (2048) is the open end.
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.