University of Adelaide Summer Research Internship 2019
Team Members: Yingzhe Guo, Abdul Rahim Mohammad, Swapnil Srivastava, Glenn Walsh
From the Raspberry Pi, a suite of sensors that detect range will be used. This includes an ultrasonic sensor, a laser sensor, an IR sensor, and a ZX range sensor. The Acceleration, angular velocity, and magnetic field are obtained from the IMU. This information is then fused with a complementray filter. The distance to object will then be passed through a filter to obtain a more appropriate reading. All of this data will be packaged together to be sent as environmental data to be used by other modules.
Main File (Main.py):
-IMU and Distance Fusion
-TCP Transmission from Raspberry Pi (to Matlab / Simulink)
Receive transmission from Raspberry Pi to Matlab (TCPPackageRx.m)
Receive transmission from Raspberry Pi to Simulink (Unpack.slx)
Receive transmission from Raspberry Pi to Arduino via Serial (myduino.ino)
Base SLAM Algorithm (map.m)
SLAM Algorithm with cone spread (MapWithRays.m)
I didn't manually write any lengthy magnetometer calibration algorithms, but the following websites are great resources for learning about it. If you have any interest in this topic, these are all must reads:
https://www.fierceelectronics.com/components/compensating-for-tilt-hard-iron-and-soft-iron-effects
https://thecavepearlproject.org/2015/05/22/calibrating-any-compass-or-accelerometer-for-arduino/
Filters used for processing SONAR and LIDAR data, these files are optional.
Kalmanfilter.py for Kalman filter and Alphatrimmer.py for alphatrimmer
Individual files for all the sensors.
USS.py for SONAR, LIDAR.py for LIDAR, IMU.py for IMU, SERIAL_COMM.py for serial communication.