This repository contains Python code that interfaces with the robot Durin, built by the Neurocomputing Systems group at the KTH Royal Instititute of Technology. Please note that this is only the reference implementation for our interface. See below.
We require a working Python installation with access to pip. After that, installation is straight-forward:
pip install durin
The interface is meant to be used via Python. More examples can be found in the durin/examples
folder.
from durin import *
# The ip address to Durin is 172.16.223.9X, where X is the number of the robot (1, 2, or 5).
durin_ip = "172.16.223.91"
# This connects to durin and displays a user interface (UI)
with DurinUI(durin_ip) as durin:
while True:
# Get observation
(obs, dvs, cmd) = durin.read()
# Do clever things...
# Move durin 100 units left with 0 forward/backward motion and 0 rotation
command = Move(100, 0, 0)
# Send a command to Durin
durin(command)
# ... this loop continues forever!
# You can exit it on your computer by pressing CTRL+C
The durin.read()
method will give you access to
- An
Observation
from the robot sensors object containing.tof
Time of Flight sensors.charge
Battery charge
- A 640x480 DVS PyTorch tensor
- This tensor has buffered/stacked events since the last
.read()
command. - Note that this is only available if the Durin has a DVS sensor installed
- This tensor has buffered/stacked events since the last
- Replies from the robot, following any
Poll
commands- This is specified in the protocol datasheet below - feel free to ignore
The most important command is Move(x, y, rotation)
. the x
, y
, rotation
values should be in the interval between [-500, 500].
You can interface to the microcontroller (sensor + wheel actuation) and DVS microcamera with TCP and UDP. A complete specification is available via Google Drive: https://docs.google.com/spreadsheets/d/11jD30J00-03ygZ6zJaVTnjJRQKfczT-wMIdBdpYMxD4/edit?usp=sharing
Each robot has two IP addresses - one for the microcontroller and one for the DVS controller.
The robots are numbered 1, 2, or 5. Insert those numbers where X
is written below:
172.16.223.9X
: Microcontroller for sensory data and motor commands172.16.223.10x
: Raspberry Pi for streaming DVS data
Reach out to Juan or Jens if you need anything.