Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
  • Sign in / Register
nestorpi_engine
nestorpi_engine
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 0
    • Merge requests 0
  • Requirements
    • Requirements
    • List
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Franck TALBART
  • nestorpi_enginenestorpi_engine
  • Wiki
  • Home

Last edited by Franck TALBART Oct 01, 2020
Page history

Home

Welcome!

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.

Demo

Source code

A video of the robot is available (click on the thumbnail to play it):

Alt text

Another video with a hacked RC car using the NestoRPi Engine:

Alt text

A last one showing the Web User Interface:

Alt text

A Powerpoint presentation:

Presentation link

An article from the Scality's online magazine:

Article link

The engine is mainly written in C++.

Strength:

  • 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

Doxygen link (develop branch)

Releases

Git branching model

Build history

TODO: The user manual

Clone repository
  • Home