Important Safety Precautions
1.1 Safety Instructions
Understand the product: Before using the product, please read the product manual carefully to understand the product's functions, operation methods, and safety precautions.
Follow the usage requirements: ensure that the machine is used in a suitable environment, avoiding excessively high or low temperatures, humid environments, etc.
Power supply safety: Make sure all cables, plugs, and sockets are intact before operation. Disconnect the power supply immediately when encountering abnormal conditions (such as short circuit, overheating, etc.).
Regular inspection: Regular maintenance and inspection are performed to ensure that the machine components such as motors and power supplies operate normally to avoid failures caused by aging or damage.
Prevent misuse: Ensure that the machine is not used in any inappropriate, dangerous or legally prohibited scenarios.
1.2 Disclaimer
We are committed to continuously improving the product reliability and performance, and therefore reserve the right to make product improvements or upgrade without further notice. We strive to ensure the accuracy and reliability of this manual but shall not be held liable for any errors or omissions it may contain. Defects or malfunctions caused by the following circumstances are not covered within the scope of warranty:
Failure to install, wire or connect other control devices as required by the user manual;
Unauthorized disassembly/assembly of the OmniPicker;
Use of OmniPicker beyond the specifications or standards stated in the user manual;
Damage resulting from improper transportation;
Damage caused by accidents, impacts, or collisions;
Damage caused by natural disasters, including but not limited to fire, earthquakes, tsunami, lightning strikes, strong winds and floods.
We shall not be held liable for any loss, damage, injury or expense caused by customers violating the disclaimers in this section. Customers are kindly requested to carefully read and agree to this disclaimer before purchasing and using the product.
Introduction
2.1 Product Overview
OmniPicker is an adaptive, general-purpose gripper. It combines the advantages of different gripper designs and can grasp objects of various shapes with only one active degree of freedom. The product is very lightweight and easy to use, with a weight of only 430g.
OmniPicker is highly versatile and suitable for a wide range of grasping tasks. It can be integrated with various robot platforms such as humanoid robots, industrial arms and collaborative robots. OmniPicker provides multiple software communication protocol interfaces to help users complete integration quickly. In addition, the gripper features active force control capabilities, enabling tasks such as data collection and light-duty tasks.

2.2 Features
Cost-effective hardware design
Adaptive mode & gripping force adjustable
Supports self-locking gripping force
Feedforward force control
Integrated actuator
2.3 Technical Specifications
Parameter | Typical value |
Weight | 0.43kg |
Max gripping force | 30N |
Payload | 1.5kg |
Max gripper stroke | 120mm |
Min opening/closing time (Typ) | 0.7s |
Positioning repeatability | ±0.05mm |
Communication Protocols | CAN、CAN-FD、RS485、Serial、Modbus RTU |
Operating Voltage | 24V DC |
Installation Instructions
3.1 Packing List
OmniPicker *1
CAN-FD communication cable *1
3.2 Instructions
The following materials are prepared with AgiBot X1 Universal Humanoid Package as shown in Chart 1, please prepare the necessary installation tools, as shown in Chart 2.
S/N | Material name | Quantity |
1 | OmniPicker | 1 |
2 | Ultra-short hexagon socket screw M3x6 | 3 |
3 | End cap | 1 |
4 | Adapter flange | 1 |
5 | Hexagon socket head cap screw M4x8 | 4 |
6 | Connecting flange | 1 |
S/N | Tool name | Model/specification |
1 | Hexagon key wrench | H2 |
2 | Hexagon key wrench | H2.5 |
3 | Hexagon key wrench | H3 |
Complete the installation in accordance with the following steps
STEP1: As shown in Figure 1, remove the four countersunk head hexagon socket head cap screw M2.5x8 at the bottom of OmniPicker with a H2 hexagon key wrench to get the end cap;

STEP2: As shown in Figure 2, screw three ultra-short hexagon socket head cap screws M3x6 into the end cap with a H2.5 hexagon key wrench and fix on the adapter flange;

STEP3: As shown in Figure 3, use a H2 hexagon key wrench to replace the four countersunk head hexagon socket head cap screws M2.5x8 removed in Step 1 on the gripper;

STEP4: As shown in Figure 4, use a H3 hexagon key wrench to fix the gripper with four cylindrical hexagon socket head cap screws M4x8 on the connecting flange;

