As the drone is nearing completion mechanically and electrically I thought it was a good idea to start the coding process. This year we decided on using a Behavioral Tree to implement autonomous task sequencing. Behavioural Tree is a more advanced version of Finite State Machines (FSM) which allow a robot or a game agent to be more reactive and handle corner cases which is something an FSM is not capable of doing. The use of a behavioral tree also results in a more robust and modular code which will improve the quality of the coding process. To create the behavioral tree I used a drag-and-drop interface called Groot 2. This interface allowed me to draw the diagrams and it also generated the XML code that represents the structure of the trees that I’ve created. Other than the behavioral tree, Xinhao and I also created and tested a beta computer vision model that we trained with the data we collected last week. The model seemed to work as expected as we tested it with live footage. Now the next step for me as the software lead is to write the C++ code needed to implement the behavioral tree. The steps later would be writing and integrating the ROS2 (Robot Operating Software) code and the Computer Vision model with the behavioral tree code. Even though we have a working Computer Vision Model it is incomplete. We need to create a new one with all the images we want the drone to be able to detect, thus we will be recording more training data next week and training a new model.
Below is an image of a behavioral tree diagram I’ve created for detecting a marker that is at the bottom of the pool and then advancing toward the direction the marker is pointing.

