FRDCSA | internal codebases | Verber

[Project image]

Architecture Diagram: GIF
Code: GitHub

Jump to: Project Description | Parent Description | Capabilities

Project Description


According to the U.S. Army Survival Manual, it is necessary to develop a "pattern of survival". People do this with various degrees of success. Software that addresses these issues has real world applicability.

Advances in open source temporal planning technology make possible the creation of many useful real world planning domains. We demonstrate one such domain which necessarily utilizes many of the features present in PDDL2.2. This includes numeric quantities, durative actions, and derived predicates.

By leveraging this planning software, and integrating this planning domain with a dialog and execution manager agent using open source speech recognition and text to speech tools, we demonstrate an effective open source tool for time management and planning.


Here is the modest first (anonymized) plan generated by Verber for buying groceries. It was mainly to serve two needs, to get integration with other modules smoothly, and to help me get to the store. It uses actual bus data generated by the BusRoute Verber module. I am working on developing query planning domains, to plan the generation of sub-domains from modules as needed. The intention is to increase the coverage of the domain to such an extent that virtually all tasks in day to day life are completely scheduled.

      Plan computed:
      Time: (ACTION) [action Duration; action Cost]
      19.2500: (RIDEBUS USER BUS-71D-51 CULMORE-AND-DERRY HELMSHIRE-AND-BROOKS) [D:0.0000; C:1.0000]
      19.2500: (BUYGROCERIES USER FORBES-AND-MURRAY) [D:1.0000; C:1.0000]
      20.2500: (RIDEBUS USER BUS-71D-52 HELMSHIRE-AND-BROOKS CULMORE-AND-DERRY) [D:0.0000; C:1.0000]

Here is an ancient plan.

      Plan computed:
      Time: (ACTION) [action Duration; action Cost]
      0.0000: (MOVE ANDY CS-LOUNGE DOHERTY-LOCKER-161) [D:0.1500; C:2.0000]
      0.1500: (PICK-UP ANDY LAUNDRY DOHERTY-LOCKER-161) [D:0.1000; C:1.0000]
      0.2500: (MOVE ANDY DOHERTY-LOCKER-161 FORBES-AND-CHESTERFIELD) [D:0.1500; C:2.0000]
      0.4000: (SET-DOWN ANDY LAUNDRY FORBES-AND-CHESTERFIELD) [D:0.1000; C:1.0000]
      2.5000: (MOVE ANDY FORBES-AND-CHESTERFIELD BAKER-LOCKER-18) [D:0.1500; C:2.0000]
      2.6500: (PICK-UP ANDY ELECTRIC-RAZOR BAKER-LOCKER-18) [D:0.1000; C:1.0000]
      2.7500: (PICK-UP ANDY TOWEL BAKER-LOCKER-18) [D:0.1000; C:1.0000]
      7.0000: (MOVE ANDY BAKER-LOCKER-18 UC-GYM) [D:0.1500; C:2.0000]
      7.1500: (SHOWER ANDY TOWEL UC-MENS-LOCKER-ROOM-SHOWER UC-GYM) [D:1.0000; C:1.0000]
      8.1500: (MOVE ANDY UC-GYM BAKER-LOCKER-18) [D:0.1500; C:2.0000]
      8.3000: (MOVE ANDY BAKER-LOCKER-18 DOHERTY-4201) [D:0.1500; C:2.0000]
      8.4500: (SET-DOWN ANDY ELECTRIC-RAZOR DOHERTY-4201) [D:0.1000; C:1.0000]
      8.5500: (CHARGE ELECTRIC-RAZOR OUTLET0 ANDY DOHERTY-4201) [D:12.0000; C:1.0000]
      20.5500: (PICK-UP ANDY ELECTRIC-RAZOR DOHERTY-4201) [D:0.1000; C:1.0000]
      20.6500: (MOVE ANDY DOHERTY-4201 FLAGSTAFF-HILL) [D:0.1500; C:2.0000]
      24.0000: (SHAVE ELECTRIC-RAZOR ANDY FLAGSTAFF-HILL) [D:0.2500; C:1.0000]

