to do


Taming MoveIt


Move Trees that are colliding with hills, Add some trees, add some barrels to north, move waypoints for North/South/Return Travel.

Look at


Let’s add camera to sm_dance_bot & sm_dance_bot_strikes_back – Do Last

Add opencv client to client library. – Using “Facial Recognition” example, we just make empty classes & create the client. -WAIT


New SM Folder Structure


  • config
  • docs
  • include
    • /sm_move_it
    • /clients
  • launch
  • msg
  • servers
    • /fake_cube_perception_node
  • simulation
    • /models
    • /robots
    • /worlds
  • src
    • /clients
  • test


  • config
  • docs
  • include
  • launch
  • msg
    • /action
  • servers
    • /action_server_node_3
      • /include
      • /src
    • /led_action_server
    • /lidar_node
    • /service_node_3
    • /temperature_sensor_node
  • simulation
    • /urdf
  • src
  • test


  • config
  • docs
  • include
  • launch
  • msg
  • src
  • test

New Client Library Folder Structure


  • include
  • server
    • /battery_monitor_node
  • src
  • test
    • /sm_clienttest_1
    • /sm_clienttest_2

Random Generator State Reactor

I want a state reactor, with a function that generates a random number within a specified range, similar to this.

So that on a given event, the reactor generates a random number (say between 1-12), and if x<4, it throws event A, if 5<x<8, it throws event B, and if x>9, it throws event C.

As this requires changes to the Reactor classes, our goal is to add support for multiple output events, and also for a “NULL” option where the state reactor doesn’t take an event but either fires once on the States OnEntry() function, or multiple times on the states Update() function.

I liked the code sample we talked about earlier that’s in the picture below..

Add Update() Function to States

The order of operations should be Orthogonals first, then state.

Choice Points

The idea is to have State Reactors, that require at least one event as input, and Choice Points, that don’t require an input event.

These were described by Harel & Doenni (see below)…

These would be used a lot in SuperStates (in a pattern known as a Fallback, where you enter Ss1, check a condition, and based on that condition go to StiX or StiY.


SMACC Viewer Dependencies

Can we add the current version, somewhere on the viewer, so that users are able to know if they have the most up-to-date version?

Need to add to shell script, functionality that adds commit number to the version #


MoveIt Client

Occupancy Map Updater for MoveIt perception client…

Stages = client behaviors, Solvers = client components



Action Client Timeout Issue

Actionclient attempt to connect to the Actionserver, and then waits with a blocking call.

Q: Can we do this asynchronously?

Ideally, we would attempt to connect and wait x amount of time, and repeat y times. Then produce a warning message if the ActionServer isn’t there.

If the ActionServer is not there, we skip and just send a warning message.

Continue adding hierarchy to components

Initialization order issue – Let’s implemenent a first pass.


Mode State Work

  • Need to add the ability to create orthogonals & initiate clients via some Mulitple Inheritance mechanism or something, kind of like we did with the update function, so that only states (mode, super, etc) with that explicit functionality can create orthogonals/clients


Philosophy: We are a ROS based library. So our users are going to be trying to work with us and other ROS Nodes (MoveBase, MoveIt, etc.) And consequently we should try to match that interface. – Great overview of ROS Logging

Need to record…

  • Events
  • Transitions
  • Parameter changes to Global Variables, Client Parameters, Mode Parameters, – Requires a stylistic distinction between variables and parameters?

Package.xml/Cmake/header cleanup.