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
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.