Improvements to visualHFSM Tool
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)
- Project repository: https://github.com/JdeRobot/colab-gsoc2017-OkanAsik (this is a clone of JdeRobot repository)
Weekly Development Notes
30 May - 06 Jun
- Reading documentations and tutorials
06 Jun - 13 Jun
- Getting know the tool
- Creating example visualHFSM behaviors. Detailed screencast can be found below.
- Solving issue isssue #660
13 Jun - 20 Jun
- 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
- I tracked and solved an issue about config dialog. The config dialog did not have background color. The related pull request is here: https://github.com/JdeRobot/JdeRobot/pull/849
- I have worked on integrating new jderobot communication framework. I have changed python template and config file for new jderobot communication framework. The related branch is here: https://github.com/JdeRobot/colab-gsoc2017-OkanAsik/commits/visualHFSM_jderobot_comm
- The example behavior that uses both ICE and ROS communication interfaces can be seen in video below.
27 Jun - 04 Jul
- I have worked on integration of new jderobot communication framework for cpp behavior template.
- I also spot two minor bugs about the jderobot communication framework. jderobot communication framework by default do not compile ROS clients even if ROS_cpp found. The related pull requests can be found here: https://github.com/JdeRobot/JdeRobot/pull/862 and https://github.com/JdeRobot/JdeRobot/pull/868
04 Jul - 11 Jul
- 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
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
- Enhancement of code editors
- Detailed documentation
- I have finished the migration of the tool using PyQt5 and python. The final state of the project can be found in this pull request: https://github.com/JdeRobot/JdeRobot/pull/902
- I have prepared a presentation which lists the improvements achieved here: https://docs.google.com/presentation/d/1nYvNBXUiUemGZXgNnPxZAv1hDZ0xXEYqQDPjN2pWd2w/edit?usp=sharing
- The final version of the tool with QScintilla code editor can be seen in the following videos:
- Also a glimpse of the new state machine templates for python and c++ can be seen in the following videos: