Summer has come…
The end-sems are finally over and so is my first year in IIT KGP. Well it was for a week that I took a break and got to meet my family and friends after a long time. But soon I felt the urge to code and started.
Being a member of Kharagpur Open Source Society(KOSS) and Kharagpur RoboSoccer Students’ Group(KRSSG), I began to contribute for both. KOSS is improving it’s website and so I decided to contribute. Though not much exposed to web development, I decided to take up some content writing work in order to get a bit knowledge of it. The web-pages were mostly in HTML and having a basic knowledge of it, I was able to make a couple of web-pages for the Events section and sent a pull request which after couple of edits, finally got merged.
Most of themtime went in getting acquainted with the huge codebase of the Humanoid Simulation of KRSSG. Since KRSSG is participating in the Robocup’s Humanoid Simulation League since last year, it is a huge task to find out the bugs in our code and find a solution for it. My first task was to update the bot positions for 65 Voronoi Points. Our previous code was written for 32 Voronoi Points but we have updated it to 65 for more precision of bot positions for specific ball positions. Deciding about the 9 bot positions(except goalie and the attacker who is always on ball) was something about I had to think a lot. Since the football field is divided into triangles using Delaunay Triangulation method using these Voronoi Points, the bot positions cannot change drastically with respect to adjacent Voronoi Points otherwise the bots may fall down or collide. So I plotted each bot position for every ball position and set the bot positions accordingly to maintain a uniform template and also not compress the template to a lot extent which would have lead to collision amongst bots.
My next task was to solve for the passing function. The previous passing function was based on heuristics approach and took a huge computational time and so passing function based on just an impromptu decision checking certain conditions was thought to be written. It checked for some conditions such as distance with the ball, nearest opponent and nearest teammate and pass accordingly. This was a huge task as it required stopping the Hungarian algorithm momentarily during the passing. Hungarian algorithm is responsible for assigning the bot positions by reading the formation from the Voronoi file and assign roles to the bots based on heuristics and minimum time to get to the assigned position. It required editing the Hungarian and other already written functions to a lot extent as they all took different parameters which was not taken by the new passing function. So a huge amount of debugging was required where I used many temporary references and variables to solve my problem. The new passing algorithm was successfully implemented and it showed a huge progress as when our code was tested against the binary files of opponent teams, it showed a huge progress with respect to previous time.
Now, I would like to invest more time in finding the bugs in the code and find the best plausible solution for it. Moreover, I am planning to get some knowledge of algorithms this summer so that I could develop my programming basics and explore many different fields like machine learning ,data science in the future.