Anna Pawlicka

Programmer. Hiker. Cook. Always looking for interesting problems to solve.

About | Archive | Talks

Standing position of Bazinga as a new fitness function.

03 Feb 2013 | AI, Aibo, artificial curiosity, reinforcement learning, robotics, sensor, Webots

It turns out that the infra red sensor does not work as I expected. First of all, it interprets lighter shades of various colours as red (e.g. yellow!). I’ve tried to modify the lookup table, but could not find the correct settings. Second, it does not work in fast mode (vital for evolution!). To sum up, it’s not a reliable sensor to be used in fitness function. I will definitely implement the red ball seeking behaviour, but instead of using the infra red sesor, I’ll do some simple camera image processing. However, before I jump into that, I’d like to make the dog move and not jerk in a random manner!

I’ve been thinking of how I could make Bazinga to learn some sensible actions, and I decided to choose its chest distance sensor. It is located 30 degrees towards the ground, facing forward. When Bazinga lies on its belly, the reading is 100, when it lies on its back it’s 900. So the ideal value would be around 300-400 probably, and it would lead to a standing position.

I’ve made some initial trials, but it seems that the joint angles are being set into awkward positions, twisting legs towards the back. I still need to look into the frequency with which population should be evolved, and also decide how to select what motors should be activated given 12 sensorimotor inputs (currently these are 4 random motors).

I will carry on tomorrow..

Older · View Archive (25)

How to add a new sensor to Aibo/NAO simulation in Webots

Most of the robot simulations can be modified by adding Nodes directly in Scene Tree in Webots itself. However, to add a new sensor to Aibo (and NAO), we need to modify proto file.


Q-Learning for Aibo

I’ve been looking more into motor actions and their effect on Servos.  The initial position is always zero. So each time a new action is applied to the motor (we_servo_set_position()), it is interpreted as absolute position. In order to emulate a relative position, I’ll have to store the last value passed to the method, and then just add that value to the newly computed one. Not sure if this will improve my algorithm as it seems that relative position will eventually result in maxing out the joint position.