STEP5: The left and right grippers are installed in the same way, and all the wide fingers of the gripper are close to the outside of the body after installation;
STEP6: If the obtained gripper has great resistance when the screws are removed in STEP1, it may be because threadlocker was applied when the screws were fastened. In this case, it is recommended to use a hot air gun to heat the screws before removal.
STEP7: Insert the cable.
NOTE: Pay attention to the installation direction when the end cap and the adapter flange are installed
3.3 Use of other robots
If users connects OmniPicker to other robotic arms, it is allowed to refer to the following installation interface drawings to design the adapter.


Product Dimensions
4.1 Dimensional Drawing
The following shows the external dimensions of OmniPicker in the opening and closing states.
|
|
|
|
Electrical Interface
5.1 6 PIN Interface
The external electrical interface of AGIBOT OmniPicker uses 6PIN socket with lock at a distance of 1.25mm.
If the gripper version number is 20, that is, the red box in the control panel is a resistance welding plate, and its interface pins are defined as shown in the following table:
S/N | Definition of PIN | Quantity |
1 | VIN | Pins 1 and 2 are used as power input, and the voltage does not exceed 24V DC. |
2 | VIN | |
3 | CAN_H | UART2_TX or RS485_B or FDCAN2_H. |
4 | CAN_L | UART2_RX or RS485_A or FDCAN2_L. |
5 | GND | Pins 5 and 6 are used as GND for power supply. |
6 | GND |
If the gripper version number is 30, that is, the red box in the control panel is a dip switch, and its interface pins are defined as shown in the following table:
S/N | Definition of PIN | Quantity |
1 | VIN | Pins 1 and 2 are used as power input, and the voltage does not exceed 24V DC. |
2 | VIN | |
3 | L | UART2_RX or RS485_B or FDCAN2_L. |
4 | H | UART2_TX or RS485_A or FDCAN2_H. |
5 | GND | Pins 5 and 6 are used as GND for power supply. |
6 | GND |
Two kinds of grippers can be distinguished by the gripper package or the 14-digit SN code at the bottom of the fuselage, as follows:
The 6th and 7th digits of SN are gripper version numbers, including 20 and 30.
X1 0 06 20 XXXXXXX X1 0 06 30 XXXXXXX
The difference between the two grippers is PCBA. Refer to 5.2 Communication modes for details
5.2 Communication Modes
When the end cap of the machine is opened, the state of the gripper PCBA can be distinguished according to the markings shown in the red box in the figure below. Select different operating modes based on this information.
If the gripper version number is 20, that is, the red box in the control panel is a resistance welding plate, corresponding communication mode is selected by means of jumper resistance. The jumper resistance is welded on CAN/CAN-FD by default. If it is necessary to switch to other communication modes, it is required to correspond to PCBA screen printing, remove the jumper resistor of the original CAN/CANFD and weld it to the corresponding communication interface resistance welding plate. RS485 is welded to two resistors above the red frame, while UART is welded to two resistors below the red frame.
|
|
If the gripper version number is 30, that is, the red box in the control panel is dip switch, operate as below.
The default is CAN/CAN-FD, pins 3 and 4 are in the ON state, and the other pins are in the OFF state.
If it is necessary to switch to RS485, pull pins 1 and 2 to ON, and recover other pins to OFF.
If it is necessary to switch to UART, pull pins 5 6nd 6 to ON, and recover other pins to OFF.
|
|
A 120 Ω termination resistor is soldered on the back side of the PCBA. Whether it should be kept depends on the application scenario. The resistor is located at R47 inside the red box in the figure below.
When using CAN / CAN-FD / RS485 communication, this resistor must be kept. It is soldered by default at the factory.
When using UART‑TTL communication, this resistor must be manually removed.

Communication Interface and Protocols
OmniPicker is equipped with multiple communication interfaces to adapt to different working environments.
Configuration steps are as follows:
Select the corresponding communication interface in accordance with the instructions in 5. interconnection of electrical interface. The default is CAN/CAN-FD
Configure gripper parameters through USB connection to the Host
Connect the gripper into the corresponding hardware systems
6.1 LED indicator lights
LED | Defination |
|---|---|
Green: blinking | Disable |
Green: steady on | Enabled (enabled automatically by default at power-on) |
Red: steady on | Error |
Blue: steady on | Motor Calibration in progress (factory-calibrated by default) |
Multi-color: blinking | Firmware upgrading |
6.2 Host Software
The host can modify parameters via the commands. It is recommended to fully understand the configuration parameters before first use.
How to use
Prepare a Windows computer and download the host software REF-CLI v1.0.3.exe .
First, make sure that there are no obstacles between the stroke of the gripper, then power on the gripper. The gripper will automatically close to zero position. In case of failure, it is required to stop and check whether the gripper moves smoothly.
Connect the gripper to the computer with a USB-C cable, and open the host software. Once the host identifies the device successfully, the following display will appear:

