Embodied AI / multi-modal AI. Specifically I've been working on a hardware device - nicknamed "Bosworth" - that will be packed with sensors of various sorts:

- a GPS receiver

- a 9-DOF magnetometer/accelerometer/gyroscope board

- temperature sensors

- microphones

- cameras

- etc

and a processor, which can sense the physical world, and - possibly - facilitate learning in a manner somewhat akin to the way an infantile human learns. All of this is rooted in my belief that while embodiment may not be strictly necessary for AGI, it is probably very useful. And the reason I believe that is because I believe an awful lot of our early development is experiential and rooted in experiencing the physical world. That is, we develop our naive / intuitive understanding of physics ("there is up/down and if I drop something it falls") and our naive metaphysics and epistemology of the world ("there are objects and objects persist even when I can't see them briefly", etc) through what we see and hear and feel. So I want to try to simulate that aspect somewhat, but without necessarily going "full robot". That is, my current hardware platform can sense, but it isn't ambulatory and it doesn't currently have any ability to manipulate or affect anything in the physical world, except by generating noise (speech) and possibly by blinking LED's.

Anyway, the GPS stuff is all setup and now I'm working on code for the accelerometer board. I'm using one of those Adafruit BNO055 boards for that. Currently working on getting the sensor readings off of it using I²C.

At present the model has individual code modules for the various sensor types, and new sensor events go to two places:

- sent via MQTT to persistent storage on a server. This is to facilitate pos-hoc analysis, off-line training of ML models, and possibly replay scenarios.

- turned into a percept and sent to a "percept queue" using ActiveMQ. This all happens on the processor (a Raspberry Pi) embedded in the hardware platform.

Then code modules listen on the percept queue for incoming percepts and then react. The initial idea is to use a very SOAR like "cognitive loop" as the primary "thing" that listens and responds to the percepts. But that will probably change over time.

Very likely it will eventually turn into something inspired by a combination of things:

- the old blackboard architecture approach

- Minsky's "society of mind" stuff

- the BDI (Beliefs-Desires-Intentions) model

- etc.

Not to mention, of course, elements of very contemporary approaches to Machine Learning - Deep Neural Networks, Reinforcement Learning, etc.

When I get to the vision and audio stuff it gets more interesting because there will need to be more initial processing of the audio and video streams, and more front-end intelligence to decide what counts as a "percept". I mean, you wouldn't send every video frame or every audio sample. So now you get into figuring out what kind of delta counts as a "change" that's worth of generating a percept and possibly attracting the attention of the system. And now you get into the multi-modal part, because think about how human interactions work. If you want someone's attention you may approach them and say "excuse me", OR you might approach, say "excuse me" AND tap them on the shoulder, etc. So attention might involve physical touch, sound, vision, etc. all combined. So lots of interesting stuff to explore around how to deal with all of that.

An interesting aside to this is that I get to give Bosworth senses that humans don't have. For example, with the GPS board, Bosworth can "know" its location on the surface of the Earth to a fairly reasonable level of precision, at all times, even if blindfolded and transported elsewhere. Likewise it will know the precise time at all tims. And Bosworth will also "know" which direction magnetic north is at all times, and its velocity, etc. Now, will having those abilities be useful, or will this just confuse the issue? Who knows? But exploring that is part of what makes this fun.