Description
    Driven by the desire to have a morning coffee cup delivered right to bed by the time the alarm sets off, this little delivery bull named Taurus travels around apartment in search of the shortest path between the coffee machine and the bed. The problem is that it first requires to learn navigational skills, to recognise objects around him and then determine the set of actions: reach the first destination with coffee, grab the cup with hot coffee and then deliver the package to the second important destination.

    When he grows up Taurus wants to meet other autonomous robots including those with many manipulators and cooperate with them to execute more complex tasks like building colonies, music improvisation performances, or saving operations in human-free environments (hazardous, anoxic atmosphere of alien planets or cosmic objects, etc.), or make friends with drones and together launch to an alien planet in a great discovery journey.
    Taurus already can recognise his human friends and knows how to behave under human's control but still gets lost in unfamiliar environments. He can't wait to learn how to orient, and navigate using his own camera. Longs to get a mechanical manipulator, and secretly wishes all the cups and walls in the world had clear borders and NFS marks, but thinks he'll overgrow it someday.

Taurus's life components:
  • Raspberry Pi 4 B+
  • Ubuntu Server 64 bit
  • OpenCV
  • Main Java program running on Raspberry Pi
  • WiFi connection
  • (Optional) User's remote control program
Some videos with testing
Functional modules
Core program
Initialises configurations from file: set of I/O pins and types of manipulators, web-services/processes to start at boot. Maintains processes queue - received commands, linked to their corresponding execution Java class, and launches processing.
Web-service: message chat
Chat server. Messages are broadcasted to all connected participants.
Web-service: remote commands receiver
Receives commands, links to corresponding Java class with execution logic and put them to the execution queue.
Web-service: remote movement control receiver
Receives commands to control movement: forward, backward, turn left, turn right.
Web-service: video streaming
Streams video by request. Video feed is obtained using library OpenCV and includes trained model for face recognition. Per configuration adds face recognition rectangles.
General purpose I/O pins native library
Own native library for I/O pins control, uses Unix's FS as basis. Written on C with Java binding.
Photo gallery

Powered by nucleusfox's brain.