Alan brings a different perspective to this show by providing insight on what it means to apply the knowledge technologies to embedded systems, where the architectural eco-system is quite different from that of workstations or servers. I am glad about this – it’s through the same path that I personally came to AI (embedded distributed diagnosis systems for distributed vehicle applications – tough, tough issues).
Leveraging CLIPS and later Java technologies, Alan created systems for Cal Poly (architectural CAD integrated with a distributed network of KB experts), Intel Smart-TV (short lived set-top box with user-behavior driven adjustments), Ten Square (that Alan describes as Groupon-meets-Facebook, an interesting combination…). Some of the challenges Alan faced in those projects:
- conflict resolution is a challenge
- modeling user behavior is hard
- limitations on the client device (for example, gas pumps do not really have a lot of processing capabilities)
The most relevant application Alan presented is the embedding of a rules engine to provide device control, enhanced data collection and device calibration – the device being a spectrometer. In essence, the implementation was based on a concurrent state machine where the rules specify the state transition conditions. The rules implementation was based on Jess, and leveraged code generation.
His key problems with these implementations related to the mix of Java and C++, and the challenges in debugging the resulting system.
At his current company, Alan works at a company manufacturing video equipment. He enumerated a number of embedded knowledge technology possibilities
- dynamic configuration
- feature control
In my experience, applying standard rules engine technology to embedded systems with hard real time requirements – an area we did not really go into in the talk – presents additional challenges. For example, many of those systems do not leverage preemptive scheduling but cooperative scheduling, which means that the rules processing needs to fit a model where strict control on what happens on each scheduled cycle needs to be maintained. The way rules get created, managed and executed in this case is quite different – translations to lookup tables, etc are quite frequent.
Another interesting subject.