Final Report

    2 minute read    

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

Wire Support

Improvements in Block Synthesis

Development of Modules:

Adding Blocks

Sample Blocks

NodeJS Front End:

In this section, I uploaded the files directly as they were imported from icestudio and the other pull requests are below:

Clean IceStudio Traces

Changing extensions from .ice to .vc

Minor changes to directories and paths

Assigning thumbnails to blocks

Adding Functionalities:

F1 Support

ROS Topics based communication support

Add Custom Code Block

Block Composition

Add User Defined Block

Creating Console using Tkinter

Editable Python Code in Frontend

View Python Code in Frontend

Adding Parameters Support

Demo’s and Documentation:

Some major demo’s along with their videos can be found here:

Tweet 1

Tweet 2

Tweet 3

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.