To answer your second question: we have actually touched on sensor fusion here, however we will try to go more in depth into the algorithm.
We have many sensors on our robot however each sensor is inherently inaccurate. For example, our distance sensor readings can be useless when an opponent robot blocks it. Hence, we dynamically assign weights to each sensor considering the variance of the sensors in the previous cycle. As an example, if the IMU suggests our robot’s bearing is straight and the TOF sensors’ readings add up to the total width of the field, we know that there is no robot blocking the TOF sensor and it is accurate. Therefore in this case, the TOF sensors’ data will be assigned a high weightage.
We also assign weights based on a sensor’s innate uncertainty. For example, through testing we know our light sensors consistently detect the line and do not give false positives. Hence, we assign a high weightage to the light sensors’ data, so whenever the light sensors detect a line we know that the robot is definitely near the edges of the field.
Upon assigning weights, we will average our sensor’s data in that axis, and the sensor data with higher weights will have a greater effect on the final result.
However, through this we see the need for us to implement so many sensors. The light sensor, the most accurate tool for us, is only effective near the edges of the field. Another accurate sensor, the mouse sensor, is prone to the robot “jerking” and “lifting up” thus being unable to detect the robot’s movement for long periods of time. “Global” sensors which can be effective anywhere on the field also suffer from inaccuracies; for example the camera is prone to lighting changes, the IMU (accelerometer) is prone to drifting after integrating the values twice, etc etc.
In reality we also add on a Kalman filter for each sensor to take into account readings over time and produce more accurate estimations which are not prone to noise and other inaccuracies.
However, we have not been able to extensively test out this algorithm yet due to this pandemic situation so we cannot comment on its accuracy or effectiveness.
We hope these replies adequately answers your questions!