executive_smach icon indicating copy to clipboard operation
executive_smach copied to clipboard

Constant userdata passing (or constant remapping)

Open jk-ethz opened this issue 2 years ago • 0 comments

Is it possible to define transitions between states with constant userdata?

I want the input variable var1 of FOO to be set to test every time after executing BAR, without modifying the internals of BAR. Something along the lines of:

smach.StateMachine.add('BAR', Bar(), 
                       transitions={'outcome1':'FOO'},
                       remapping={'bar_counter_in':'sm_counter'},
                       constants={'var1':'test'})

Or even making the remappings aware that if some key does not exist as an input or output of BAR, it should be treated as a constant:

smach.StateMachine.add('BAR', Bar(), 
                       transitions={'outcome1':'FOO'},
                       remapping={'bar_counter_in':'sm_counter', 'test': 'var1'})

Or even:

smach.StateMachine.add('BAR', Bar(), 
                       transitions={'outcome1':['FOO',{'var1': 'test'}]},
                       remapping={'bar_counter_in':'sm_counter'})

This would be VERY useful to me, as I have different instances of the same state pointing to another state, but depending on which instance I am coming from, I want different data to be passed in a constant manner.

jk-ethz avatar May 20 '22 13:05 jk-ethz