rFSM icon indicating copy to clipboard operation
rFSM copied to clipboard

rfsm2dot fail with graph depth>2

Open AntoineHX opened this issue 3 years ago • 0 comments

I'm a new user of rFSM but it seems to me that rfsm2uml.rfsm2dot() does not handle graph with too much (>2) depth. I've run the following code :

require "rfsm"
require "rfsm2uml"

fsm = rfsm.init(rfsm.load("test_fsm.lua") )

rfsm2uml.rfsm2dot(fsm, "test-uml.dot")

With test_fsm.lua :

return rfsm.state {
    configured = rfsm.state {},
    operationnal = rfsm.state {  
      idle = rfsm.state {},
      --== Manual states ==-
      joint_pos = rfsm.state {  
        running = rfsm.state {},
        done = rfsm.state {},

        --============================== Joint pos transitions =================================== 
        rfsm.trans {src="initial", tgt="running" },
        rfsm.trans {src="running",tgt="done", events={'joint_pos.done'}},
      },
      --============================== Operational transitions =================================== 
      rfsm.trans {src="initial", tgt="idle" },
      rfsm.trans {src="joint_pos",tgt="idle", events={'idle'}},
      rfsm.trans {src="idle",tgt="joint_pos", events={'joint_pos'}},
    },
  
    --============================== Main transitions =================================== 
    rfsm.trans {src="initial", tgt="configured" },
    rfsm.trans {src="configured", tgt="operationnal", events={'start'}},
    rfsm.trans {src="operationnal", tgt="configured", events={'stop'}},
  }

While everything is running fine when removing states & transitions inside joint_pos state, rfsm2uml.rfsm2dot will fail with those. Even if the underlying FSM seems to be working fine. It gives the following error while run by rttlua :

Real-time memory: 517888 bytes free of 524288 allocated.
OROCOS RTTLua 1.0-beta5 / Lua 5.1.5 (gnulinux)
INFO: created undeclared connector root.initial
INFO: created undeclared connector root.operationnal.initial
INFO: created undeclared connector root.operationnal.joint_pos.initial
WARNING: no outgoing transitions from node 'root.operationnal.joint_pos.done'
No state 'root.operationnal.joint_pos'
/home/antoineh/orocos/foxy/bin/rttlua-gnulinux: ...integration/src/rtt_ros2_utilities/rFSM/rfsm2uml.lua:136: assertion failed!
stack traceback:
	[C]: in function 'assert'
	...integration/src/rtt_ros2_utilities/rFSM/rfsm2uml.lua:136: in function 'new_sista'
	...integration/src/rtt_ros2_utilities/rFSM/rfsm2uml.lua:250: in function 'proc_node'
	...integration/src/rtt_ros2_utilities/rFSM/rfsm2uml.lua:272: in function 'func'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:233: in function 'f'
	/home/antoineh/orocos/foxy/share/lua/5.1/utils.lua:246: in function 'map'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:229: in function '__mapfsm'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:236: in function 'f'
	/home/antoineh/orocos/foxy/share/lua/5.1/utils.lua:246: in function 'map'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:229: in function '__mapfsm'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:236: in function 'f'
	/home/antoineh/orocos/foxy/share/lua/5.1/utils.lua:246: in function 'map'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:229: in function '__mapfsm'
	...os2-integration/src/rtt_ros2_utilities/rFSM/rfsm.lua:244: in function 'mapfsm'
	...integration/src/rtt_ros2_utilities/rFSM/rfsm2uml.lua:270: in function 'fsm2gh'
	...integration/src/rtt_ros2_utilities/rFSM/rfsm2uml.lua:298: in function 'rfsm2dot'
	test.lua:6: in main chunk
	[C]: ?
TLSF bytes allocated=524288 overhead=6400 max-used=6400 currently-used=6400 still-allocated=0

AntoineHX avatar Mar 03 '22 12:03 AntoineHX