ME102B: Mechatronics Design usually assigns a semester long final project. This was changed to a week long mini project due to COVID.
I was taking an introductory robotics course simultaneously and wanted to create a simple project using the lab kit provided that relied on ROS framework so I could practice designing systems with ROS. I chose to make a 3D scanner because it used the last two sensors in the lab kit we never got to use in the assignments, an IMU and ultrasonic sensor.
The system diagram is shown below. The Arduino acts as a ROS node and publishes sensor data to my laptop. The IMU ROS node running on my laptop converted the 9-DOF IMU/MPU data into orientation data via a sensor fusion algorithm. The orientation data is combined with range measurements to produce 3D point clouds.
The IMU suffered from drift despite some effort to calibrate it. I also learned that using dead reckoning to determine an IMU's position in 3D space is difficult without additional sensors (perhaps another ultrasonic sensor to triangulate points and reduce dead reckoning drift). Because I didn't have the hardware to determine 3D location, the scanner could only scan a sphere whose origin is the ultrasonic sensor. Despite this, the device fulfilled its purpose of creating point clouds in 3D space and giving me ROS practice.
Practice implementing systems in ROS.