to do

***THIS PHASE***


SMACC Viewer

I think we need to move the debian generation script (for the smacc_viewer) to the smacc_viewer repo.


OpenCV2

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

Look at https://github.com/LTU-CEG/gazebo_cave_world


sm_respira_1

On startup, press A-D, then press Y – It’s not working for me. Should go to MsLeakyLung. Pressing Z does work.

On startup press A-D, then press Z, will go to MsPatientObstruction, then I’ would like it to use history to go back where it began.

In this sm, we don’t need to reuse states in different superstates SS1, SS2, SS3, so I’d like to reconfigure accordingly.

MoveIt

Cb, that can read joint values from a config file. (Kinda like SetNamedTarget)


OpenCV

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

***END THIS PHASE***

New SM Folder Structure

sm_move_it…

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

sm_dance_bot…

  • 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

sm_atomic…

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

New Client Library Folder Structure

battery_monitor_client…

  • include
  • server
    • /battery_monitor_node
      • battery_monitor_nody.py
  • 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)…

https://www.boost.org/doc/libs/1_70_0/libs/statechart/doc/rationale.html#Limitations

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.


***DEPLOYMENT PHASE***


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 #


***PHASE AFTER THAT***


MoveIt Client

Occupancy Map Updater for MoveIt perception client…

https://github.com/ros-planning/moveit/blob/master/moveit_ros/occupancy_map_monitor/include/moveit/occupancy_map_monitor/occupancy_map_updater.h

Stages = client behaviors, Solvers = client components


http://docs.ros.org/melodic/api/moveit_tutorials/html/doc/pick_place/pick_place_tutorial.html

http://docs.ros.org/melodic/api/moveit_tutorials/html/doc/perception_pipeline/perception_pipeline_tutorial.html


***NEXT PHASE***



DON’T DO ANYTHING BELOW THIS LINE


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.


MAYBE SOMEDAY


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

Logging

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.

https://discourse.ros.org/t/ros2-logging/6469 – 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.