In 2010, I designed a robot that can be remotely controlled over the internet. I named it Nestor, after the butler from the Belgian comic book “Tintin”.
The current version of my robot, which took around one year to design and build (in 2016), is 3D printed and fully reproducible. Based on the Raspberry Pi (RPi) single board computer, it is remotely controlled using a home made and open-sourced tool called NestoRPi Engine.
I wrote this tool in a generic way, making it easy to adapt to many kinds of use cases on the RPi (not only robots!). It can handle multiple devices through the GPIOs and provide and Web User Interface to control them. Finally, it supports the RPi GPU hardware encoder (using MMAL) as well as WebRTC to povide a very low latency video (below 200 ms) in high quality (H264 1080p 30 fps).
The robot is equipped with 8 motors, a speaker, a sound amplifier, and an LCD screen.
Other features include input devices, such as:
- A camera and a light
- A microphone
- A speaker with a voice synthesizer
- Ultrasound sensors (to determine the distance to objects in front of it)
- A photoresistor sensor (to measure light intensity)
- Rotary encoders (to control the speed of the motors)
In addition, the robot features a mechanical arm fixed on top, which can be raised and lowered, allowing the “hand” to pick up small objects. When the battery is low, the robot can easily and remotely plug in to a docking station.
Users can interact with the robot thanks to a web interface based on WebRTC technology. This technology, along with data channels, is used to provide a very low latency access for streaming audio, video, and commands, even when internet connection is slow.
A video of the robot is available (click on the thumbnail to play it):
Another video with a hacked RC car using the NestoRPi Engine:
A last one showing the Web User Interface:
A Powerpoint presentation:
An article from the Scality's online magazine:
The engine is mainly written in C++.
- 10 000 LOC C/ C++ / JS
- H264 hardware encoder / decoder support for very low latency (below 200 ms)
- Command latency: < 20 ms between Paris and Bordeaux (fiber internet connection)
- Engine: cross compilation from RPi0 to 4
- Web UI: compatible with Chrome / Firefox / Safari. Tested on Windows / Linux / Android / Android TV
TODO: The user manual