Skip to content

Readme.md

Machine-translated by Robotheca from the original in Japanese (opens in a new tab). License: Apache-2.0 (opens in a new tab).

fcs4hand2310

Overview

This is a hand that uses four Futaba industrial servos, command-type servos (opens in a new tab).

The link members are intended to be made with a 3D printer. (Please make use of the data in the step folder.)

The hardware_fcs (opens in a new tab) is used to control it with ros2_control.

Launch files and configuration files are provided to control each joint angle with joint_trajectory_controller and to publish the current angles with joint_state_broadcaster.

Operation has been verified on Humble.

Parts List

TTL type
Part nameManufacturerModel numberQuantityNotes
Servo moduleFutaba00400021-3 ROBOT SERVO RS304MDFF FUTABA (opens in a new tab) or 00400020-3 ROBOT SERVO RS303MRFF (opens in a new tab)4
HubFutabaBA2082 TB-RV71EH-7.4V/3W (opens in a new tab)1Beware of similar model numbers. Use the one ending in "3W".
USB adapterFutaba00400070-1 CONVERTER RSC-U485 JPN (opens in a new tab)1Used as a set with the TB-RV71EH-7.4V/3W (no substitute possible)
Power cable (hub side)FutabaBC0079 TB-RV71EH POWER CABLE (opens in a new tab)1Substitutable as long as it connects
EH 4-pin connectorJSTEHR-4 (opens in a new tab)4Add one more if you insert a termination resistor.
EH contactsJST(as needed) (opens in a new tab)12Servo modules generally have 3 pins, so these replace them with the hub's 4-pin connectors. Add two more if you insert termination resistors.
Motor power supply(as needed)(as needed)1Servo modules are rated at 4.8โ€“7.2 [V]; current capacity is unknown.
Power cable (supply side)(custom made)(custom made)1
Tapping screws(as needed)(M2 tapping 10 mm)34
Double-sided tape(as needed)(thin type)(as needed)Double-sided tape is used to fix the servo modules to the link parts.
Link parts(as needed)(3D print those in the step directory)1 each

Work Overview

  • Replace the connector of each servo module with EHR-4
  • Screw the link members to the servo horns
  • Attach the servo modules to the link members with double-sided tape
  • Screw down the servo module holders at the base
  • Make the power cables (hub side, power supply side)
  • Wire connections, ID programming, operation check

Precautions

  • The section from the USB adapter to the hub is RS-485, so it may be reassuring to add termination resistors at both ends.
RS-485 Type

Compared with the TTL type, RS-485 communication is more reliable, but the amount of work increases. In particular, if you wire the DF11 4-pin connector incorrectly, the consequences could be disastrous and dangerous.

้ƒจๅ“ๅใƒกใƒผใ‚ซใƒผๅๅž‹็•ชๆ•ฐ้‡ๅ‚™่€ƒ
Servo moduleFutaba00400038-1 ROBOT SERVO RS302CDF3 FUTABA (opens in a new tab) or 00400065-3 RS305CR (opens in a new tab)4
Bottom case with shaftFutabaBS3397 RS30x BOTTOM CASE-SHAFT (opens in a new tab)4
Free hornFutabaBS0168 RS2xx/RS3xx FREE HORN SET (opens in a new tab)1Set of 5
Hub (root side)FutabaBA2083 TB-EH31DF-100 or BA2084 TB-EH31DF-200 (opens in a new tab)1If you adjust the connector yourself, the same BA2085 TB DF31DF-100 (opens in a new tab) as the origin side is also acceptable
Hub (extension side)FutabaBA2085 TB DF31DF-100 (opens in a new tab)1
USB adapterFutaba00400070-1 CONVERTER RSC-U485 JPN (opens in a new tab)1Used together with TB-RV71EH-7.4V/3W (no substitute)
DF11 4-pin connectorHiroseDF11-4DS-2C (opens in a new tab)1For the power supply cable. Add 1 more if inserting a terminating resistor.
DF11 contactHirose(as appropriate) (opens in a new tab)2Same as above (add 2 more if inserting a terminating resistor)
Motor power supply(as appropriate)(as appropriate)1The servo module is rated for 4.8โ€“7.2[V]; current capacity is unknown

| Power cable | Self-made | (as needed) | | | | Tapping screw | (as needed) | (M2 tapping, 10mm) | 34 | | | Double-sided tape | (as needed) | (thin type) | (as needed) | Double-sided tape is used to fix the servo module to the link member | | Link member | (as needed) | (3D print from the files in the step directory) | 1 each | |

Construction Overview

  • Replace the bottom case of each servo module with one that has a shaft
    • Mark the wiring
    • Remove the DF11 4-pin housing
    • Replace the bottom case of the servo module
    • Attach the DF11 4-pin housing (take care not to mix up the places where the signal wires are inserted)
  • Screw the link member to the servo horn
  • Attach the servo module to the link member with double-sided tape
  • Screw the servo module holder on the base
  • Make the power cable and the communication conversion cable
  • Wire the connections, burn in the IDs, and check operation

Precautions

  • It may be reassuring to place termination resistors at both ends of the RS-485 wiring.
  • When replacing the bottom case, you need to take apart the DF11 4-pin connector once. The wire colors are the same, so be extremely careful not to mix them up.

Assembly Instructions

Please refer to the photo.

Standalone Operation Check Tool: python3 + dicot

