Guide for the IEEE World Haptics Conference 2021 Student Innovation Challenge: getting started.
https://2021.worldhaptics.org/sic/
Your contributions are welcome, here are your options to help us improve this guide:
- review and open issues
- create pull requests
- contact WHC 2021 SIC chairs at [email protected]
Generated with npm run toc
, see INSTALL.md.
Once this guide becomes very comprehensive, the main file can be split in multiple files and reference these files.
- Getting Started
- Acknowledgements
- License
This section will help you setup hardware and software components of your WHC 2021 SIC kit.
This section will help you setup hardware components of your WHC 2021 SIC kit.
Make sure to hold the bare RPI board from its edges to avoid touching components. One you receive the RPI and the SD card, please burn Raspberry Pi OS to the Micro SD card using the card reader. Imager is available here: https://www.raspberrypi.org/software/
Stack Audio Injector Octo soundcard hat on GPIO header of RPI.
Connect at least the Output RCA breakout to the Audio Injector Octo soundcard hat.
Define ideal wiring length based on your project setup, particularly depending on constraints from the locations of actuators and of the rest of your system (both colocated? wearable?).
Solder actuators, wires and connectors.
Connect:
- actuators to Syntacts board
- audio cables from Syntacts board to Audio Injector Octo soundcard hat
- Supply power to the board by either the battery case or the USB cable (just use red and black cable, probably better to plug into a USB3.0 port)
Remove the black header protection from the top of the Audio Injector Octo soundcard hat.
Stack your SparkFun Qwiic HAT on top of the Audio Injector Octo soundcard hat.
This section will help you setup software components of your WHC 2021 SIC kit.
This section will let you setup your Raspberry Pi with a SD card reader and without the need of USB keyboard and mouse.
We tested this procedure with the Raspberry Pi OS (formerly Raspbian) distribution and this kernel (output from command uname -a
on a terminal):
Linux raspberrypi 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux
This procedure is based on third-party tutorials such as: https://desertbot.io/blog/headless-raspberry-pi-4-lite-remote-desktop-upgrade
TODO Add method by writing filesystem with SD card reader.
If you are already logged in your Raspberry Pi, in a terminal, type/paste command sudo passwd pi
then input your new password. Choose something else than the default raspberry password for increased security.
The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.[1] Typical applications include remote command-line, login, and remote command execution, but any network service can be secured with SSH. From: https://en.wikipedia.org/wiki/Secure_Shell_Protocol
Make sure your laptop/desktop and Raspberry Pi are on the same network.
Enable WiFi and SSH by following this tutorial: https://desertbot.io/blog/headless-raspberry-pi-4-ssh-wifi-setup
Highlight: to enable SSH, put a ssh
file with no extension on boot partition:
https://www.raspberrypi.org/documentation/remote-access/ssh/
In computing, Virtual Network Computing (VNC) is a graphical desktop-sharing system that uses the Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical-screen updates back in the other direction, over a network. From: https://en.wikipedia.org/wiki/Virtual_Network_Computing
This procedure is based on third-party tutorials such as: https://www.raspberrypi.org/documentation/remote-access/vnc/
- install VNC Server on Raspberry Pi
- `sudo apt install realvnc-vnc-server realvnc-vnc-viewer
sudo raspi-config
Interfacing Options > VNC / SSH
- determine the Raspberry Pi IP address:
- access your Wifi router admin panel and identify connected devices
- use network scanning tools, such as
nmap
for Linux debian/ubuntu systems (from: http://mitchtech.net/vnc-setup-on-raspberry-pi-from-ubuntu/)sudo apt install nmap
nmap -sV -p 22 192.168.2.1-255
(replace192.168.2.1-255
with your network subnetwork and range)
- download VNC Viewer from https://www.realvnc.com/en/connect/download/viewer/
- install:
- for Linux debian/ubuntu systems:
sudo dpkg -i VNC-Viewer-6.20.529-Linux-x64.deb
- for Linux debian/ubuntu systems:
There are various ways of forwarding mouse and keyboard input from your laptop/desktop to your Raspberry Pi, see: https://raspberrypi.stackexchange.com/questions/4253/forward-mouse-and-keyboard-input-to-x-session
We recommend barrier: https://github.com/debauchee/barrier
Perform Manual setup from: https://github.com/WHC2021SIC/Octo
Automated setup is outdated and valid only for older kernels.
Pure Data (Pd) is a visual programming language developed by Miller Puckette in the 1990s for creating interactive computer music and multimedia works. From: https://en.wikipedia.org/wiki/Pure_Data
Pure Data has been employed in the HCI and haptics communities, here are a few examples:
- StereoHaptics by Ali Israr et al.: https://la.disneyresearch.com/publication/stereohaptics/
- libhapiness by Julien Decaudin et al.: https://gitlab.inria.fr/Loki/happiness/libhappiness
- WebAudioHaptics by Christian Frisson et al.: https://github.com/webaudiohaptics
Install puredata from a terminal with: sudo apt install puredata
.
Test all vibrotactile channels independently by sending test signals (tone or noise) with puredata and its Test Audio and MIDI utility accessible from menu Media
.
Explore the vibrotactile design space with the Syntacts Tactor Synthesizer by Evan Pezent et al.: https://github.com/WHC2021SIC/Syntacts
- Macaron by Oliver Schneider et al.: https://hapticdesign.github.io/macaron
- VibViz by Hasti Seifi et al.: https://www.cs.ubc.ca/~seifi/VibViz/main.html
I2C function in RPI is disabled by default. Please follow this instruction to enable the configuration, and make sure to reboot. https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial/all#i2c-on-pi
Sparkfun provides python programming on RPI tutorial: https://learn.sparkfun.com/tutorials/python-programming-tutorial-getting-started-with-the-raspberry-pi/configure-your-pi
Depending on libraries you use, it might require you to upgrade pyhthon version to 3.0. Please check the current installed version python --version
and change the version if necessary. (see Use Python 3 section in the sparkfun tutorial)
Quick tip: want to know I2C address of your sensors? Here describes how to scan and find I2C devices on the bus using i2cdetect -y 1
: https://learn.sparkfun.com/tutorials/qwiic-hat-for-raspberry-pi-hookup-guide
SIC chairs would like to thank Evan Pezent, Zane A. Zook and Marcia O'Malley from MAHI Lab at Rice University for having distributed to them 2 Syntacts kits for the IROS 2020 Intro to Haptics for XR Tutorial. SIC co-chair Christian Frisson would like to thank Edu Meneses and Johnty Wang from IDMIL at McGill University for their recommendations on Raspberry Pi hats for audio and sensors.
This documentation is released under the terms of the Creative Commons Attribution Share Alike 4.0 International license (see LICENSE.txt).