CSM Updates for Demo1, Benchmarking, & Professor Feedback

This week, I worked on improving the basic foundations for the CSM laid from the previous week by preparing for Demo1, setting up means to start benchmarking performance, and acting on feedback from the Professor.

In the previous meeting with our Professor and TA, I brought up how we were planning to build the CSM so as to measure the expected performance of the entire system, with processes sleeping for variable lengths during mock calls made to operations that could no longer be performed due to an inability to do hardware integration with social distancing in place. For example, I was planning on setting up a 10ms sleep and extracting a frame from a test video to represent the expected performance of the Picamera when taking images. However, based on Professor feedback, this week I changed up this core approach to enable the CSM to maximize its performance and operate as fast as possible. As opposed to working with locks and semaphores, I have implemented an alternate Python queue with concurrency control and a single element storage limit, so as to mimic Golang’s famous Channel structs. This has sped up the system by a factor noticeable to the human eye.

Furthermore, this week I added testing and benchmarking features more focused on human interpretability with the intention of providing a more visual output to this deeply non-visual portion of the InFrame project. This was done to make the results shown in Demo1 more intuitive to individuals not familiar with the codebase. In combination, I also set up structs to time some of the system’s critical pathways, such as the retrieval of a message by the CommsManager and this data’s transfer through the SystemManager and across the Camera, Perception, Motor pipeline. This has yielded fantastic results with the above mentioned pathway performing between 1-3ms per operation.


0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *