# PepperPlus-RI The robot interface is a high-level API for controlling the robot. It implements the API as designed: https://utrechtuniversity.youtrack.cloud/articles/N25B-A-14/RI-CB-Communication. This is an implementation for the Pepper robot, using the Pepper SDK and Python 2.7 as required by the SDK. ## Installation ### Linux (or WSL) Start off by installing [Pyenv](https://github.com/pyenv/pyenv?tab=readme-ov-file#installation) and walk through the steps outlined there (be sure to also add it to PATH). Also install the [Python build requirements](https://github.com/pyenv/pyenv/wiki#suggested-build-environment). Afterwards, install Python 2.7 and activate it for your current shell: ```bash pyenv install 2.7 pyenv shell 2.7 ``` You can check that this worked by typing ```bash python -V ``` Which should return `Python 2.7.18`. Next, `cd` into this repository and create (and activate) a virtual environment: ```bash cd / python -m pip install virtualenv python -m virtualenv .venv source .venv/bin/activate ``` We depend on PortAudio for the `pyaudio` package, so install it with: ```bash sudo apt install -y portaudio19-dev ``` On WSL, also install: ```bash sudo apt install -y libasound2-plugins ``` Install the required packages with ```bash pip install -r requirements.txt ``` Now we need to install the NaoQi SDK into our virtual environment, which we need to do manually. Begin by downloading the SDK: ```bash wget https://community-static.aldebaran.com/resources/2.5.10/Python%20SDK/pynaoqi-python2.7-2.5.7.1-linux64.tar.gz ``` Next, move into the `site-packages` directory and extract the file you just downloaded: ```bash cd .venv/lib/python2.7/site-packages/ tar xvfz /pynaoqi-python2.7-2.5.7.1-linux64.tar.gz rm /pynaoqi-python2.7-2.5.7.1-linux64.tar.gz ``` Lastly, we need to inform our virtual environment where to find our newly installed package: ```bash echo /.venv/lib/python2.7/site-packages/pynaoqi-python2.7-2.5.7.1-linux64/lib/python2.7/site-packages/ > pynaoqi-python2.7.pth ``` That's it! Verify that it works with ```bash python -c "import qi; print(qi)" ``` You should now be able to run this project. ### macOS Similar to Linux, but don't bother installing `pyenv` as it won't be able to install Python 2 on Apple Silicon. Instead, install Python 2.7.18 from the [Python website](https://www.python.org/downloads/release/python-2718/). Create the virtual environment as described above in the Linux section. Stop at the point where it shows you how to download the NaoQi SDK. Instead, use: ```shell curl -OL https://community-static.aldebaran.com/resources/2.5.10/Python%20SDK/pynaoqi-python2.7-2.5.7.1-mac64.tar.gz ``` Then resume the steps from above. ## Usage On Linux and macOS: ```shell PYTHONPATH=src python -m robot_interface.main ``` On Windows: ```shell $env:PYTHONPATH="src"; python -m robot_interface.main ``` With both, if you want to connect to the actual robot (or simulator), pass the `--qi-url` argument. There's also a `--microphone` argument that can be used to choose a microphone to use. If not given, the program will try the default microphone. If you don't know the name of the microphone, pass the argument with any value, and it will list the names of available microphones. ## Testing To run the unit tests, on Linux and macOS: ```shell PYTHONPATH=src pytest test/ ``` On Windows: ```shell $env:PYTHONPATH="src"; pytest test/ ``` ### Coverage For coverage, add `--cov=robot_interface` as an argument to `pytest`. ## GitHooks To activate automatic commits/branch name checks run: ```shell git config --local core.hooksPath .githooks ``` If your commit fails its either: branch name != /description-of-branch , commit name != : description of the commit. : N25B-Num's ## Documentation Generate documentation web pages using: ### Linux & macOS ```bash PYTHONPATH=src sphinx-apidoc -F -o docs src/robot_interface ``` ### Windows ```bash $env:PYTHONPATH="src"; sphinx-apidoc -F -o docs src/control_backend ``` Optionally, in the `conf.py` file in the new `docs` folder, change preferences. In the `docs` folder: ### Linux & macOS ```bash make html ``` ### Windows ```bash .\make.bat html ```