This software aims to improve our ability to reason with the objective consequeunces of our actions, which is of course necessary in order to act morally and ethically.

So the possiblity of incorporating plans which are very robust is something we should certainly do here since this improves the results and utility of any planning process, and is in a certain sense the entire reason we wish to do this.

The system is named after the late Senior Chess Master Richard Verber, in the spirit illustrated by this quote:

"After losing a game to the master, Jermaine Bush realized that Verber had controlled the outcome from the opening move. This was a mastery that the boy yearned for - both in his chess playing and in his life. Yeah, he thought, control!"

Verber already incorporates many important features. It has support for plan cycles, launching code as a result of a planning action, domain microtheories, visualization, and an interactive execution monitor/dialog system. It is easy to incorporate other systems and considerations into verber, simply by specifying a verber module consisting of a pddl file and programmable actions. Ultimately, HTNs will be exported from PSE to Manager/Verber and almost all activities will be guided using this combination, with monitoring sending results to RSR to measure goal accomplishment.


  • Investigate what added the has-formalization assertions to Org::FRDCSA::verber::PSEx2::do.
  • Possibly create a separate interface for FCMS for FLUX, as the verber one won't necessarily fit.
  • FreeLifePlanner - verber - https://developers.google.com/transit/?hl=en
  • For the IEM of verber, use this methodology from HierarchicalSearch-AIIDE-2014.pdf: "In an actual bot playing in a tournament, we would have a current plan that is being executed, and a background thread searching for a new plan. Whenever the current plan is deemed illegal, we would switch to the latest plan found. If that plan is illegal, or if the search for a new plan hasn’t finished, we would fall back to another algorithm, such as Alpha-Beta, UCT, or Portfolio Search."
  • look into using Interactive Fiction Mapper with verber/inform7/normal-form etc
  • For verber and the life planner and the execution monitor and execution-engine, there should definitely be a bunch of agents monitoring the situation and trying to work things out from it, such as unforeseen stuff. For instance, could have a video card dedicated to it. Short term contingency planning.
  • Consider replacing the internals of verber's module system with Flora, so it can infer answers etc programmatically.
  • The verber system should try to plan for "one day more"
  • Fix verber screwing up with tab.
  • Investigate why LPG-td and verber aren't working for any other plan type besides -speed
  • Have to write tests for the inclusion system for verber.
  • Get used to the idea that although we want to make a flexible system, I am still going to have to do a ton of programming. What exactly to program is difficult though, because we might get bogged down in a particular system, like verber - and not have a correct picture of the relation of that particular project to the overall goal. What is needed is to locate and package existing useful systems, write some code, and rerelease a tarball and package.
  • verber should have "contingent planners"
  • Add something to the rayon-load-windows, and verber similar thing to choose which file to load from among several options (such as what-to-do.flr and frdcsa.flr).
  • Maybe start recording why we made different emacs-key-bindings, like 'C-crev because v is for verber and C-cre X is for jumping to files'.
  • Develop a library that can import verber's planning capabilities into a program.
  • Setup unit tests in order to test verber so that it solves various situations.
  • Backport those changes I made to verber to allow us to follow function calls in code much faster.
  • Be sure to incorporate Eclipse's Mylyn into verber/pse
  • Develop an Eclipse interface for pse/verber
  • Write a verber module for study
  • Maybe verber should be able to fully parse domains.
  • Write a module for verber for google maps/transit
  • manager or verber should have a "keep the airplane flying" mentality in terms of providing a certain service level.
  • verber should learn what type of PDDL features get in the way of the systems.
  • Need to agentify manager and have him running. He will conduct verber.
  • In thinking it over, although I want to get verber going, I don't think it is as critical as getting something that determines what the critical path is, i.e., getting pse/score fully operational, to the point where we can assert that things have been done. I don't know that we need to get it to the point where it classifies new items, but that we can specifically annotate existing ones.
  • The main advantage of verber is the complex layout reasoning. But to even know what to include into verber depends on pse, so maybe we should focus on that, but, on the other hand, leaving the verber interface open will complicate the development of pse, so perhaps instead should focus on verber. This is just like the Todd Freitag game where he had analysis paralysis.
  • Just now, right after having completely written this part of verber, it dawns on me that everything would be better written by using an EBNF, that way I can support arbitrary languages more easily, which is advantageous for the planner.
  • I need a system that answers questions like: which systems are using "verber::Ext::PDDL"
  • The priority system should be related both with verber, and...
  • That's something I'm not good at, so after get verber up and running, get RSR
  • What I am doing here with verber makes more sense.
  • I'm starting to think verber should encase its stuff more in persitent objects than in anything else.
  • I hacked verber to death today.
  • I just realized something pretty cool - the problem I am having with verber is the same for the chess program.
  • verber should learn what type of PDDL features get in the way of the systems.
  • verber can use ARMS for plan recognition.
  • verber must use GIPO
  • Develop a simplified version of verber
  • Should verber really be file based?
  • Our planning system (verber) should have BDDs, for conformant planning or the like, and as new things happen, it should just change the current plan to that tree of the BDD so to speak.
  • verber has to deal with problems that got out of control, such as not emptying garbage, or things that have never been scheduled before.
  • manager or verber should have a "keep the airplane flying" mentality in terms of providing a certain service level.
  • Ultimately, verber does not have the technology to handle everything, so what do we do then?
  • Ultimately verber does not have the technology to handle everything, so what do we do then?
  • This thing I've made for Sorcerer sure looks useful, it is being used in Sorcerer, broker, should be used in job-search, and could be used in busroute, clear, corpus, critic, cso, digilib, and verber.
  • audience needs to interface with verber, and specifically, do conformant planning over communication acts.
  • I can see now long chain events like Something happening -> verber -> event-log -> audience -> machiavelli -> audience -> (internet) -> etc.etc.etc.
  • Normal-Form: be able to export to verber.
  • When verber can't figure out how to contact someone, to tell them what to do, should contact me and ask for help.
  • Should come up with verber domains for the event.
  • Before interrupting me, if there is a time period in which verber can wait, verber should wait until I display a sign of idleness. That also means that if something is coming up, and verber detects uncharacteristic (hopefully) idleness, it can jump in ahead of time to comment.
  • audience needs to have a verber module for contacting people with respect to verifying agreement on various things.
  • I can't wait until verber is operational to the point where I do get a good schedule out.
  • The system can automatically determine which functions it needs to optimize based on which ones are taking too much time. For instance, if in query planning results in generating busroute tables, and busroute takes a long time to do this, verber's learning component would then determine that this is taking a long time and automatically add a goal to optimize that.
  • verber should compile domains before loading them, right?
  • verber could probably use vampire for something.
  • verber should test that the user is thinking by giving them intentionally erroneous plans from time to time.
  • It may be a good idea to release verber to the planning community.
  • verber should check the legality of actions against the law.
  • Just had an idea about how verber can make use of the rules - simply index according to which rules apply at the moment.
  • If I am going to go homeless, I am going to need RSR and verber functioning. Which means, I ought to work some on these two.
  • If I ever need to - here is a great survival plan. RSR, verber, audience, etc must be functioning. Bury all my important belongings except for necessities - as planned by verber. Then, having maybe one system hopefully a laptop, leave town with enough money and possibly a bike, and move to an area where there should be lots of low paying jobs (walmart, etc.)
  • Knowing how long events take should also help verber decide when to schedule the bus. if a personal assistant goes with the person, then it can pace them.
  • verber should do contingency planning - for instance if the person misses their bus or the bus doesn't come.
  • Need to add a usability verber module to gourmet - but have other usability aspects as well.
  • Related to verber.
  • Obviously verber is concerned with what is known as query planning in the creation of its domains - i.e. it can query then execute the submodules to provide information to it correctly.
  • Another idea is that verber::manager should take care to know all the different types of interfaces that the user may be interacting with it, and scale down to these. For instance, there is full computer, bidirection speech, TTS and keybrd entry, yes/no, all the way to none - just memory - etc,etc. verber should have special planning domains for which devices will be used at what times and how the plan data will be transferred.
  • verber can predict based on historical trends when the user will get hungry, have to go to the bathroom (taking into account the associated rules there like after waking up one needs to go), and code these as "at" events in the init section of problems.
  • It could use the verber-cyc-normalizer
  • It occurred to me just now it would not be hard to write a general purpose interface to verber which interacted with people in order to extract the correct PDDL description of events, etc, they wish to join.
  • Should set verber up to do that stuff like "verber -t laundry" to launch a task like doing launch. We need a task hierarchy from pse or something. There are certain tasks that are repeatable and we should usually have those in verber.
  • I should also get verber working to the point that it can do this stuff where I wake up, etc. That would be nice.
  • verber should know that after waking up people usually have to go to the bathroom.
  • To get shelter I need to finish gourmet and verber.
  • In order to get verber operational we should begin executing basic actions, not entire plans. For instance it should schedule the laundry, by launching it with verber -w laundry, etc. Also, since we don't have the interactive system, it should have the detached operation mode working - i.e. where it informs you of the steps to do and then return.
  • Should incorporate resource consumption reasoning within verber i.e., how many wearable pairs of clothes do I have and therefore when do I need to do laundry.
  • pse or verber should keep track of which goals are currently scheduled by verber, and which have been completed.
  • Some verber specific items here: we want to write a system that if the current plan has to be aborted - will know what changes have taken place in the world model.
  • verber should have a non-interactive mode of operation, where it simply generates a schedule, and at the end of the cycle, or the next time you are around.
  • We will get verber's type system from OpenCyc for the time being.
  • Modplan is an important system that we should look into for verber.
  • When one eats, one may have to go the bathroom afterwards - verber should take note.
  • By verber.
  • verber should compute your finances and warn you.
  • Justin pointed out that verber or whatever should also factor in user motivation in preping them for activities.
  • should be able to simply tell manager what time you need to be at work, and using verber, etc, manager schedules the bus, and the wake up time, then wakes you up, does all morning activities, informs you of time critical events (busride, etc), and drives you into work. This is one of the best examples of weak AI growing I've done yet. That's non-trivial, but major issues remain.
  • Here is where verber must do what ifs- what happens if I do not do this?
    ("belongs-to" "2721" "verber")
  • Maybe this complex visualization that I do where I wakl thorough the whole day is what I should do every day, selecting whether I did everything in sequence, verber can also plan for everything and many things may be executed from memorization.
  • verber may incorporate learning algorithms to learn what options lead to good results, as in the Sparc system.
  • Maybe corpus could handle formalization of everything - from verber and pse entries to?
  • formalize old todo lists into verber.
  • RSR can take as input for productivity output from pse/verber.
  • Then play around with the opencyc planner and get it to generate some simple plans. Add this functionality to verber.
  • verber needs to deal with models differently.
  • Perhaps RSRs event system could also help out verber.
  • verber AND Predator should ask the user about what bad habits they engaged in. For instance, while packaging conceptnet, I did a whole bunch of bad things. RSR would be quite ideal at recording this!
  • verber needs to ask to ensure that my headphones are on before it talks about classified subjects (so that it doesn't say them outloud).
  • Must fix bug with verber where it doesn't listen
  • Secondly, I need verber to start doing "mission" or "operation" planning. This obviously entails another system.
  • Use verber to ammortize routine commands, for instance, as a bunch of commands are supposed to be executed, pending the user's permission, plan them so that they may be started with one fell approve commands thing, and also have estimation of how serious these commands are.
  • verber should have UI functions for adding chores
  • Speech generation for verber would be nice.
  • Frequently the user and verber must disconnect contact. At times like these, verber should make special effort to create a compact plan to tell the user. For instance. We are going to disconnect momentarily. First, please get in bed with your headphones on, and verify that you can hear me. If you can't come back, otherwise, I will resume communication.
  • verber should have the ability to determine which requirements are being taken care of. For instance, "(be sure to take out trash)".
  • Dear Mr. Oberweis, I have always thought that what you did to encourage my chess and others was one of the most significant factors contributing to my success as I perceive of it. I have dedicated a major component of my AI system to Mr. verber, because it was the game of chess that has contributed so much to my understanding of controlling outcomes for desireable purposes.
  • With verber looking more complete, a lot of this stuff is more possible. Now we just need to debug pse.
  • I can't wait to get working on mapping corpus events to actions that require verber actions. It would also be nice to move on the area of integration with Cyc, supposing I can ever figure out how to work log files.
  • Some thinking on verber, should have planning cycles, in which it plans out the acquisition of all necessary steps of life, and inducts so as to provide adequate time planning in the future. I.e., moves like an ant.
  • verber needs a lisp pretty printer
  • weatheragent for verber
  • Then implement the important features of verber.
  • Work on verber, get that working and packaged.
  • We can also use the event system to schedule what we work on. So, for instance, coordinating verber,pse and Event, we can create a plan for going to the robotics club to resolder the connections to the laptop.
  • Use Cyc, eventually logicmoo to model world state. Make sure that we have to ask manager "permission" to do everything, and also all requests. manager, I am hungry. This initiates manager to plan for the world state. This calls the Cyc Agent for world state, which it sends to manager, who then sends the modified domain file to the verber agent, which then generates the plan, which is then returned to the manager agent.
  • manager can use GPS information to determine waypoint arrival when guiding plans for verber.
  • Here are some of the things we need to do next: fix the way pse craps out all the time, get Clairvoyance working and with some basic document management systems, including for instance authorized reports to ensure back to me that various people are learning various things (based on testing), find some way to get those recipes normalized, get shops up and running and taking inventory of everything I have, add this information to verber, get MDR (minimum detection route) planning operational, get new tagsets for AWB/Predator working, fix problem with script determining perl dependencies, make packages of my systems and upload, fix mini-dinstall problem, write tutorial on agentification, agentify or otherwise get command line bugzilla working, fix up manager with sleep learning capabilities, create a sample course for clairvoyance, and run backup. You're such a lazy guy, you know that?
  • do NL translation of verber plans.
  • While in the bathroom I thought of an important extension to verber. verber has as its goal to protect people, and yet, in it's current whatif analyzer idea, there is no model for opponent modelling. As an example, verber should, in some cases, anticipate that in the current situation, if the locks on the doors were changed, and my elevator information altered, that I would cease to have direct physical access to my server. Machiavelli, on the other hand, must reason as to the possibility of Jana or someone else in CS having this motivation.
    ("rejected" "92711")
  • We are going to want the interactive tutor to use the same dialog-manager as verber, so clearly the dialog-manager is a separate system, it is probably filed under manager.
  • Use FDL to prove the correctness of programs as mentioned in verber.
  • Maybe verber should also be related to Prolog.
  • Should use verber to handle conflict resolution. But furthermore, should experiment with verber in limited conditions. verber should for starters be based off of OpenCyc, since it is our most expressive system.
  • had an intresting dream where I was set to play the board one for some school or dividsionm andmr. verber was thee officiating, and myoponent was this abnoxious little bill gates looking guy.............. I went to set up my pieces and some were missing so I had to olook for them. But after I set them up I even more were missing than I had originally put on the board. The kid was calling me names too. I was searching through there looking for pieces in a bagk, while my clock was running down, and mr. verber was too busy officiating. I couldn't outright blam ethe kid, I gusess I should jhave.]
  • Some of the design notes for manager. It should be tied to verber, as in verber recommends moves and then these are sometimes acted out through manager. For now, however.
  • As part of verber, the correct notion is that we must prevent such and such from interfering with the conduct of the main effort.

This page is part of the FWeb package.
Last updated Sat Oct 26 16:55:31 EDT 2019 .