At this point, the device with SN 000032843334 has the index name ref0 in the host software.
Note: If multiple grippers are connected, their index names in the host will be arranged in sequence: the first is ref0, the second is ref1, and so on. Be sure to modify commands according to the corresponding device number. After closing and restarting the host software, indexing will start again from ref0.
In the host software, type ref0 directly and press Enter to show the basic information of the current gripper. As shown in the figure, the current gripper’s firmware version is 1.3.4, and the CAN bus ID is 8.

Modify CAN-ID
ref0.can_node_id represents the node ID of CAN bus. It is allowed to view its value directly, or use = to assign values. Execute the following command.
ref0.can_node_id=8 // CAN ID sets to 8

All parameter changes need to be saved by calling save_config() method, and this operation needs to be carried out in the Disabled state.
ref0.motor.request_state(0) // First disable the gripper. 0 - disabled, 1- enabled ref0.save_config() // Save all the parameters

Note: All parameter changes take effect only after saving and power-cycling the device.
Control the Gripper
Power on the gripper again. (Default self-enabled upon power-on)
Wait for the gripper to close automatically
Connect the host and call
set_pos(x)to set its position, wherexis the opening and closing percentage, with the range of0.0-1.0,0means closed and1means fully open.
ref0.motor.ctrl.set_pos(0.5) // Gripper open 50%
6.3 CAN/CAN-FD Communication Protocols
When the gripper communicates with CAN-FD, the baud rate is 1M in arbitration domain (80% sampling point) + 5M in data domain (75% sampling point), and it is compatible with CAN protocol with a baud rate of 1M (80% sampling point).
Note: The firmware version of CAN protocol is not less than 3.3.0.
Downstream Protocol
CAN ID | DLC | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
|---|---|---|---|---|---|---|---|---|---|
can_node_id | 8 | Reserved | Pos Cmd | Vel Cmd | Force Cmd | Acc Cmd | Dec Cmd | Reserved | Reserved |
ID: downstream control ID of the gripper, corresponding toref0.can_node_idReserved: reserve, write0Pos Cmd: target position, range0 - FF,0is close,FFis fully openVel Cmd: target velocity, range0 - FF,FFis max velocityForce Cmd: target torque,range0 - FF,FFis max torqueAcc Cmd: target acceleration,range0 - FF,FFis max accelerationDec Cmd: target deceleration,range0 - FF,FFis max deceleration
E.g. If the gripper is controlled to run to 50% of the stroke, all other parameters can be given the maximum value:
Send message 00 7F FF FF FF FF 00 00
Upstream Protocol
After power-on and successful enabling, every time the gripper receives a control command, the state data of the a frame will be reported immediately. The state frame is defined as follows.
CAN ID | DLC | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
|---|---|---|---|---|---|---|---|---|---|
can_node_id | 8 | Fault Code | State | Pos | Vel | Force | Reserved | Reserved | Reserved |
ID:upsteam message ID of the gripper, corresponding toref0.can_node_idFault Code: error code, definitions are as following:
Code | Definition |
|---|---|
00 | No fault |
01 | Over heated alarm |
02 | Speed limit exceeded alarm |
03 | Initialization fault alarm |
04 | Limit-exceeding alarm |
State: Current state, definitions are as following:
Code | Definition |
|---|---|
00 | Gripper reached target position |
01 | Gripper moving |
02 | Gripper stalled |
03 | Object dropped |
Pos: current position, range asPos CmdVel: current velocity, range asVel CmdForce:current torque, range asForce CmdReserved:reserve. Bytes D5–D7 will directly copy the data from the sent packet. They can be used for your own checksum/verification, or simply ignored.
6.4 Serial TTL/485 Protocols
Note: The serial bus also supports serial chaining, and the node ID reuses
can_node_id. The firmware version must be 3.3.2 or higher.
When the gripper communicates with serial port TTL or 485, the baud rate needs to be changed to 115200@8N1 (8bit data bit, 0 check bit, 1 stop bit).
In version 3.3.5 and later, the baud rate is given by the uart_baudrate parameter in the host software. The data length is 8 bits, there is no parity bit, and the number of stop bits is given by the uart_stopbits parameter in the host software.
TTL/485 Switch
Connect Omnipicker to the host via a USB-C cable, open the host , input ref0 and enter, to check the value of rs485_mode .
If using TTL, please set the value of
rs485_modeto0and save. Note: remove the resistor on the back of the PCB.
ref0.rs485_mode = 0 // turn off 485 mode,enable TTL ref0.motor.request_state(0) // Disable ref0.save_config() // Save configuration
If using RS495 , please set the value of
rs485_modeto1and save.
ref0.rs485_mode = 1 // turn on 485 mode,turn off TTL ref0.motor.request_state(0) // Disable ref0.save_config() // Save configuration
Take effect after saving and restarting.
TTL/485 Configuration
Firmware version 3.3.5 and above supports configuring TTL/RS‑485 communication parameters as well as the communication protocol.
Baud rate
ref0.uart_baudrate = 460800 // baud rate 460800 ref0.motor.request_state(0) // Disable ref0.save_config() // Save configuration
Take effect after saving and restarting.
Stopbits
Code | Definition |
0 | 1 stop bit |
1 | 1.5 stop bit |
2 | 2 stop bit |
ref0.uart_stopbits = 0 // Set as 1 stop bit(can be replaced with the required number) ref0.motor.request_state(0) // Disable ref0.save_config() // Save configuration
Take effect after saving and restarting.
Communication protocol configuration
The communication protocol is determined by the modbus_mode parameter: if it is False, a custom protocol is used; if it is True, Modbus RTU is used.
ref0.modbus_mode = True // Set to Modbus RTU ref0.motor.request_state(0) // Disable ref0.save_config() // Save configuration
Take effect after saving and restarting.
Custom Protocol
Firmware versions earlier than 3.3.5 use the custom protocol.
For versions 3.3.5 and later, the custom protocol is used when the host parameter modbus_mode is set to false.
1. Downstream Protocol
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | D11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
Frame Head | ID | Reserved | Pos Cmd | Force Cmd | Vel Cmd | Acc Cmd | Dec Cmd | Reserved | Reserved | CheckSum | |
Frame Head:frame head,0x4141,2 bytesID: ascan_node_idD3 - D10: as D0-D7, CAN bus downstream protocolCheckSum: The data and checksum for D2–D10 are calculated as shown in the Python code below.
def checksum(buf) -> int: ret = 0 for i in buf: ret += i return (~ret) & 0xff
E.g. If the gripper is controlled to run to 50% of the stroke, if ID is set to 1, all other parameters can be given the maximum value:
Send message 41 41 01 00 7F FF FF FF FF 00 00 83
2. Upstream Protocol
After power-on and successful enabling, every time the gripper receives a control command, the state data of the a frame will be reported immediately. The state frame is defined as follows.
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | D11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
Frame Head | ID | Fault Code | State | Pos | Vel | Force | Reserved | Reserved | Reserved | CheckSum | |
Frame Head:frame head,0x4141,2 bytesID: ascan_node_idD3 - D10:as D0-D7, CAN bus downstream protocolCheckSum:the calculation method is same as downstream protocol, range is D2-D10
Modbus RTU
For versions 3.3.5 and later, the Modbus RTU protocol is used when the host parameter modbus_mode is set to True.
The gripper’s Modbus slave address is same as can_node_id.
You can control the gripper and obtain its current status feedback by reading and writing Modbus registers.
The Modbus register map is as follows:
Register Address (decimal) | Definition | Details |
0 | Firmware verison | |
10 | Target position | Only the low byte of the register is used. Value range:
|
11 | Target Velocity | Only the low byte of the register is used. Value range:
|
12 | Target Torque | Only the low byte of the register is used. Value range:
|
13 | Target Acceleration | Only the low byte of the register is used. Value range:
|
14 | Target Deceleration | Only the low byte of the register is used. Value range:
|
15 | Motion Trigger flag | Writing a non-zero value triggers the motor to move according to the target position and other parameters in registers 10-14. The flag is automatically cleared when the motor starts executing the motion. |
20 | Current error code | Refer to error code in CAN-FD protocol |
21 | Current status | Refer to status code in CAN-FD protocol |
22 | Current position | Refer to Target position |
23 | Current velocity | Refer to Target velocity |
24 | Current Torque | Refer to Target torque |
1. Motion Control
The user can control the gripper by writing control parameters to registers 10–15 using the Modbus RTU 0x10 (Write Multiple Registers) command.
For example, to move the gripper to 50% of its stroke, assuming the slave address is 1 and all other parameters are set to their maximum values,
send message: 01 10 00 0A 00 06 0C 00 7F 00 FF 00 FF 00 FF 00 FF 00 01 B9 BA
Register 10 (target position):
00 7F→ 0x7F (≈ 50% stroke)Registers 11–14 (speed, torque, etc.):
00 FF 00 FF 00 FF 00 FF→ all set to 0xFF (maximum)Register 15 (motion trigger flag):
00 01→ non‑zero, triggers gripper motion
2. Read Status
The user can read the gripper status by sending a Modbus RTU 0x03 (Read Holding Registers) command to read registers 20–24.
Assuming the slave address is 1, the request frame is:
01 03 00 14 00 05 C5 CD
Function code:
03(Read Holding Registers)Starting register address:
00 14→ 0x0014 = decimal 20Number of registers:
00 05→ read 5 registers (20–24)
6.5 Firmware Upgrade
How to upgrade
1. Power on the gripper and connect it to PC, and turn on the host to ensure that the equipment is successfully connected and initialized.

