WalabotEye - Object Tracker With Haptic Feedback

by daveyclk in Circuits > Raspberry Pi

1150 Views, 7 Favorites, 0 Comments

WalabotEye - Object Tracker With Haptic Feedback

img_5627_M3hDkfd4Zh.jpg
The WalabotEye

For the hard of sight, use this to have a better understanding of the world around you.

Supplies

Things used in this project


Hardware components Walabot Creator ×1

ADAFRUIT DRV2605L HAPTIC MOTOR CONTROLLER ×1

Raspberry Pi 3 Model B ×1

Adafruit VIBRATING MINI MOTOR DISC ×1

5.1V Battery Pack ×1

backpack ×1

Jumper wires (generic) ×5

Abstract

What would it be like if you were
able to sense objects around you? Meaning you could navigate around the space even if your vision was compromised? Not just for people who are partially sighted, this idea could also be used by emergency services (namely the fire department) in smoke-filled environments. Audio is not always the best and most discrete way to give instruction, haptic feedback, on the other hand, will be perfect.

The Basic Idea

I wanted to create a sensor that
would be able to pick up obstacles, and then advise the wearer using haptic feedback how far away the object is, and whether it's coming from the left, right or dead ahead. For this I'll need: A sensor that is able to see 3D spaceHaptic Feedback driverHaptic Feedback ActuatorAn External BatteryA backpack for it to be strapped to.

Walabot

Watch Walabot Show Off! - Walabot Wed

Want to see through walls? Sense objects in 3D space? Sense if you are breathing from across the room? Well, you're in luck.

The Walabot is a whole new way for sensing the space around you using
low power radar. This was going to be key to this project. I would be able to take the Cartesian (X-Y-Z) coordinates of objects in 3D space, these will be mapped to a series of haptic feedbacks to give the wearer a better understanding of the space around them.

Getting Started

First things first, you will need a computer to drive the Walabot, for this project I'm using a Raspberry Pi 3 (herein referred to as RPi) due to the built in WiFi and general extra oomph.

I bought a 16GB SD card with NOOBS preinstalled to keep things nice and simple, and opted to install Raspian as my Linux OS of choice (if you are unfamiliar with how to install Raspian, please take a moment to have a little read of this) OK, once you have got Raspian running on your RPi, there are a few configuration steps to take to get things ready for our project. Firstly, make sure you are running the latest Kernel version and check for updates by opening a command shell and typing:

sudo apt-get update

sudo apt-get dist-upgrade

(Sudo is added to ensure you've got administrative privileges eg. stuff will work.)This may take a while to complete, so go and have a nice cup of tea. 2.

You need to install the Walabot SDK for RPi. From your RPi web browser go to https://www.walabot.com/gettingstarted and download the Raspberry Pi installer package.

From a command shell:

cd downloads

sudo dpkg -I walabotSDK_RasbPi.deb

We need to start configuring the RPi to use the i2c bus. From a command shell:

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

Once this is done, you have to add the following to the modules file.

From a command shell:

sudo nano /etc/modules

add these 2 strings on separate lines

i2c-dev

i2c-bcm2708

The Walabot draws a fair bit of current, and we'll also use GPIO's to control stuff so we need to set these up.

From a command shell:

sudo nano /boot/config.txt

add the following lines at the end of the file:

safe_mode_gpio=4

max_usb_current=1

The RPi is an excellent tool for makers, but it is limited in the current it can send to the Walabot. Hence why we're adding a 1Amp max current rather than the more standard 500mA.

Python

Why Python? Well, as it's super easy to code, fast to get running, and there's loads of good python examples available! I'd never used it before and was soon up and running in no time. Now the RPi is configured for what we want, the next step is to configure Python to have access to the Walabot API, LCD Servo interfaces.

For the Walabot

From a command shell:

Sudo pip install “/usr/share/walabot/python/WalabotAPI-1.0.21.zip”

For the Haptic Driver

From a command shell:

sudo apt-get install git build-essential python-dev

cd ~

git clone

The Adafruit DRV2605 haptic driver board is great because you can send I2C signals to trigger tons of saved haptic profiles. Only downside was there was no Python library for this available. But fear not! I have written one as part of this project. https://www.adafruit.com/product/2305

Autorunning the Script

Now that this is all set up and configured, and we have the Python code ready, we can set things to auto run so we can ditch the keyboard and monitors.

There are a few things to do:

Create a new script file to run out Python Program

sudo nano walaboteye.sh

Add these lines

#!/bin/sh

python /home/pi/WalabotEyeCLI.py

Make sure to save it. Next we need to give the script permission to run by typing:

Sudo chmod +x /home/pi/walaboteye.sh

And finally, we need to add this script to the /etc/rc.local file

Sudo nano /etc/rc.local Add home/pi/walaboteye.sh &

Be sure to include the "&". This allows the Python Script to run in the background Right! That's all the configuration and software sorted, next it's time to wire up the hardware.

The Hardware

img_5627_M3hDkfd4Zh.jpg
img_5629_YnzrIcM3sP.jpg
img_5630_mIq7ynqhh0.jpg
img_5631_9gYDfGTz9c.jpg

This is not my finest hour, but it does feel delightfully hacky! As you will see from the images.

2305-00_QNNRuzZUYr.jpg
pi3_gpio_s2QsUdPy3d.jpg

The wiring up is super simple.
Connect RPi, SDA SCL VCC and GND pins to the DRV2605 corresponding pins. Connect your haptic motor to the driver board...that's it for that bit!

img_5632_jgwcF4Is2k.jpg
img_5630_mIq7ynqhh0.jpg

After that, all you need to do is connect the walabot USB to the RPi and
get your finest sticky tape, and secure everything in place as shown:

How It Works

The WalabotEye

The idea is very simple. Depending how far away the obstacle is depends how strong the buzz will feel on your shoulder. 2 meters away is a soft buzz, under 70cm is a very strong buzz and everything in between.

  • The sensor is also able to tell you if the obstacle is dead ahead, coming from the left or coming from the right.
  • The way it does this is to add a second haptic buzz, depending on where the object is. If the obstacle is dead ahead, it is a simple repetitive buzz, with the strength depending on how far way it is.
  • If the obstacle is to the right, a ramp up buzz is added after the main buzz. Again, the strength depends on how far away it is
  • If the obstacle is to the left, a ramp down buzz is added after the main buzz

Simple!

Code