-
Notifications
You must be signed in to change notification settings - Fork 3
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.
- The
urc_bringup
package is specifically for launching all nodes for a particular context. It includes two launch files:- launch/bringup.launch.py for launching all nodes for actual rover hardware.
- launch/bringup_simulation.launch.py
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 asdecode()
andread()
. - 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
- Our custom controllers are written in urc_controllers. The most important of these would be the
status_light_controller
. - One of our controllers, the
rover_drivetrain_controller
, is a copy of the previously implementedDiffDriveController
from theros2_controllers
packages. It is specified at urc_bringup/config/controller_config.yaml.
Have questions? Post them in the #robonav-software-help channel.