"On the way to AliveOS" or "making of a robot with emotions is harder than I thought"

So, indeed, the more I develop the software for Zakhar, the more complicated it goes. So, first: Contributions and collaborations are welcome! If you want to participate, write to me and we will find what you can do in the project. Second, feature branches got toooooo huge, so I’ll use the workflow with the develop branch (Gitflow) to accumulate less polished features and see some rhythmic development. Currently, I’m actively (sometimes reluctantly) working on the integration of my EmotionCore to the Zakhar’s ROS system.

EmotionCore - 1.0.0

First release! The aim of this library is to implement an emotion model that could be used by other applications implementing behavior modifications (emotions) based on changing input data. The Core has sets of parameters, states and descriptors: Parameters define the state of the core. Each state has a unique name (happy, sad, etc.) Descriptors specify the effect caused by input data to the parameters. The user can use either the state or the set of parameters as output data.

Updated draft of the ROS-node network with the Emotional Core

Working on the Emotion Core update it became clear to me that placing responsibility of emotional analysis to Ego-like nodes (a Consciousness, Reflexes, and Instincts) is a wrong approach. It leads to the situation where the developer of the application should specify several types of behavior themself, which is too complicated for development. I want to implement another approach when concepts themselves contain information about how they should be modified based on a set of the emotion parameters.

Draft of the updated ROS-node network with the Emotional Core

Complexity of the networks is getting increased in a non-linear manner with any new type of node added, so documentation of the development is becoming more crucial than ever. So, I’ve decided to, firstly redraw the network diagram to make it easier to read and contain more useful information. Then I’ve spent some time on how the Emotional Core should interact with other nodes. Initially, I thought that naming each condition based on a set of emotional parameters is a clever idea.

Update of the ROS-network

Hi! I merged a huge update for zakharos_core - the main part of the Zakhar project. The repository is a Robot Operating System network where the main application consists of ego-like nodes: the consciousness (the main application) and instincts (interruptions). Each of them operates with concepts in the manner as our mind works. As I already said, my aim is to make a robot that behaves like an animal, and hence having more understandable for the user behavior.

Hardware structure

Just added illustrations describing hardware used in the project to the repository:


Here are the pictures:

And detailed for each device:

First test of the second instinct for Zakhar

Testing of the mind of Zakhar with two “instincts”:

  1. If a bird-like shadow above him, he expresses anxious and hides

  2. If any obstacle in front - move back

New test site!

Just finished a new site for tests and demonstrations! New place, new hardware, more updates soon!

Three Ultrasound Sensors

Unfortunately, I broke my ultrasound sensor during resoldering of connectors. Taking advantage of necessity of buying something, I’ve bought three new ones! Updated code with a new ultrasound sensor driver: https://github.com/an-dr/zakhar_sensors/tree/c4e7a5e5c91acbbc1efdaaa4122e46428793c973

Sensor Platform with STM32

Done! Now sensors data is collecting by a powerful STM32 MCU with FreeRTOS. This will help adding even more sensors. For now, there are two: Ultrasonic Distance Sensor - HC-SR04 KY-018 Photoresistor Module Here is a video of the update in action: Links: Updated source code with STM32 support Repository of my SharedVirtualRegisters library that I used in the update - it is thread-safe and supports FreeRTOS, but can work without any OS as well Repository of the logging library - it is a fork of the log.