ROB 320 Course Projects
Undergraduate Fall 2025 Robotics Core Grade: A
ROB 320: Robot Operating Systems provides a comprehensive, hands-on deep dive into the full robotics stack, ranging from architecting custom low-level middleware and IPC protocols to implementing complex spatial math for kinematic transformation and motion control.
Topic 1: Architecting ROS
This series focuses on the fundamentals of communication in robotics. By stepping away from pre-built middleware, I explored how data moves between hardware and software, implementing custom IPC protocols, reliable network streaming, and a full-scale publish/subscribe ecosystem from the ground up.
Project #1: Keyboard Teleoperation & IPC
- Objective: Building a robust command-line interface to drive the MBot Omni, specifically implementing a custom IPC (Inter-Process Communication) library from scratch to handle data flow between the keyboard and the robot hardware.
- Build: Developed a custom serialization protocol to marshal 2D twist commands across named pipes (FIFOs).
- Functionality: Developed two primary nodes:
teleop_keyboardfor translating WASD/QE inputs into serialized messages andmbot_driverto interface with the MBot Control Board.
Project #2: Click-to-Drive & Networking
- Objective: Shifting from local pipes to TCP/IP networking, enabling a remote GUI to control the robot via reliable, bidirectional data streams over a wireless network.
- Build: Implemented
ServerandClientabstractions to handle concurrent connections and thread-safe data handling. - Functionality: Hosted a TCP server on the MBot to stream real-time RPLIDAR A1 scans and odometry to a remote client while receiving position commands.
Project #3: RIX (Robot Interprocess eXchange)
- Objective: Developing a custom publish/subscribe middleware (similar to ROS) to enable asynchronous, loosely-coupled communication between modular robot nodes.
- Build: Architected a central discovery server (
RIXHub) to manage node registration and direct peer-to-peer subscriber connections. - Functionality: Created a fully modular ecosystem where
PublisherandSubscriberclasses automate connection logic, allowing nodes to be swapped without system interruption.
Topic 2: Deploying ROS
With the communication layer established, this topic shifts toward spatial intelligence. These projects involve implementing the mathematical backbone of robot motion—navigating complex transformation trees and using numerical optimization to solve kinematic chains for high-DOF manipulators.
Project #4: Forward Kinematics & TF Library
- Objective: Developing a robust transformation library to manage coordinate frame trees and time-synced spatial relationships between robot links.
- Build: Created a
TransformBufferfor time-aware pose lookups and aFrameGraphto maintain the parent-child tree structure. - Functionality: Built a
Robot State Publisherthat broadcasts the real-time 3D pose of every link by interpolating joint states and navigating the kinematic tree.
Project #5: Inverse Kinematics (IK)
- Objective: Solving the Goal-to-Joint problem using numerical optimization to allow a robot end-effector to follow 6-DOF targets in Cartesian space.
- Build: Derived an analytical $6 \times N$ Jacobian matrix and implemented an iterative solver with joint clamping and step-scaling.
- Functionality: Successfully enabled precise end-effector control for serial manipulators (like the Fetch robot), allowing them to reach arbitrary spatial setpoints via optimized trajectories.