Skip to content

Codebase Walkthrough

David Calderon edited this page Aug 25, 2024 · 10 revisions

This page will serve as an interactive "lab" that will help familiarize you with the codebase.

Control

We use the ROS 2 Control framework for real-time control of our rover. As a primer, please review this page first, which outlines the architecture of the framework.
Hardware Interfaces

  • Our collection of hardware interface implementations can be found in urc_hw/src/hardware_interfaces. In each of the .cpp files you will find some sort of implementation for the hardware interface template class, such as decode() and read().
  • For each of the hardware interfaces, you will find them plugged into to the rover model at urc_hw_description/urdf/ros2_control.xacro. When the model is pulled as part of a launch invocation, each of the hardware interfaces is read and available for use.

Controllers

  • We only have one controller, the rover_drivetrain_controller, which is a copy of the previously implemented DiffDriveController from the ros2_controllers packages. It is specified at urc_bringup/config/controller_config.yaml.

Navigation

Clone this wiki locally