This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
projects:fingertip [2011/09/01 17:19] – amaldo | projects:fingertip [2012/10/10 17:21] (current) – amaldo | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Fingertip Laser Sensor ====== | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | This is a sensor designed to be installed on the fingertip of robotic hands. It uses an Avago ADNS-9500 laser mouse sensor to acquire information about the surface of the grasped objects, and detect slippage as well as distance to the object. | ||
+ | |||
+ | Both software and hardware are available under free licenses. The software is released under the GPL, and the hardware board designs are available under the CC-BY-SA 3.0 license. | ||
+ | |||
+ | Please see images of the sensor in this [[http:// | ||
+ | |||
+ | The system is composed of 3 boards, the first one is the [[http:// | ||
+ | |||
+ | ====== Paper at IROS2012 ====== | ||
+ | |||
+ | We presented [[https:// | ||
+ | |||
+ | It describes the sensor and how we use it to improve robotic grasping and manipulation. | ||
+ | |||
+ | We are happy to hear your comments and suggestions. Also, let us know if you would like to integrate the sensor in your own robot hand or gripper. We could even supply some PCBs to make this easier. Find the author' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ====== Repository ====== | ||
+ | |||
+ | You can get the source code and board design made in Eagle here: | ||
+ | git clone http:// | ||
+ | |||
+ | ====== ARM Toolchain ====== | ||
+ | |||
+ | To install the ARM Toolchain: | ||
+ | |||
+ | Install the following packages: | ||
+ | |||
+ | apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential | ||
+ | |||
+ | or in Debian/ | ||
+ | |||
+ | apt-get build-dep gcc-4.5 | ||
+ | | ||
+ | |||
+ | Install xstow: | ||
+ | apt-get install xstow | ||
+ | | ||
+ | Also install openocd and libftdi-dev | ||
+ | apt-get install openocd libftdi-dev | ||
+ | | ||
+ | Add a udev rule so that the programmer can be accessed by everyone: | ||
+ | As root: | ||
+ | echo ' | ||
+ | | ||
+ | And restart udev: | ||
+ | / | ||
+ | |||
+ | |||
+ | Make sure that ~/local/bin is in your path: | ||
+ | echo " | ||
+ | |||
+ | Get a new terminal (that should load your .bashrc) and continue: | ||
+ | |||
+ | | ||
+ | ===== Compile the toolchain ===== | ||
+ | |||
+ | Go to the repository, and get the script to compile the cross-compiling toolchain: | ||
+ | mkdir -p ~/local/DIR | ||
+ | cd fingertip/ | ||
+ | mkdir / | ||
+ | cp summon-arm-toolchain-elf-no_multilib / | ||
+ | cd / | ||
+ | ./ | ||
+ | |||
+ | | ||
+ | | ||
+ | ===== Get a pre-compiled tolchain for Ubuntu10.10 64bit ===== | ||
+ | |||
+ | If you have an 64bit Ubuntu 10.10 Linux system, you can get the compiled toolchain {{: | ||
+ | |||
+ | Uncompress the file in your local/DIR directory: | ||
+ | |||
+ | mkdir -p ~/local/DIR | ||
+ | tar -xzf arm-toolchain-elf-nomultilib.tgz ~/local/DIR | ||
+ | | ||
+ | Use xstow to install the files to your ~/local directory | ||
+ | cd ~/local/DIR | ||
+ | xstow arm-toolchain-elf-nomultilib | ||
+ | | ||
+ | |||
+ | |||
+ | ====== Distance Classification ====== | ||
+ | Information about the distance classification system is [[[projects: | ||
+ | |||
+ | ===== Laser mouse sensor board ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | This small board has the needed circuitry for the ADNS-9500 and is soldered directly on top of the sensor. It mostly consists of a P-MOSFET for the laser diode, and capacitors for voltage stabilization. | ||
+ | |||
+ | Bill of Materials: | ||
+ | |||
+ | ^ Quantity | ||
+ | | 3 | Ceramic Capacitor | 0603 | 100nF | C1, C3, C5 | | | ||
+ | | 3 | Tantalum Capacitor | 3216/A | 10uF | C2, C4, C6 | | | ||
+ | | 1 | Ceramic Capacitor | 0603 | 10nF | C7 | | | ||
+ | | 1 | Ceramic Capacitor | 0603 | 1uF | C8 | | | ||
+ | | 1 | Ceramic Capacitor | 0603 | 470pF | C9 | | | ||
+ | | 1 | P-Mosfet NTA4151PT1G | SC75 | | Q1 | NTA4151PT1GOSCT-ND | | ||
+ | | 1 | Molex Picoblade conn. header 1.25mm (53261-0671) | | 6pos | X1 | WM7624CT-ND | | ||
+ | | 1 | ADNS9500 Laser sensor | | | U1 | | | ||
+ | | 1 | ADNS-6190-002 Lens for ADNS9500 | | | | | | ||
+ | |||
+ | ===== SPI Controller ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | This board is has an STM32 microcontroller with two independent SPI buses, and a high speed UART to connect to the Floss-JTAG. It has connectors for four laser mouse sensors. The firmware of the microcontroller is responsible for initializing the laser mouse sensors correctly, loading their firmware, and obtaining data and images for transmission to the PC. | ||
+ | |||
+ | Bill of Materials: | ||
+ | |||
+ | ^ Quantity | ||
+ | | 3 | Ceramic Capacitor | 0603 | 10nF | C1, C4, C10 | | | | ||
+ | | 4 | Ceramic Capacitor | 0603 | 100nF | C2, C6, C7, C8 | | | | ||
+ | | 1 | Ceramic Capacitor | 0603 | 1uF | C3 | | | | ||
+ | | 3 | Tantalum Capacitor | 3216/A | 4.7uF | C5, C9, C11 | | | | ||
+ | | 9 | Resistor | 0603 | 10kOhm | R1, R2, R7-R13 | | | | ||
+ | | 2 | Resistor | 0603 | 1.2kOhm | R3, R4 | | | | ||
+ | | 1 | Resistor | 0603 | 470Ohm | R5 | | | | ||
+ | | 1 | Resistor | 0603 | 2.2kOhm | R6 | | | | ||
+ | | 2 | Resistor | 0603 | 100Ohm | R14, R15 | | | | ||
+ | | 1 | uC STM32 (STM32F103CBT6) | TQFP48 | | IC1 | 497-6288-ND | | | ||
+ | | 1 | LDO Voltage regulator (LP2992AIM5-3.3/ | ||
+ | | 1 | LED (LNJ414K84RA) | 0603 | Amber | LED1 | P11470CT-ND | | | ||
+ | | 1 | RGB LED (LRTB G6TG-TU7+VV7+ST7-IB) | PLCC6 | | LED2 | 475-1319-1-ND | 593-VAOS-5050RGBW1 | | ||
+ | | 1 | 8MHz Oscillator (ASE-8.000MHZ-LC-T) | | | Q1 | 535-9558-1-ND | 788-8002AI233E-8.0T | | ||
+ | | 1 | Molex Picoblade conn. header 1.25mm (53261-0471) | | 4pos | UART | WM7622CT-ND | 538-53261-0871 | | ||
+ | | 4 | Molex Picoblade conn. header 1.25mm (53261-0671) | | 6pos | X1, X2, X3, X4 | WM7624CT-ND | 538-53261-0671 | | ||
+ | | 1 | Molex Picoblade conn. header 1.25mm (53261-0871)| | 8pos | JTAG |WM7626CT-ND | 538-53261-0471 | | ||
+ | |||
+ | |||
+ | ===== Interconection Cables ===== | ||
+ | |||
+ | We used nice Molex connectors because they are small, solid and reliable. The only negative is that the connectors and the crimping tool are expensive. | ||
+ | If you don't need to make a lot of cables, buying pre-terminated wires is cheaper. | ||
+ | |||
+ | See {{: | ||
+ | |||
+ | Ready-made jumper wires: | ||
+ | ^ Description ^ Farnell Part# ^ | ||
+ | | MOLEX - 06-66-0012 - Pre Terminated Jumper Wire (10x 28AWG 150mm Socket-Socket) | 1125272 | | ||
+ | | MOLEX - 06-66-0012 - Pre Terminated Jumper Wire (10x 28AWG 300mm Socket-Socket) | 1125274 | | ||
+ | |||
+ | **Parts needed:** | ||
+ | |||
+ | __Serial Cable: FLOSS-JTAG <-> SPI-Controller__ | ||
+ | ^ Quantity ^ Description ^ Molex Part# ^ | ||
+ | | 2 | Molex Picoblade wire to wire housing, female, 1.25mm pitch, 4pos | 51021-0400 | | ||
+ | | 4 | Pre-terminated jumper wires | | | ||
+ | |||
+ | __JTAG Cable: FLOSS-JTAG <-> SPI-Controller__ | ||
+ | ^ Quantity ^ Description ^ Molex Part# ^ | ||
+ | | 2 | Molex Picoblade wire to wire housing, female, 1.25mm pitch, 8pos | 51021-0800 | | ||
+ | | 8 | Pre-terminated jumper wires | | | ||
+ | |||
+ | |||
+ | __SPI Cable: SPI-Controller <-> Mouse sensor__ | ||
+ | ^ Quantity ^ Description ^ Molex Part# ^ | ||
+ | | 2 | Molex Picoblade wire to wire housing, female, 1.25mm pitch, 6pos | 51021-0600 | | ||
+ | | 6 | Pre-terminated jumper wires | | | ||
+ | |||
+ | **Pinouts: | ||
+ | |||
+ | __Serial Cable Pinout:__ | ||
+ | ^ Pin # (Side A) ^ Pin # (Side B) ^ | ||
+ | | 1 | 4 | | ||
+ | | 2 | 2 | | ||
+ | | 3 | 3 | | ||
+ | | 4 | 1 | | ||
+ | Basically, connectors facing away from each other, and cables going straight from one to the other, except the TXD, RXD pins in the middle, that are reversed. | ||
+ | |||
+ | __JTAG Cable Pinout:__ | ||
+ | ^ Pin # (Side A) ^ Pin # (Side B) ^ | ||
+ | | 1 | 8 | | ||
+ | | 2 | 7 | | ||
+ | | 3 | 6 | | ||
+ | | 4 | 5 | | ||
+ | | 5 | 4 | | ||
+ | | 6 | 3 | | ||
+ | | 7 | 2 | | ||
+ | | 8 | 1 | | ||
+ | Basically, connectors facing away from each other, and cables going straight from one to the other. | ||
+ | |||
+ | __SPI Cable Pinout:__ | ||
+ | ^ Pin # (Side A) ^ Pin # (Side B) ^ | ||
+ | | 1 | 6 | | ||
+ | | 2 | 5 | | ||
+ | | 3 | 4 | | ||
+ | | 4 | 3 | | ||
+ | | 5 | 2 | | ||
+ | | 6 | 1 | | ||
+ | Basically, connectors facing away from each other, and cables going straight from one to the other. | ||
+ | |||
+ | |||
+ | ===== Surface recognition ===== | ||
+ | |||
+ | For recognizing the surface from the fingertip data, Humberto did several experiments, | ||
+ | |||
+ | For information about how to use ./ | ||
+ | ===== Contributors ===== | ||
+ | |||
+ | * Alexis Maldonado | ||
+ | * Piotr Esden-Tempski | ||
+ | * Julian Brunner | ||
+ | * Frank Ehmann | ||
+ | * Humberto Alvarez |