Our week started out with learning the background knowledge to motion planning algorithms -- including the history, the algorithm and applications. The articles were really interesting and was my first introduction to motion planning and robotics. We had our first discussion in which we examined the algorithm in detail as well as learned about the different sampling methods.
After this, we were given the code to PMPL, which implemented the PRM algorithm as well as other modified motion planning algorithms. We were able to visualize the roadmaps generated by PMPL with vizmo. With this, we were able to see a clear difference in the roadmaps that each method produced like where the nodes are placed relative to the obstacles as well. I am excited to see the applications of this code as well as delve deeper into different sections of the code.
This week summed up the bulk of the crash course. We got more acquainted with different samplers of PRM as well as an introduction to RRTs. We read a lot of papers that went further in depth on some concepts we touched on such as configuration space. The most interesting part of this week was the programming part. We created MyStrategy.h which called on abstractions we learned in the past like distance metrics and local planners.
In the next step, we were to code a planner MyEST.h, a randomized based tree algorithm. A lot of the functions we were told to look at were outdated, and so we did a lot of digging by ourselves. This aspect made our task incredibly interesting and useful to understand many of the abstractions in PMPL. After this, we researched a possible way to optimzie MyEST.h; I ended up using a Gaussian method to find configurations near obstacles. I am still thinking of more ways to optimize it. I look forward to beginning individual projects in the following week!
This week began my introduction to my project and team. I am working with my wonderful mentor Diane, and a couple of other super amazing undergrads on motion planning for Protein-Ligand Binding. Specifically, the team worked on creating a skeleton that biased on clearance values such that the planner would find paths that favored high clearance first. My next plan of action is to help annoting the skeleton with energy metrics such that the strategy would bias towards areas of low energy configurations.
This week was mostly familarizing myself with the Protein-Ligand specific libaries, and playing with tools to generate certain environment, object, path and other visual files. In the next week, I hope to begin contributing to the skeleton code and implement my own energy metric algorithm.
This week I continued my project of adding an energy metric addition to the annotated skeleton. I was lucky enough to be provided with a lot of preparation materials. Another member of the lab had previously added a module to the skeleton which annotated based on clearance. With this, I was able to create a similar option for energy. Currently the energy option is outputting values for energy and selecting correctly. Although, I have only tested this on one particular protein's energy set. In addition, there seems to be a few more hiccups in my code, which I should tackle soon.
In addition, my mentor brought up of an idea to be able to see these energy values (and clearance) visually. Essentially, creating some sort of heat-map. My next step would be looking into how to create this as an option inside vizmo (a visual tool for motion planning). For now, a simple set to creating a heat map is to color code the values of energy in the roadmaps we create.
This week I continued to work on the energy annotated skeleton as well as the visualization tool. In the beginning of the week, I fixed the major errors in my skeleton. It correctly picks out the more energetically favorable region, and I was able to see the results for it. With this done, it took awhile to figure out to output these results in a file that the visualization tool would be able to take up.
After we figured that out, I spent the rest of the week writing the code to read in the files that contain the energy information and the points associated with them. With this, I am currently in the process of converting this information into a color scheme that would distinguish low and high energy areas.
This week I was able to develop the color-coded skeleton further. In the beginning of the week, I was able to figure out how to take in the energy annotation and use that information to decide the intervals for the color-coded skeleton. For the rest of the week I worked on deciding a good way to visualize it like the amount of intervals and where they should be placed since the energy function is not symmetric. Also, I worked on figuring out how to color both the vertices and the edges, which I think was a good way to visualize it. Examples of these can be found in the "Project" tab.
Now, I am working on making some of these variables user defined -- for example, the user could decide how many intervals to use which would decide how detailed the color map is. Currently, I have already ran it on 6 different seeds and observed its behaviors. I need to then look for more ways to test my code.
This week included a lot of testing. We noticed that the strategy sometimes did not follow the skeleton closely, and would sometimes jump from following one edge to another. Part of the problem is that a good portion of the skeleton was actually in obstacle space. To fix this we can create a better skeleton. In addition, another reason for the jumps is the way we select our regions, instead of selecting adjacent regions to explore we select from the entire list of regions. I think we will tackle this problem after creating a new skeleton.
I did explore an idea of plotting time at which the region was selected vs. energy. Although, there did not seem to have a major pattern we could draw, even with comparing selecting by low, high energy and also probability. In addition, I’m currently exploring how to clearly plot the energies of the regions of the protein.
This week, I worked on more testing. we were thinking about ways of getting a good skeleton to model the tunnels accurately. The reeb skeleton was good for finding a skeleton that was completely C-space. To make it more detailed, we make a reeb graph that explored in 3 different dimensions (x, y, z). I wrote a small python script to combine these three reeb graphs into a single one as well as combine their energy annotations into a single annotations. The result is more detailed than some of skeletons we made before. We will explore tuning this more, as well as planning with these skeletons instead.
I also worked on another idea to display how our strategy works and how it follows the skeleton. I'm working on a way to dynamically color in the skeleton -- to color the edge of the skeleton that the roadmap is following as it is being built. I think this is a a clear way of seeing how our strategy works. I am planning to have this work with the vd file so we can see each step and each region selection clearly.
I had a lot of fun this week, I went to an escape room for the first time. I was scared the whole time but we actually managed to solve it! I am excited to continue on my idea as well as make my first poster.
Week 9:
This week I wrapped up a lot of my experiments. I also began working with Regina and coming up with a good way to combine our projects into a cohesive paper. The last aspect I added to my poster is an analysis on tunnels. There was a little inconsistency in what I expected the outcome to be and what I predicted. So, I am working on the analysis now.
Week 10:
This week I started to wrap everything up. Producing images and data I need for my paper and transferring all my data into git. I am excited to start working in this lab remotely, and I have a lot of tasks to finish when I get back to New Jersey. I had a great time here in Illinois, and at the Parasol Lab -- and to anyone reading this I highly reccomend you check these awesome people out!