Durin control system
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.
Installation
We require a working Python installation with access to pip.
After that, installation is straight-forward:
pip install durin
Usage
The interface is meant to be used via Python. More examples can be found in the durin/examples folder.
from durin import *
durin_ip = "172.16.223.91"
with DurinUI(durin_ip) as durin:
while True:
(obs, dvs, cmd) = durin.read()
command = Move(100, 0, 0)
durin(command)
Sensory data
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
- Replies from the robot, following any
Poll commands
- This is specified in the protocol datasheet below - feel free to ignore
Commands
The most important command is Move(x, y, rotation). the x, y, rotation values should be in the interval between [-500, 500].
Custom implementation
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 commands
172.16.223.10x: Raspberry Pi for streaming DVS data
Contact
Reach out to Juan or Jens if you need anything.