In the weeks that have passed since I last posted on my work and ideas much has happened in the world of interfacing ACT-R with robots. As of Friday, jACT-R was piloting our in house robot, George. Yeah, there were a few glitches, but damn was it cool. The integration of jACT-R with actual robots and simulated has illustrated many interesting issues with respect to modeling in realtime domains (and I’ll use the softer definition of being able run within a 50ms cycle time on average, not deterministically). I’m thinking about putting together a talk for the ACT-R workshop this year on the topic. Could be interesting.
The test bed has been a social learning model (two actually, otherwise it wouldn’t be very social) of a chimp learning what food is safe to pursue in the presence of an alpha male. It’s quite entertaining. Two robo-chimps enter a space. The dominant will always pursue whatever food it can see and if a subordinate gets too close, the dominant will smack it. The subordinate needs to learn what food is safe to pursue based on distance and its visibility to the dominant. I’ve got the models up and running and interacting with each other in parallel (trivial for jACT-R, but not the Lisp) and the models are actually running faster than playerstage (i.e. they spend most of their time waiting for the simulation to advance the clock and send sensor data). The subordinate engages in perspective taking and can make the critical go/no-go decisions. The only problem is that the dominant has suddenly decided to pacifist on me. It refuses to smack the subordinate.
Much fun. The challenges that this work have presented have resulted in some serious improvements to jACT-R, to the point that I will state outright that I believe jACT-R is the better option if you need to work with real systems. Granted, it’s still not feature complete (compared to the Lisp) and there are still significant gaps in the theoretical validations - but all in all, she’s a fast and easily (and safely) extended system.
One element that I’ve been working on after hours has been a static production analysis tool. It hooks into the model compiler (unlike the Lisp which builds a live model, jACT-R models are entirely declarative and need to be parsed, compiled and built), and examines the possible end states of productions. From this it can generate probable execution paths. If you’ve ever had to read someone else’s model (hell, even your own after a month away from it) you’ll see the obvious appeal of such a tool. This would be particularly useful for inspecting a model after an extended run with production compilation enabled. Those productions can get down-right strange after enough time. I’m hoping to have a function GUI for this beast to show this summer. Hopefully I’ll be doing a tutorial at the ACT-R workshop to introduce folks to the whole system. A coming out party, if you will.
Anyway. Now back to the barrel and inject some aggression into those monkeys.