Control the gripper to 50% of the stroke to prepare for calibration. After the command is executed, observe the gripper and confirm that it has been opened to 50%.

Note: This step is very important. Please follow the instructions strictly
Input the upgrade command in the host and wait for the progress to end, where
path_to_firmware_fileis the absolute path of the firmware in the system. Here, version 3.3.0 is taken as an example.
ota(ref0, r"path_to_firmware_file")

Note: Please be careful not to operate or move the gripper during upgrade, so as not to cause abnormal USB communication.
After the upgrade is completed, the prompt "Restore Link REF XXX" will reappear in the terminal. Check the LED indicator, wait for the green light to start blinking, and then, enter the calibration command.
Note: If, after the upgrade is completed, the gripper closes automatically, skip this step and go directly to step 5.
ref0.motor.request_state(2)

At this point, the LED changes from green blinking to blue steady-on, and the gripper will start to move slowly. Do not operate the gripper during this time and wait for the calibration to complete. When the calibration is successful, the gripper will make a sound, and the LED changes back from blue steady - on to green blinking.
Note: Before performing the calibration, if the gripper fails to open or can no longer be controlled, manually open the gripper according to the following steps.
a. Unplug the power supply and all connection cables.
b. Manually remove the rear cover as shown in the figure below.
c. Manually remove the 4 cross-head screws on the control board as shown in the figure below.
d. Lift the control board to expose the magnet. Note that the 3 welded wires of the control board should not be disconnected during the lifting process, as shown in the figure below.
e. Manually rotate the magnet bracket counter-clockwise until the OmniPicker opens about 50% of its stroke, as shown in the figure below.
f. Re-install the control board and tighten the 4 cross-head screws.
g. Put on the rear cover and tighten the screws.
|
|
|
|
The gripper is powered on again, automatically turns on and closes, and the upgrade is complete.

6. If the upgrade fails, use the flash_app command to rewrite the file.
flash_app(r"PATH") // PATH is the absolute path of the firmware in the system

NOTE: the version of REF-CLI has to be 1.0.3 or above
Firmware version
Version | Release Date | Firmware | Contents |
|---|---|---|---|
3.3.0 | 2024.12.26 | https://cn.agilink-ai.com/uploads/upload/files/20260723/97f3875502f1d3787a57938ac77b0763.zip |
|
3.3.3 | 2024.1.10 | https://cn.agilink-ai.com/uploads/upload/files/20260723/f1ff4eb7e7dbe0b786513f573aba21ad.zip |
|
3.3.5 | 2025.12.4 | https://cn.agilink-ai.com/uploads/upload/files/20260723/51b19f395bdf717cbbbf7b916347d8b0.zip |
|
Others
This manual is based on OmniPicker hardware Ver1.2, Firmware Ver3.3.5, and Host Ver 1.0.3 .
URDF
Please use ROS2 Humble to load the URDF file of the gripper.
Download ⬇️
https://cn.agilink-ai.com/uploads/upload/files/20260723/a0ecaeb66b772735e77eb97fff7720a5.zip










