180 lines
4.4 KiB
Markdown
180 lines
4.4 KiB
Markdown
# 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 <path to project>/
|
|
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 <path to SDK>/pynaoqi-python2.7-2.5.7.1-linux64.tar.gz
|
|
rm <path to SDK>/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 <path to project>/.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`.
|
|
|
|
|
|
|
|
## Git Hooks
|
|
|
|
To activate automatic linting, formatting, branch name checks and commit message checks, run (after installing requirements):
|
|
|
|
```bash
|
|
pre-commit install
|
|
pre-commit install --hook-type commit-msg
|
|
```
|
|
|
|
You might get an error along the lines of `Can't install pre-commit with core.hooksPath` set. To fix this, simply unset the hooksPath by running:
|
|
|
|
```bash
|
|
git config --local --unset core.hooksPath
|
|
```
|
|
|
|
Then run the pre-commit install commands again.
|
|
|
|
## 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
|
|
```
|