/LEAP_Hand_API

API for controlling LEAP Hand

Primary LanguagePythonOtherNOASSERTION

Welcome to the LEAP Hand SDK

  • Please visit our website for more information about LEAP hand.

Software Setup

Hardware Setup

  • Connect 5v power to the hand (the dynamixels should light up during boot up.)
  • Connect the Micro USB cable to the hand (Do not use too many USB extensions)
  • Open Dynamixel Wizard and find the correct port using the options button and put that in main.py or ros_example.py. Note, you cannot have Dynamixel wizard open while using the hand's API, the port will be "busy" with the other process.
  • On Ubuntu you can find the hand by ID using /dev/serial/by-id The ID will stay persistent on reboots.
  • We offically support Python and ROS, but other languages are supported by Dynamixel SDK.

Functionality

  • Leap Node allows you to command joint angles in different scalings.
  • You can read position, velocity and current from the hand.
  • Do not query reads too often, going past 90hz for one set of angles or 30hz for all three will slow down the USB communication.
  • The default controller follows the PID control, up to the current limit cap.
  • Other controllers including velocity control or current control are supported as per the motor manual
  • For Lite, keep the current limit around 300ma.
  • For Full, you can raise the current limit up to 550ma.
  • If facing a jittery hand, adjust the PID values down.
  • If the hand is too weak, adjust the PID values up.

Troubleshooting

  • If your motor is 90/180/270 Degrees off, the horn is mounted incorrectly on the motor. Remount it.
  • If no motors show up, check that your serial port permissions are correct.
  • If some motors are missing, make sure they are IDed corrrectly and are connected to the U2D2.
  • If you get "overload error" and the motors are flashing red, then they have overloaded (self-collision etc). It should clear on a power cycle. If it happens often, lower the current limits in the control code so that it does not happen as often.
  • If you get "jittery" motors, try lowering the P and D values, either in the roslaunch file or the python file.
  • If you feel the motors are too inaccurate, you can also try raising the P and D values.
  • To improve latency on Ubuntu try these tips. Configure USB Latency Settings in Ubuntu and the Dynamixel Python SDK

Useful Tools:

  • MANO to LEAP joint angle mapping.
  • If you have useful tools you feel the community can benefit from, please make a pull request.
  • I can also add tools to this upon request. :)

Support:

  • Please contact me at kshaw2@andrew.cmu.edu for any issues.
  • This code is made available using an MIT License.
  • The CAD files are provided with a CC BY-NC-SA Attribution-NonCommercial-ShareAlike license which allows you to use and build upon our work non-commercially.
  • LEAP Hand is provided as-is and without warranty.
  • If you use LEAP Hand in an academic setting, please cite our paper:
@article{shaw2023leaphand,
  title={LEAP Hand: Low-Cost, Efficient, and Anthropomorphic Hand for Robot Learning},
  author={Shaw, Kenneth and Agarwal, Ananye and Pathak, Deepak},
  journal={Robotics: Science and Systems (RSS)},
  year={2023}
}