Summary Report

Late nights, excitement and learning are how I would describe the GSoC period in a few words. These past two months have been a lot of fun, from starting off a someone who knew little to nothing about Visual Circuit to being able to fix problems in boths its frontend and backed. It has been a fantastic journey of learning.

I’d like to thank my mentors Suhas Gopal and Muhammad Taha for supporting me throughout this project. I’d also like to extend my gratitude to Jose Maria Canas for his insights and support.

This blog sums up the past two months of coding by giving a brief overview of everything I’ve done:

Community Bonding

After getting to know my mentors I started exploring Visual Circuit and setting up my local version of Robotics Academy. I will confess that setting RoboticsAcademy up locally was quite difficult. JdeRobot officially asks us to download the Docker image if we want to access RoboticsAcademy however, to run programs made on Visual Circuit i would need to run it locally.

Hence the first two blogs go into some detail about how I started up RoboticsAcademy, the errors I encountered and what I did to solve them (12

The exercises that I decided to solve were:

Coding Period

I started off by solving the exercises locally using Python. Once I could get a reliable solution running, I went on to then implement it in Visual Circuit. This proved to be a good way of doing things as there were a lot of errors I encountered initially.

After the exercises were done, the Shared Memory Implementation came next. As my mentor Suhas’ Pull Request was soon merged and the internals of the application began sharing data via Shared Memory Objects. This fulfilled a large part of the implementation.


After the internals were updated to Shared Memory, it was time to update the block templates to the newer implementation. Luckily this was simpler than the old code. A comparison between the two:

Old New
Old Template New Template

This was done for every block in Visual Circuit’s Library. An exhaustive list is as follows: []

IMU Block

Having made some drone applications I noticed that a very common sensor was missing from Visual Circuit’s Library. Namely the IMU (Inertial Measurement Unit) so when I told my mentors about it they suggested I add it. It was quite fun to make my own block with its own template and parameters from scratch. Thankfully due to the existing documentation the process was quite simple to understand.

IMU Internals IMU Block

Bug Fixes and Features

Throughout these two months I made sure to note down whichever bugs I encountered so that I could solve them. Solving these was how I really got to know the frontend and backend of Visual Circuit:


My other major contirbutions were adding various features aimed at making Visual Ciruit easier to use.

Finite State Machine

I had also mentioned trying to make a Finite State Machine in my GSoC Proposal. Implementing it proved to be difficult due to Visual Circuit’s Multiprocessing nature. Making code blocks that work sequentially and conditionally was quite hard. However after applying quite a few different techniques, I got it working using Conditions. This was the simplest working version in my opinion. However my mentors were unsure if it satisfied the Visual principle of Visual Circuit so no Pull Request has been made to incorporate Conditions into the main program yet. (3)

However, a video of the FSM has been made:


To wrap up I made new documentation for all the blocks that are contained in Visual Circuit. We wanted to create auto-generated documentation so we used pdoc a documentation generator for Python.

I wrote a script to extract code from the internal JSON files and convert them .py files. Then we ran pdoc on the generated files. It generated some very nice documentation for us. However we wanted to make it look even better so I set about using Jinja to customize the generated docs.

I referred to the Jinja2 and Pdoc documentation available online (45)

It went pretty well and we got some very nice results at the end of the day.

Sample Doc Page Dark


In conclusion I enjoyed my time in Google Summer of Code. I got the opprtunity to learn a lot from some very talented people, and gained a lot of experience in managing my time for the 3 months of the working period. A huge thank you to my organisation, mentors and Google itself for giving me this opportunity and supporting me through it.


An exhaustive list of all issues can be found here

Pull Requests

An exhaustive list of all pull requests can be found here


Summary Report

4 minute read

Late nights, excitement and learning are how I would describe the GSoC period in a few words. These past two months have been a lot of fun, from starting off...

Week 11: Coding Period

1 minute read

Going by the suggestions of my mentors, I spent this week working on the documentation of the blocks and some updates to my blog.

Week 10: Coding Period

1 minute read

This week I looked into MultiProcessing Conditions and finished the video of the FSM.

Week 9: Coding Period

1 minute read

This week saw the completion of the FSM video and the solution to the block size bug.

Week 8: Coding Period

1 minute read

I made more progress with the documentation and some other auxillary bug fixes this week.

Week 7: Coding Period

1 minute read

Another pretty busy week for me personally. This led to a bit of slowdown in the work done. However I started with the documentation editing through Jinja an...

Week 6: Coding Period

2 minute read

This week was quite hectic for me. My college started offline after a while, due to travelling and a few other events the time I could spend on Visual Circui...

Week 5: Coding Period

1 minute read

This was a week where I started to work on the Finite State Machine that I had mentioned in my proposal.

Week 4: Coding Period

3 minute read

This week marked a focus on completing the remaining PRs from last week. I also finished adding a new IMU block and worked on general share() and read() func...

Week 3: Coding Period

2 minute read

This week I finally finished the remaining templates from last week. I also managed to upload my created videos to the JdeRobot YouTube Channel.

Week 2: Coding Period

1 minute read

This week was about identifying and solving some bugs I had noticed during usage of the tool. I also started with the work template updation.

Week 1: Coding Period

1 minute read

This week marked the official beginning of the coding period. Going by last week’s set goals I started on the video creation part first and foremost.

Week 3: Community Bonding

less than 1 minute read

This was the last week of community bonding, however due to other commitments in college I had a hard time working on Visual Circuit.

Week 2: Community Bonding

1 minute read

In my previous posts I had highlighted the challenges I faced while installing Jde Drones and getting code running on it. Next after these steps was to solve...

Getting Code Running on Drones

1 minute read

After I got the drones running now it was time to actually write the code to solve some exercises. The goal for this week of the GSoC period was to get 1-2 a...

Installing JDE Drones

2 minute read

Getting started with my GSoC period, one of my goals during the project was to make drone applications using Visual Circuit. JdeRobot’s Academy already has s...

Back to Top ↑