Things at work

Well today I had my annual review at work, all went exceedingly well, it was also my contract renewal time which had previously been for 3 years,  man the last three years have flown by.  Anyway I now have my contract renewed for 5 years, along with a decent payrise to boot.

Started work on the shutdown agent, and doing the coding whenever I get some free time at work.  I have my agent displaying an initial GUI with list of server addresses that are currently hardcoded as  beliefs of the agent, and it’s responding to a manual shutdown command from the GUI, that is, it’s executing the shutdown plan (but not actually doing anything atm).  Another goal I’ve setup is to  monitor the UPS battery level, not reading anything yet but it looks like it is executing the goal every 5 seconds, and from this goal it is executing the monitor_ups plan.   Time to start fleshing out the the guts of the plans so the agent can start monitoring and making some decisions.

One problem I’ve come up against is actually bootstrapping my manager Agent which starts everything else from code.  Normally you start the agent container then load the agents ADF (Agent Definition File) into the AMS (Agent Management Service).  I have one manager agent that loads all my other agents (I only have one atm) and it’s working as it should, but I want to bootstrap it from my applications main class so that I don’t have to do it all manually, I just want to click an icon on the desktop.  I know it can be done, just have to re-read the API a bit more deeply. 

Network Shutdown Agent

The last few weeks at work have been shocking with power outages, I think mainly to do with the summer heat ramping up, 38DegC yesterday,  at one site I we have a fairly overloaded UPS that does not stay up for very long, while a new 8500VA is on order, I have decided to write a small agent application to shutdown all our servers at that site in a graceful manner based on a UPS battery life remaining,  i.e. initially all non critical services are shutdown, than as battery life decreases then core servers get shutdown.  The servers are a mix are a mix of Windows 2000, 2003 and of course Linux 🙂  

Now being the glutton for punishment I am, I know there is probably something already out there that will send out a broadcast to shut things down, but always wanting to implement agent based solutions I think this would be a nice project.   

Java – Intelligent Agents

Well it’s been a while since my last post – Sorry about that, alot happening in my life at the moment and unfortunately robotics have taken a bit of a back seat.  Although it’s taken a back seat it has not been forgotten and during this period I’ve been looking at Intelligent Agents using JADE and more importantly JADEX that sits atop of JADE and provides a BDI Agent  BDI – Belief, Desire, Intention.  Actually I had come across JADE a couple of years ago and dabbled with it a little, but then got busy with my job at the time.  By chance I came across the site again and rekindled my interest and how it can be applied to robotics.

One of the cool thing about JADE is the ability for agents to live in any container on a network and work together, that is talking to other agents that perform a particular job to help them in their individual goals.  Agents can also migrate from container to container.   Think of the possibilities, an agent can be monitoring the hardware platform and detects an abnomily then all agents leave the host before it fails completely, pretty cool stuff.  Also using the LEAP plugin for JADE agents they can run on mobile computing, i.e. small hardware footprint, obviously something cabable of  running a Java VM, but still something with a small Memory/CPU footprint. 

What I can envisage here, is an agent based home control system, with all appliances networked, each with their little helper agents.  E.g. the homecontrol agent talks to the mowerbot system and sets a new goal, “mow the lawn”.  The agent on the mowerbot dutifully makes this it’s primary goal.  So off it goes mowing the lawn until that goal is achieved, using it’s beliefs to help it obtain this goal, the goal could be deemed as complete by the the amount of lawn covered/cut etc. The mowerbot agent also monitors the mowing system, battery is getting low, so the new goal that overrides the current goal is go and get charged, so the Agent could now ask the home control agent to turn on the recharge station  beacon so it can locate it, the agents goal then becomes navigate to the recharge station, once recharged, the prior goal comes back into play and the mowing of the lawn continues.  Or alternately a problem occurs and the mowerbot gets stuck, or has a hardware failure.  The Mowerbot agent then communicated this to the home control agent that inturn notifies the occupier by different plans (i.e. email, phone txt etc) that it’s something needs to be done and intervention is required. 

I’m currently playing with JADE/JADEX and writting a helpdesk system based on these agents to help me in my day to day work.

 Helpdesk Agent System