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...
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:
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.
The exercises that I decided to solve were:
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:
This was done for every block in Visual Circuit’s Library. An exhaustive list is as follows: 
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.
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:
- Block Size is too small in certain cases
- read_number function in inputs doesn’t work
- Multiple Blocks have the same Filename
- Image is dragged instead of the block
My other major contirbutions were adding various features aimed at making Visual Ciruit easier to use.
- Add functions to share any type of data
- Add read_string and share_string functions
- Fix the naming to be unique for each block
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.
It went pretty well and we got some very nice results at the end of the day.
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
An exhaustive list of all pull requests can be found here
Going by the suggestions of my mentors, I spent this week working on the documentation of the blocks and some updates to my blog.
This week I looked into MultiProcessing Conditions and finished the video of the FSM.
This week saw the completion of the FSM video and the solution to the block size bug.
I made more progress with the documentation and some other auxillary bug fixes this week.
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...
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...
This was a week where I started to work on the Finite State Machine that I had mentioned in my proposal.
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...
This week I finally finished the remaining templates from last week. I also managed to upload my created videos to the JdeRobot YouTube Channel.
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.
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.
This was the last week of community bonding, however due to other commitments in college I had a hard time working on Visual Circuit.
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...
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...
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...