This week, I made sure UWB locationing was working correctly and worked on setting up the anchor boards to automatically boot up as anchors. I also finished connecting UWB coordinate calculations to ROS, so now we have a complete range, trilaterate, publish flow that Adrian was able to connect to the UI. Lastly, I moved our project to using PlatformIO with Arduino as the framework. This gives us a number of QOL improvements, e.g. we can now use the rich libraries provided by Arduino and have PlatformIO handle dependencies for us. Unfortunately, there was a lot of work time that ended up getting eaten up resolving some strange UART behavior that was occurring when trying to send and receive CLI messages. This means I was unable to complete the survivor tag locationing.
Since I am now behind on survivor tag locationing, my plan is to spend the rest of tonight and tomorrow writing the pseudocode and initial implementation. I say “initial” implementation because this step, as well as implementing “on-the-fly” anchor calibration somewhat requires that we have a physical bot built. I intend on writing an implementation that essentially has the controller tell the UWB board to attempt ranging with a tag, and then separate those ranging requests and responses from the others with the anchors, however I anticipate needing to modify this code once we can test with a moving bot looking for the tag. Once I finish this, I will see if I can help Josh finish building the first bot and work on implementing Kalman filtering to fuse our IMU and UWB data to improve locationing accuracy. Essentially, I will keep working on survivor tag locationing, kalman filtering, and on the fly anchor calibration next week, but the first and last task won’t be able to be considered “finished” until we are able to verify with a real bot, although I will do as much as possible until then.
