Fingertip Laser Sensor

Fingertip sensor on paper (uses an ADNS-9500) Fingertip sensor Sensor installed on a DLR/HIT hand

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 flickr gallery.

The system is composed of 3 boards, the first one is the Floss-JTAG, then an SPI-Controller board based on a STM32 chip, and the mouse sensor board that interfaces to the ADNS9500.

Paper at IROS2012

We presented this paper at the IEEE/RSJ International Conference in Robotics and Automation 2012 in Algarve, Portugal.

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's contact info here.

Presentation Slides used at IROS 2012.

Repository

You can get the source code and board design made in Eagle here:

git clone http://toychest.in.tum.de/users/maldonado/fingertip.git

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/Ubuntu give this a try (or gcc-4.6)

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 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666"' >> /etc/udev/rules.d/99-ftdi.rules

And restart udev:

/etc/init.d/udev restart

Make sure that ~/local/bin is in your path:

echo "export PATH=${HOME}/local/bin:$PATH" >> ~/.bashrc

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/source
mkdir /tmp/compile-arm
cp summon-arm-toolchain-elf-no_multilib /tmp/compile-arm
cd /tmp/compile-arm
./summon-arm-toolchain-elf-no_multilib

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 here

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 here

Laser mouse sensor board

Laser mouse sensor board for ADNS-9500

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 Device Footprint Value Refdes Digikey Part#
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

SPI controller board, using the STM32

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 Device Footprint Value Refdes Digikey Part# Mouser Part#
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/NOPB) (LFEA) SOT23-5 3.3V IC2 LP2992AIM5-3.3CT-ND
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 Mouser's catalog page describing the Picoblade series.

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, explained here

For information about how to use ./bin/fingerpub and ./bin/surfaceClassifier in order to do surface recognition please see here

Contributors

  • Alexis Maldonado
  • Piotr Esden-Tempski
  • Julian Brunner
  • Frank Ehmann
  • Humberto Alvarez
 
projects/fingertip.txt · Last modified: 2012/10/10 17:21 by amaldo · [Old revisions]
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki