- Kicking Off With Pizzas & Turtles!
- A Pythonic Triumph Over Turtles
New Year, New Priorities
Coming out of RoboSub 2024, the CS team experienced a change in leadership and already had several priorities lined up for the new year. The team split up into multiple groups to address these priorities.
Max Lin & Hung Le stepped into their new roles as Co-Presidents and CS team leads. They oversaw the club’s transition into the new year, formulated club goals, formed relationships with Duke faculty and administrators, and took over club administration.
Mathew Chu & Nathanael Ren – who joined the CV + GUI team as freshmen – were promoted to CV + GUI leads. They addressed bugs in our Foxglove GUI we experienced at competition. Along with Amir Ergashev and Rico Zhu, they wrote a blog post highlighting the club’s successes and future plans – scheduled to be posted next month on Foxglove’s website.
The CS team’s main goal for the fall semester is to migrate our entire codebase to ROS2. We currently use ROS1 Noetic, which will reach its end-of-life in May 2025. Will Denton – who stepped down from his position as Co-President – stepped up to lead the ROS2 migration.
Our most pressing priority, however, was CS onboarding. This year, CS onboarding was led by Vedarsh Shah, Nathan Yang, and Raul Galvez. The first official meeting for new members was set to be Saturday, September 7 – just two weeks after classes started. Therefore, the CS onboarding team had to quickly formulate a plan and prepare the required materials.
Leveling Up
In previous years, CS onboarding was unorganized and very hands-off. New members had to go through a complicated installation and setup process, and were then given a set of tasks to complete independently, without much guidance from the team. Many – especially those without prior programming experience – struggled to understand fundamental concepts and complete the tasks. Most weren’t well-prepared to write software for our AUV.
Given these issues from previous years, the CS onboarding team decided that this year, we needed to revamp the entire experience. We wished to provide new members with a thorough introduction to fundamental robotics software concepts and prepare them well to take on more challenging tasks after onboarding.
Oogway’s software is built upon the Robot Operating System (ROS) framework. Understanding ROS is challenging for every new member – even for those with prior programming or robotics experience. Instead of introducing ROS with a boring set of slides, we decided to create an intuitive metaphor to explain the three major concepts of ROS: nodes, topics, and services.
Looks Delicious
Nathan and Vedarsh brainstormed over lunch, and came up with the (now famous) “Pizza Factory” metaphor. The metaphor related the process of assembling pizzas to how nodes within ROS communicate.
The factory would consist of several employees with specific roles in assembling the pizza. Each employee would represent a ROS node with a specific function. Each employee would receive a pizza, add on to it, and pass it to the next employee; this process repeated until the pizza was finished. Passing pizzas illustrates how ROS nodes publish and subscribe messages on topics. Some employees would also take orders from others for ingredients or bake time, analogous to nodes advertising and calling ROS services.
Since food is not allowed at our meeting location, we couldn’t make real pizzas. Instead, we decided to simulate pizza creation by drawing them on pieces of paper. The pizza dough, cheese, and sauce would be drawn first. Then, the toppings were added – each topping was drawn separately on small pieces of paper that were taped onto the pizza. Finally, the pizza was baked by shading it with a yellow or orange colored pencil.
The activity was very hands-on. The new members were split up into groups of five, with one group per table. The groups were given art supplies, each member was assigned a role, and off they went! The members within each group collaborated just like ROS nodes to construct the pizzas.
The activity involved several rounds of pizza creation. Each round included slight variations induced by calling ROS services with different values. All iterations had different topping requirements. Some iterations had a change in baking time, represented by shading the pizza in a different color.
To dress in theme, Vedarsh wore a Pizza hat, and Rico wore a pizza costume.
We concluded the first meeting with a speed round where the groups were challenged to make as many pizzas as possible within five minutes. Each member of the group with the most pizzas was awarded a 3D print of our AUV Oogway!
Taming Turtles
With fundamental ROS concepts mastered, it was time for the new members to see those concepts in action with a simulated robot. Turtlesim consists of a small turtle that moves around the canvas and draws a line wherever it goes. Since we are planning to transition our entire codebase to ROS2 this year, we decided to conduct this exercise in ROS2 Jazzy.
On the second day of our onboarding (9/12), we first set up everyone’s development environment for Turtlesim. In place of the tedious and error-prone installation process of previous years, we set up a GitHub Classroom and used GitHub Codespaces. By joining our GitHub Classroom, every member would automatically get their own fork of the Turtlesim repo. Then, with just the click of a button, they would launch a GitHub Codespace that is automatically configured and serves as the development environment. This enabled the new members to quickly dive into Turtlesim.
We then walked the new members through Turtlesim’s API, including how to use topics and services to make the turtle move, change the color of its pen, clear the canvas, and reset its position. They used the teleop node to control the turtle with arrow keys, and attempted to draw a square. Everyone found it quite difficult to draw a perfect square, foreshadowing the challenges to come.
Going Bigger and Better
This concluded the first phase of CS onboarding. The Pizza Factory activity introduced the fundamental concepts of ROS and the initial Turtlesim walkthrough demonstrated those concepts in a real ROS environment.
The first two meetings this year were a large improvement over those of previous years’ CS onboardings. We saw all of our new members engaged, eager to learn, and excited to be a part of the team.
Over the next two meetings, we plan to conduct guided coding sessions showing how to write Python code that interfaces with ROS to control the turtle and enable it to draw meaningful shapes. At the end, the new members will be challenged to use everything that they’ve learned about ROS and Python to implement a function on their own. More on that soon!