This week we created our Project Proposal slideshow. Matt gave the presentation on Monday. We met on Thursday and discussed the general design of our motion planning accelerator and how it will interface with the simulator and with a future perception system and robotic arm. I reviewed the paper on RRT, found possible robotic arm options, and read about open source perception solutions.
We have generally defined the interface between the accelerator and the simulator and will meet on Sunday (2/11/24) in order to begin implementation. The general idea is to partition the state space into a grid of 3D coordinates. Using the representation we can easily distinguish the free vertices, boundary vertices, and the vertices where object exists / collisions may occur. The RRT implementation will then take in the coordinates of the start and goal position as well as updated collision data. Only communicating the delta in collision data will allow for minimized data transfer.
I did work on the initialization of our git repository. I have initialized C files for the baseline RRT implementation and Python files for the simulator. Using the ctypes library I have enables the C RRT implementation to be called by the python simulator. Doing this allows us to standardize the interfaces between the modules of our design and allows the simulator to be in Python. This greatly simplifies the work of visualization and testing. Along with this I wrote a simple shell script and started writing a README to document the repository.
I am beginning to consider the actual representation of the state space. The matrices we will be working with we be quite large and sparse. How we implement this is an important design decision. I am considering using a Compressed Sparse Row Format but this will complicate the accelerator and software we write. I am also considering using a more coarsely grained partition of the state space. This will decrease accuracy and make the path smoothing more complicated. Using a coarsely grained partition of the state space will be more computationally efficient but will likely lead to less optimal paths.