From jderobot
Jump to: navigation, search

Improvements to visualHFSM Tool[edit]

This project aims to improve visualHFSM tool. We plan two main improvements: ROS integration, and PyQt migration. Currently, the tool uses only ICE communication proxies. However, with the new release of the JdeRobot, there is a new communication framework which is directly compatible with ROS messages. Our first aim is to integrate new communication mechanism to visualHFSM template. Then, we also provide a new functionality to generate HFSM code which is pure ROS node. Finally, we plan to migrate from GTK+ visual library to PyQt library.


  • Okan Aşık (asik [dot] okan [at] gmail [dot] com)
  • Samuel Rey (samuel [dot] rey [dot] escudero [at] gmail.com)
  • José María Cañas Plaza (jmplaza [at] gsyc [dot] es)


Weekly Development Notes[edit]

30 May - 06 Jun[edit]

  • Installation
  • Reading documentations and tutorials

06 Jun - 13 Jun[edit]

  • Getting know the tool
  • Creating example visualHFSM behaviors. Detailed screencast can be found below.
  • Solving issue isssue #660

13 Jun - 20 Jun[edit]

  • Integration of the tool with the new JdeRobot communication framework.
  • The generated c++ automata code cannot be compiled. The generated code directly uses the same source codes of the visualHFSM. This requires rebuilding so that it is inefficient. Therefore, I created a shared library using the source codes of the c++ run time. However, when i try to link this runtime library with the generated automata code, the compiler gives a linking error because cannot find c++11 ice methods in libJderobotInterfaces.so. The error message is as follows: undefined reference to `vtable for IceInternal::Cpp11FnCallbackNC'. When I recompiled whole JdeRobot, the linking problem is solved. The associated pull request is here: https://github.com/JdeRobot/JdeRobot/pull/843

20 Jun - 27 Jun[edit]

27 Jun - 04 Jul[edit]

04 Jul - 11 Jul[edit]

  • I have complete the integration of new jderobot communication framework for cpp and python behavior templates.
  • A video tutorial that shows a creation of a c++ behavior to create a wall follower behavior using Gazebo and JdeRobot Kobuki robot.

  • I also have started working on migrating visualStates from GTK+ to PyQt.
    • I have created the main window
    • I have created top menu
    • I am able to add states and transitions to the scene.

11 Jul - 17 Aug[edit]

The migration of VisualStates to PyQt5

  • I have implemented proper visuals for state and transitions
  • We can change the name of the state or transition directly by double clicking the textbox
  • I have implemented converting the visual states and saving as xml using minidom(https://docs.python.org/3.0/library/xml.dom.minidom.html) python package.
  • The type of the transition and its code is set using single dialog.
  • The treeview is used to choose the parent state and the children of the selected state is drawn on the scene.
  • C++ code generation is completed
  • Python code generation is completed

Current state of migration can be seen from following videos:

15 Aug - 22 Aug[edit]

  • Enhancement of code editors
  • Testing
  • Detailed documentation

Project Final[edit]

  • Also a glimpse of the new state machine templates for python and c++ can be seen in the following videos: