Changed state to record distance from object to hand, angle between, and distance from mouth to hand, angle between.
Generalise function was incorrect, so have almost written up a new one.
Changed state to record distance from object to hand, angle between, and distance from mouth to hand, angle between.
Generalise function was incorrect, so have almost written up a new one.
Note: looping schemas problem; new arm indicator; improvements to learning mechanism; etc.
Found some problems: if nothing changed between state one and state two of a schema it could cause problems so they can no longer be added … other stuff.
Can now suck objects as well as hand. Fixed some stuff in the learning mechanism.
Things are working better now anyways.
The schema, instead of recording upper and lower arm angles, now records the distance from hand to object [or mouth] and the angle between arm origin to hand and arm origin to object. It all seems to be working quite well, the aim of this was obviously so that the infant can learn to grab ANY object regardless of position (relative to object, rather than with absolute positions).
The grabbing is obviously back in, so that took a bit of work and rejiggling and generalising of some older functions explicitly naming target schemas. The target schemas are now stored in an arraylist instead.
Working out the relative arm stuff was a bit of a bitch, but hey - it seems to be working. Kick ass.
Oh, the eye and fovea both automatically track an object if the arm moves it, which looks cool …
Today was a commenting, tidying, and simplifying day.
I want everything to be clean before I start doing the next part.
I fixed up some of the main schemas, like Response [lots of random crap in that class for no reason, hashtable of responses, boolean values, wtf?]. Same with some other classes.
Moved indicators from mainbody to background.
Removed interest rate from schema.
MainBody, Processor, and Background are now in Const.
The activelist is now GONE: why was it ever necessary?
Targetschema is also gone.
Changed … lots. Info is in a file called “prolbemoseee.txt” on my desktop. Or is it, “WERONG.txt”. One of those.
… and it all comes back to you!
I’ve made some changes with functionSix() and functionSeven() regarding storing the schema that the learning mechanism is aiming for at this point and other tweaks in those methods.
I’m sort of frightened to see if it has helped at this early hour.
Todays code changes:
I did some other stuff too, changes in the learning mechanism that I can’t remember what I did. I think I found a couple of little problems and added some tweaks.
The eye and fovea still seem to be generating some strange results … schemas appearing far away from the target, and at random points, some disappearing after a length of time.
Tomorrow’s the day.
The problem appears to have been with delta values.
I’ve been using one delta value for fovea, one for eye, and one for arm.
However, the same delta value shouldn’t be used to compare one fovea distance with another fovea distance, as should be used to check whether the fovea is over an object or not. I recon if I play around with these values for a while things will start kicking ass.
Fixed a problem with the fovea moving slower as it was further away from the eye. It turns out the problem is that the fovea mass increases as it moves out, and therefore the constant force wasn’t enough to move it at the right pace. I’ve fixed this by fixing the acceleration and not the force (F = ma).
Rewrote the equals() and contains() methods for a Response, State, Schema, and some other things as the standard methods wouldn’t work correctly.
Added a visual eye meter and fovea meter, and breakdown of library contents on screen too.
Last night I made some improvements with the algorithm used to detect whether an object is on the line of sight, and tweaked a couple of other things (e.g. movement speed and length of eye).
I let it run for a while and it actually seemed to learn what was what … until it started flapping away in a corner somewhere [learned], so todays issue is to sort that out!