University Rover Challenge
Software Technical Lead for the University Rover Challenge team under RIT Space Exploration (SPEX).
Project Overview
The University Rover Challenge (URC) is an annual university level robotics competition held by the Mars Society to design and build a rover that could be used in Martian environments.
- My Role: Software Technical Lead
- Overhauled the entire software architecture into a modular system
- ROS for data and communications
- Embedded C++ for peripheral control
- Hosted design reviews for electrical, mechanical, and software teams.
URC Missions
- Science Mission: Visit sites of biological interest and collect and analyze samples.
- Extreme Retrieval & Delivery Mission: Pick up and deliver objects in the field.
- Equipment Servicing Mission: Perform several dexterous tasks, including typing on a keyboard, using a screwdriver, and plugging in a USB stick.
- Autonomous Travel Mission: Autonomously traverse between staged markers.
Technical Contributions
- Team Mentorship: Provided guidance to underclassmen on the team across multiple disciplines.
- Led full-team meetings to review rover architecture and subsystems.
- Hosted cross-disciplinary design reviews for electrical, mechanical, and software teams.
- Advised on PCB design practices to ensure robust hardware development.
- Mentored software team members on robotics theory, ROS architecture, and software design principles.
- Modular Software Architecture: Designed a scalable architecture using ROS (Python) for data handling and communications.
- Implemented on ROS Melodic with a Jetson Nano, with the team actively transitioning to a Jetson Orin Nano.
- Created custom ROS messages for encoding and decoding CAN communication.
- Enables a common message structure between both the ROS network and the embedded network, where each message has an ID and an 8-bit buffer.
- Messages are encoded and decoded on both ends depending on their application.
- A singular CAN node sends and receives messages between UART and their respective ROS topics.
- Integrated custom kinematic libraries for the drive base and robotic arm control.
- Developed a custom state machine for mission planning and execution.
- Interface with higher bandwidth sensors including LiDAR, GPS, Cameras, communication channels.
- Embedded Systems Development: Developed firmware for sensor integration and peripheral control in C++.
- Used Teensy 4.1 microcontroller boards for subsystem management and peripheral control.
- Main Body Board: Drive base, temperature control, UART interface with Jetson.
- Arm Board: Robotic arm control.
- Science Board: Science payload control. Peripherals include soil collection actuator, fluorometer, micropump.
- Utilized the FlexCAN library for efficient CAN communication between microcontrollers and UART for communication with the main computer.
- Integration and Autonomy Support: Serve as an active resource for team members to address integration challenges, autonomy concerns, and high-level design questions.