Final Report
Summary
JdeRobot is an open toolkit for developing robotics applications. The toolkit provides several tools, libraries and reusable nodes for Robotics and Computer Vision. My project was an addition of a new tool to this organization. This project aimed at developing a tool that provides a simple drag-and-drop interface consisting of blocks and wires which then synthesizes the program into a Python application. This shortens the development time greatly as well as makes development quite easy. Also, as the modules provide built-in functionality, the software would be much more optimized, robust and modular.
Contributions
As my work was building a complete tool rather than contributing to a specific project. I can divide my work into 5 parts:
Python Back End:
In this section as I had to implement everything from scratch, so I uploaded the files directly. It is described in the documentation. Other pull requests are below:
Shift from Multi-threading to Multi-Processing
Improvements in Block Synthesis
Development of Modules:
NodeJS Front End:
In this section, I uploaded the files directly as they were imported from icestudio and the other pull requests are below:
Changing extensions from .ice to .vc
Minor changes to directories and paths
Assigning thumbnails to blocks
Adding Functionalities:
ROS Topics based communication support
Creating Console using Tkinter
Editable Python Code in Frontend
Demo’s and Documentation:
Some major demo’s along with their videos can be found here:
The documentation can be found here: Link to Documentation
Difficulties
I faced some difficulties in the communication between blocks. I needed a light weight and low overhead way of communication between the block. The Python library did not work so well as it had some bug. The good thing was that it led me to a much better solution using POSIX IPC. Another difficulty was getting support for ROS Noetic. As ROS Noetic is very recent it had a lot of issues in installation as well as very less hardware was supported on it. Also, if there was any problem, I had to solve it by myself because there were no available online resources.
Improved skills
I learnt a lot about sofware development and how to properly document and manage code. I also learnt about the problems that occur during development and how to resolve them. I also think my programming skills and knowledge about robotics significantly increased.
Further work
I plan to extend this further as a project in my university. I already discussed the future roadmap for this tool with my mentor and we are trying to make this into a solid tool. There are many milestones that we have discussed and I plan to work on this for the next 8-10 months.
Acknowledgment
Taking part in this GSOC was an awesome experience and I want to particularly thank my mentor JoseMaria Canas for his supervision.