Things used in this project
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 obsticles, and then advise the wearer using haptic feedback how far away the object is and whether it's coming from the left, right or is dead ahead.
For this i'll need
- A sensor that is able to to see 3D space
- Haptic Feedback driver
- Haptic Feedback Actuator
- An External Battery
- A backpack for it to be strapped to.
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 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 carteasan (X-Y-Z) coodinates 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.
First things first, you will need a computer to drive the Walabot, for this project i'm using a Raspberry Pi 3 (here in refered to at 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 project1. 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 privilages 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
3. 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 seperate lines:
4. 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:
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
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
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
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
This is not my finest hour, but it does feel delightfully hacky! as you will see from there images
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!
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 idea is very simple. Depending how far away the obstacle is depends how strong the buzz will feel on your shoulder.. 2 metres 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
They 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 repeatative buzz, with the strength depending on how far way it is
if the obstacle it 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.
Python DRV2605 Driver Library
Did you replicate this project? Share it!I made one
Love this project? Think it could be improved? Tell us what you think!