to do

***THIS PHASE***



non-RT-helper client

This is the big one. rrbtx_navigation.

    – costmap_switcher (probably with move_base_z? it would be also
justified to be a component part of smacc)

create an opensource reelrbtx_msgs repo

private repo for rrbtx_reel_client

Keep rrbtx_navigation (for costmaps)


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.


***VIDEO SHOOT***


***DEPLOYMENT PHASE***


Automate debian production & upload to packagecloud.io

  • for rrbtx_control & rrbtx_navigation too.

We’re going to upload rrbtx_control to ROS repositories, and rrbtx_navigation will be the nucleus of the new rrbtx_reel_client


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***


SMACC Lifecycle

https://design.ros2.org/articles/node_lifecycle.html


Operation Client Buildout

See https://secureservercdn.net/45.40.145.151/b0o.ae1.myftpupload.com/wp-content/uploads/2019/11/SMACC-Client-Buildout-Spec.pdf


ros_control

http://wiki.ros.org/ros_control/Tutorials/Loading%20and%20starting%20controllers%20through%20service%20calls

https://github.com/ros-controls/ros_control/tree/melodic-devel/controller_manager_msgs/msg

https://github.com/ros-controls/ros_control/tree/melodic-devel/controller_manager_msgs/srv


MoveIt Client

The plan is adapting an Universal Robot manipulator to work with SMACC. A new example package would be created imitating dance_bot but replacing the move_base node by a move_group node. It would be needed to develop a new client: MoveBaseActionClient. The example would send the manipulator endpoint to different places. It could be even combined with some other substatebehaviors for other sensors (to show how a state machine could be useful in these contexts). For the example, the default ur5 gazebo simulation example launch file would be used.

https://github.com/ros-planning/moveit/blob/master/moveit_ros/planning_interface/move_group_interface/include/moveit/move_group_interface/move_group_interface.h

Occupancy Map Updater for MoveIt perception client…

https://ros-planning.github.io/moveit_tutorials/doc/perception_pipeline/perception_pipeline_tutorial.html

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

MoveIt Task Constructor

https://pub.uni-bielefeld.de/download/2918864/2933599/paper.pdf ***

https://github.com/ros-planning/moveit_task_constructor

https://roscon.ros.org/2018/presentations/ROSCon2018_MoveitTaskPlanning.pdf

Stages = client behaviors, Solvers = client components

https://picknik.ai/moveit/ros/2019/10/15/mtc.html


Alternate MoveIt! Client

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***


New State Machines (clone from Threesome)

sm_pick_n_place

New reference machine with…

  • Two arms/moveit clients
  • Ridgeback base

sm_plug_in

Inverse Kinematic Solution

sm_ai_loop

sm_deep_interdiction


Package.xml/Cmake/header cleanup.


ai-reactor library

Create new folder AI Behaviors, for a state machine level version of logic units….

First implementation (in ai library) would be a counter, that counts the number of times some certain event happens, over the running of a state machine, then records that to some type of logfile.



DON’T DO ANYTHING BELOW THIS LINE


static checks

  • transition from an orthogonal that doesn’t exist.
  • transition from a source that doesn’t exist.
  • cb from a client that doesn’t exist – don’t worry about making clients dynamically.

We decided to hold off on this one, after coming to the conclusion that the library is too immature for us to start shutting off portions of the library. So we decided to push but comment out the changes for now.


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.


Improved Compilation Error Msgs

For use case of state not correctly listing it’s context. Static Assert? https://gracicot.github.io/tricks/2017/07/01/deleted-function-diagnostic.html

We attempted this, but unfortunately our changes were compiled after boost.statechart, which made our attempts futile. Anyways, we tried.


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 – log4cpp

Need to record…

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