dicot (opens in a new tab) is convenient. You can install it with pip3 install dicot.

After reading through the dicot README.md (opens in a new tab), reading the source (opens in a new tab) should help you find the names of the properties you want to access.

Serial devices can be read and written by members of the dialout group, so add your own Ubuntu user account to the dialout group. For example, if the user name is alice, run sudo adduser alice dialout and then restart.

Running on Linux

The RSC-U485 works with the FTDI driver (ftdi_sio), but the standard FTDI driver does not register the RSC-U485. To make it work immediately by hand, run the following command.

$ sudo su
# modrobe ftdi_sio
# echo 1115 0008 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id

To have it recognized automatically on future boots, create a file with any suitable name under /etc/udev/rules.d and write the following in it.

ATTR{idVendor}=="1115", ATTR{idProduct}=="0008", GROUP="dialout", MODE="0660", RUN+="/bin/sh -c '/sbin/modprobe ftdi_sio; /bin/sh -c \"echo 1115 0008\" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
Running on Windows

I believe it should work if you download and install the driver from the Futaba site (opens in a new tab), check which COM port it was assigned, and specify that COM port in dicot.

ros2_control ใงๅ‹•ใ‹ใ™ใจใใฎใ‚ณใƒžใƒณใƒ‰ใƒฉใ‚คใƒณ่ฆšๆ›ธ

ๅ…จ่ปธ torque off (inactive ็Šถๆ…‹ใธ้ท็งป)

ros2 service call /controller_manager/set_hardware_component_state controller_manager_msgs/srv/SetHardwareComponentState "{name: fcs0, target_state: {id: 0, label: inactive}}"

ๅ…จ่ปธ torque enable (active ็Šถๆ…‹ใธ้ท็งป)

ros2 service call /controller_manager/set_hardware_component_state controller_manager_msgs/srv/SetHardwareComponentState "{name: fcs0, target_state: {id: 0, label: active}}"

็›ฎๆจ™่ง’ๅบฆใธๅ‹•ไฝœ๏ผˆใ“ใ“ใงใฏ [0, 0, 0, 0], ๅ˜ไฝใฏใƒฉใ‚ธใ‚ขใƒณ๏ผ‰

ros2 action send_goal /joint_trajectory_controller_fcs4hand2310/follow_joint_trajectory control_msgs/action/FollowJointTrajectory -f "{ trajectory: { joint_names: [ hndj0, hndj1, hndj2, hndj3 ], points : [ { positions: [0, 0, 0, 0], time_from_start: { sec: 0.5 }} ]}}"

About this repository

File nameOverview
launch/fcs4hand2310.launch.pyLaunch script. The ros2_control configuration is also coded here.
urdf/fcs2310.urdfDescribes the axis layout and outer shape. Used for preview.
urdf/fcs4hand2310ctrl.xacroTop-level URDF. Loads fcs2310.urdf and adds the ros2_control tag and the hardware_fcs tag.
config/ros2_controllers_fcs4hand2310.yamlConfiguration of joint_trajectory_controller and joint_state_broadcaster
step/*STEP files of the link parts (not needed to run with ros2_control)
pics/*Photos taken during assembly (not needed to run with ros2_control)

Script files

File nameOverview
torque_free.shPuts ex_fcs0 (HardwareFCS) into the inactive state. During on_deactive() processing, servo off (Torque Enable = False) is sent to all servos.
torque_enable.shPuts ex_fcs0 (HardwareFCS) into the active state. During on_activate() processing, the command values are overwritten with the current values, and servo on (Torque Enable = True) is sent to all servos.
set_angles.pySends motion commands to joint_trajectory_controller_fcs4hand2310 (JointTrajectoryController). It runs ros2 action send_goal ... from python (a shortcut).
โ”œโ”€โ”€ CMakeLists.txt
โ”œโ”€โ”€ Readme.md
โ”œโ”€โ”€ config
โ”‚ย ย  โ””โ”€โ”€ ros2_controllers_fcs4hand2310.yaml
โ”œโ”€โ”€ launch
โ”‚ย ย  โ””โ”€โ”€ fcs4hand2310.launch.py
โ”œโ”€โ”€ package.xml
โ”œโ”€โ”€ pics
โ”‚ย ย  โ”œโ”€โ”€ pict00.jpg
โ”‚ย ย  โ”œโ”€โ”€ pict01.jpg
โ”‚ย ย  ...
โ”œโ”€โ”€ step
โ”‚ย ย  โ”œโ”€โ”€ FCS4HAND2310_BASE.STEP
โ”‚ย ย  โ”œโ”€โ”€ FCS4HAND2310_BASE_LID.STEP
โ”‚ย ย  ...
โ”œโ”€โ”€ scripts
โ”‚ย ย  โ”œโ”€โ”€ set_angles.py
โ”‚ย ย  โ”œโ”€โ”€ torque_enable.sh
โ”‚ย ย  โ””โ”€โ”€ torque_free.sh
โ””โ”€โ”€ urdf
    โ”œโ”€โ”€ RS30x_BottomShaft.dae
    โ”œโ”€โ”€ fcs4hand2310.xacro
    โ””โ”€โ”€ fcs2310.urdf

Files by @knaga-rgj, at commit 2f344bc, read from GitHub in your browser. Hardware license: Apache-2.0; software license: Apache-2.0. Robotheca doesn't review code: read it before running it.