/ddh_hardware

Direct-Drive Hand Hardware

Direct-Drive Hand

In this project, we have implemented a two-fingered 4-DoF direct-drive hand, inspired by the work "Direct Drive Hands: Force-Motion Transparency in Gripper Design".

ddh

Table of Contents

Preparation

Bill of Materials (BOM)

Off-the-Shelf Parts

3D Printing

Install ddh_driver

ddh_driver is our driver software that provides a user interface to the gripper hardware. To install, visit here.

Labeling Parts

Labeling parts can facilitate assembly.

Motors

Label the four motors with R0, R1, L0, L1, respectively. The motors will not be interchangeable later.

ODrive

Label the two ODrive boards with ODrive_R and ODrive_L respectively. Record their serial numbers in ddh_driver/config/default.yaml. You can check the serial number using odrivetool in the terminal.

sn

odrive_serial:
  R: 'Serial Number of ODrive_R'
  L: 'Serial Number of Odrive_L'

Gripper Shell

On one side of the 3D-printed part Gripper Shell (to be used as the top side), mark reference frames as follows.

ref_frame

Actuators

Actuator = BLDC Motor + Magnet + Encoder + Drive Board

Actuator Assembly ⨉ 4

motor_with_magnet

motor-plate

actuator_module

Wiring

The components should be connected following the diagram below. The encoder connection (black) and power connection (green) will be further elaborated.

connection

connection_real

Power Supply

First connect the DC power supply to the wall plug. The brown, blue, and yellow wires correspond to L, N and Ground ports on the power supply. Then connect it to the two ODrive boards, positive to positive, negative to negative. There is no on/off button, plug in the wall plug to turn the system on, unplug to turn it off. Power it on does not arm the motors.

Encoder Connection

For the encoder connection, we fabricate a cable assembly as shown below in the schematic. It is recommended to verify the connectivity and resistance of each connection to make sure the cables are soldered properly. We also recommend to label each connector like the schematic.

drag_cable

wire

After successful fabrication, connect the motor encoders and the ODrives.

Power Connection

For the power connection, the motors are matched with the ODrive axes as follows:

Actuator ODrive Axis
R0 ODrive_R M0
R1 ODrive_R M1
L0 ODrive_L M0
L1 ODrive_L M1

Keep the 3-phase connection consistent as shown below.

wireing_power

power-connection

Actuator Calibration

Each actuator module require calibration before use. This step can not be done after the gripper is assembled, so do not postpone this step.

We explicitly define the direction of the rotor to be the direction the hexagonal logo on the rotor is pointing at, and the zero position of the motor to be when the direction of the motor is pointing at the opposite direction of the power port on the stator.

motor-zero

Calibrate ODrives

Execute the following command and follow its instructions in the terminal.

python3 -m ddh_driver.calib_odrive

Calibrate Zero Position

Here we calibrate the zero position of the motor. Mount the actuator on the calibration stand and install the calibration arm onto the actuator according to the diagram

calibration-stand

Execute the following command to show real-time reading from the encoders.

python3 -m ddh_driver.check_encoder

Put the motor into zero position as show in the diagram below. Press down the calibration arm to make sure the stand and arm touch tightly.

zero-stop

Record the encoder reading in configuration in ddh_driver/config/default.yaml. Perform this calibration for each actuator and record it in their respective keys in the configuration file.

motors:
  R0: # and R1, L0, L1:
    offset: the encoder reading at zero stop

After modifying the configuration file, execute the following command will show the real-time reading of the motor angular position in degrees.

python3 -m ddh_driver.check_motor_pos

It should be zero when motor is in zero position. Also try 90° and 180°. Don't mind the sign at this stage of assembly.

Gripper

Finger Assembly ⨉ 2

linkage_joint

finger

Gripper Assembly

gripper_shell

gripper

Mounting

mounting

gripper_mounted

Validation

The gripper assembly is complete. Please perform the following validation steps to make sure the linkages and actuators are installed correctly.

First check the association between proximal links and actuators. They should follow the diagram below exactly. If there is a mismatch, please go back to the assembly steps and correct the mistakes.

linkage_ids

Then check the angular position of the four proximal links. This value will be referred to as θ, with subscript indicating which link. Execute the following command to print real-time reading of θ

python3 -m ddh_driver.check_theta

It should be the angle between the link and the x-axis, in counter-clockwise direction. For example, the following figure shows the angle of R0 link at -40°, 0°, and 90°. various-angles If everything checked out at this point, you have successfully built and calibrated the direct-drive gripper.

Customization

If the default setup does not satisfy your requirements, it can be further customized.

Mounting

If the default mounting does not work for you, it's very easy to make a custom mount. The gripper has a 60 mm PCD with 4 ⨉ M4 mounting interface, as shown in the drawing below.

base_mount

Geometry

geometry

The geometrical parameters can be customized. After you design your custom parts, update the ddh_driver/config/default.yaml so the driver can work properly.

Parameter Configuration Path Unit
ℓ₁ /geometry/l1 mm
ℓ₂ /geometry/l2 mm
ℓ₃ /geometry/l3 mm
𝝱 /geometry/beta degree
𝛄 /geometry/gamma degree

Fingertip

The fingertip is designed to be swappable. It is attached to the distal link, shown in the schematic below. The default fingertip has a sharp tip for scooping thin objects. Customize the fingertip for your specific scenario. Beware that ℓ₃ and 𝝱 change with the fingertip geometry, make sure to update them in the configuration file.

fingertip

Getting Started

You have completed the assembly and calibration of the direct-drive gripper. To learn about how to use the gripper, please proceed to the ddh_driver for tutorials and documentation.

Maintenance

For any technical issues, please contact Pu Xu (pxuaf@connect.ust.hk)