RightHandRobotics / reflex-ros-pkg

This repo contains base ROS code for controlling the Right Hand Robotics ReFlex hand. More info at www.righthandrobotics.com
18 stars 26 forks source link

TT2 - Sporadic motor actuation during calibrate_fingers service call when fingers are not connected properly #36

Open KevinDaLam opened 6 years ago

KevinDaLam commented 6 years ago

Expected Behavior

When the service /reflex_takktile2/calibrate_fingers is called, motors should step in incrementally in small steps, tightening the tendon strings until the knuckle encoders detect movement. When all three fingers have been detected by the encoders, calibration should complete.

Current Behavior

When all three fingers are connected correctly, the expected behaviour happens. However, when either finger 1, finger 3, or encoders are disconnected, motors will start to actuate quickly and drive past where it's supposed to be driven, possibly causing damage.

Details

At the moment, reflex_driver_node.cpp reads in dynamixel angles from the hand state. The motor actuation issue occurs during calibration when the dynamixel angles read are zero. Sometimes, these values correct to the usual 13000-15000 range after turning for a bit. However, this is unrealistic to do since they are connected to the fingers and will cause damage if this occurs.

Possible Solution

At the moment, a temporary fixed has been introduced in branch TT2/driver_node where servo positions commands will stop when the dynamixel angle values read are zero.

Steps to Reproduce

  1. Disconnect finger 1 or 3, or any encoders.
  2. Power on ReFlex TakkTile 2 Hand.
  3. Launch reflex_takktile2.launch
  4. Call ROS service /reflex_takktile2/calibrate_fingers (Recommended to be ready to pull the power plug from the TakkTile 2 Hand.)
  5. Motors should drive to unexpected positions.