Skip to content

Raspberry Pi Setup Guide

This guide provides detailed instructions for setting up Ethopy on a Raspberry Pi device.

Initial Setup

  1. Get the latest Raspberry Pi OS (Raspbian)

  2. Configure Raspberry Pi settings using raspi-config:

    1
    sudo raspi-config
    

  3. Enable SSH
  4. Disable screen blanking
  5. Enable Desktop auto-login

  6. (Optional) Change hostname for easier identification:

    1
    sudo sed -r -i s/raspberrypi/<<HOSTNAME>>/g /etc/hostname /etc/hosts
    

  7. (Optional) Change default username:

    1
    2
    3
    4
    sudo useradd -s /bin/bash -d /home/<<USERNAME>>/ -m -G sudo <<USERNAME>>
    sudo passwd <<USERNAME>>
    mkhomedir_helper <<USERNAME>>
    sudo userdel -r -f pi
    

System Dependencies

  1. Install required system libraries:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    sudo apt update
    sudo apt install -y \
        python-dev \
        libatlas-base-dev \
        build-essential \
        libavformat-dev \
        libavcodec-dev \
        libswscale-dev \
        libsquish-dev \
        libeigen3-dev \
        libopenal-dev \
        libfreetype6-dev \
        zlib1g-dev \
        libx11-dev \
        libjpeg-dev \
        libvorbis-dev \
        libogg-dev \
        libassimp-dev \
        libode-dev \
        libssl-dev \
        libgles2 \
        libgles1 \
        libegl1
    

  2. Install Python packages:

    1
    sudo pip3 install 'numpy>=1.19.1' pygame==1.9.6 cython pybind11 scipy datajoint omxplayer-wrapper imageio imageio-ffmpeg
    

Hardware-Specific Setup

7" Raspberry Pi Touchscreen

Install multitouch driver:

1
2
3
git clone http://github.com/ef-lab/python-multitouch ~/github/python-multitouch
cd ~/github/python-multitouch/library
sudo python3 setup.py install

3D Graphics Support

Install Panda3D for Raspberry Pi:

1
2
wget ftp://eflab.org/shared/panda3d1.11_1.11.0_armhf.deb
sudo dpkg -i panda3d1.11_1.11.0_armhf.deb

GPIO Support

Enable pigpio service:

1
2
3
4
wget https://raw.githubusercontent.com/joan2937/pigpio/master/util/pigpiod.service
sudo cp pigpiod.service /etc/systemd/system
sudo systemctl enable pigpiod.service
sudo systemctl start pigpiod.service

X Display Configuration

For running graphical applications via SSH:

1
2
echo 'export DISPLAY=:0' >> ~/.profile
echo 'xhost + > /dev/null' >> ~/.profile

Remote Control Setup (Optional)

If you want to use Salt for remote control:

1
2
3
4
5
sudo apt install salt-minion -y
echo 'master: <<YOUR_SALT-MASTER_IP>>' | sudo tee -a /etc/salt/minion
echo 'id: <<HOSTNAME>>' | sudo tee -a /etc/salt/minion
echo 'master_finger: <<MASTER-FINGER>>' | sudo tee -a /etc/salt/minion
sudo service salt-minion restart

Ethopy Installation

  1. Install Ethopy:

    1
    pip install "ethopy[obj]"  # Includes 3D object support
    

  2. Create configuration file at ~/.ethopy/local_conf.json:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    {
        "dj_local_conf": {
            "database.host": "YOUR DATABASE",
            "database.user": "USERNAME",
            "database.password": "PASSWORD",
            "database.port": "PORT",
            "database.reconnect": true,
            "database.enable_python_native_blobs": true
        },
        "source_path": "LOCAL_RECORDINGS_DIRECTORY",
        "target_path": "TARGET_RECORDINGS_DIRECTORY"
    }
    

  3. Initialize database schemas:

    1
    ethopy-setup-schema
    

Running Experiments

You can run experiments in two modes:

  1. Service Mode (controlled by database):

    1
    ethopy
    

  2. Direct Mode (specific task):

    1
    ethopy --task-idx 1
    

Troubleshooting

Common Issues

  1. Display Issues
  2. Ensure DISPLAY is set correctly in ~/.profile
  3. Check X server is running
  4. Verify permissions with xhost +

  5. GPIO Access

  6. Verify pigpiod service is running: systemctl status pigpiod
  7. Check user permissions for GPIO access

  8. Database Connection

  9. Test connection: ethopy-db-connection
  10. Check network connectivity to database server
  11. Verify credentials in local_conf.json