Project Timeline

Sprint #1 -  (10/23/24 - 11/5/24)

Our first step in this project was to collaboratively ideate based around all of our  Learning Goals . We came up with many promising and ambitious ideas, including an autonomous hot-air balloon, an automatic drumming robot. Eventually, we settled on an autonomous waiter robot that could navigate a human space to deliver food. We wanted to utilize the ROS2 architecture to control it, and we wanted it's end-effector to be modularly swappable. 

After deciding on a building a waiter robot, we defined our high-level goals for this project. We outlined our mechanical systems, including the drivetrain, and interchangeable module system, as well as our software systems, including the ROS2 topics, nodes, and modules that sense the world through sensors and interact with the world through motors. Then we got to work! 

Electrical/Firmware Progress: 

On the electrical side, we did hand calculations to estimate our drivetrain motor requirements, and using these estimates, selected suitable motors. Using the electrical specifications of these motors, we selected a battery that could power them, with a margin of error large enough for an additional module motor. With these critical components selected, we ordered motor drivers, as well as a buck converter to power our Raspberry Pi and Arduinos from the battery. Once the components arrived, we assembled a barebones power distribution network for testing.


Software Progress: 

While waiting for these components to arrive, we examined the possibility of using microROS with Raspberry Pi Picos, but determined that the learning curve would be too steep to be able to meet our ambitious project goals, so instead we decided to pivot to using Arduino Unos as our microcontrollers. We also performed all of the computational setup for our Raspberry Pi, including downloading ROS2 packages, setting up a workspace, and assigning it a static IP address on the OLIN-ROBOTICS network. This included extensive setup for getting the Raspberry Pi to communicate with our Picos over MicroROS, although this wasn’t a part of our future system.

We established our codebase on Github and created a node for teleoperating the robot, which would later help us test the robot’s drivetrain hardware integrity. We created a motion execution node which performed basic proportional correction in the linear and angular dimensions to get from its current location to an arbitrary pose elsewhere. Finally, we began testing an open-source AprilTag recognition package developed for ROS2 systems like ours.


Mechanical Progress:

We created the preliminary CAD for our robot frame, chassis and drivetrain. We settled on having two driven wheels mounted along the center axis of the robot, so that we could have only two driven wheels and still turn in place. We also sourced some caster wheels to use to keep the robot balanced. After getting our CAD finalized, we began sourcing the other materials we would need.


Demo and Debrief:

At the end of Sprint 1, we presented our progress to the rest of the class. We demonstrated our complete chassis, our power distribution system, and our AprilTag recognition through ROS. After our sprint review, we met as a team to reflect on our progress and team structure, and set goals for the upcoming sprint.

Our goals for Sprint 2 were to finish constructing the drivetrain, design the tray module and modular mechanical output system, start writing libraries for various robot sensors like the buttons and encoders, and develop and implement the architecture for our robot’s localization and navigation system.