Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 3.31 KB

File metadata and controls

51 lines (40 loc) · 3.31 KB

Project Packages

The project uses ROS 2 and is divided into several functional subsystems, each located in its own directory. Below is a detailed description of each package included in the software stack.

Body

Packages describing the physical structure and kinematics of the robot.

  • description Contains the URDF robot model, 3D models (STL/DAE, such as omni_wheel), and launch files for visualization and loading the robot_state_publisher. Responsible for providing TF (Transforms) links between various nodes of the robot.

Brain - Logic

Packages responsible for making high-level decisions and managing the game state.

  • behavior_tree Package for running and managing Behavior Trees. Describes the match logic, the sequence of the robot's actions (collecting objects, moving, waiting) using the BehaviorTree.CPP library.
  • map_publisher Package for publishing the game field map and various zones. Reads the field layout and outputs it to ROS 2 for navigation and logic (e.g., location of pantries, unloading zones, and starting positions).

Brain - Navigation

Packages for motion control and path planning.

  • cmd_watchdog Opponent-aware command safety guard. Filters muxed velocity commands, blocks unsafe motion near detected opponents, and publishes safety state, visualization markers, and replan requests.
  • mpc_control Model Predictive Control. Generates optimal motor control commands, taking into account kinematic constraints and obstacles to follow a given trajectory.
  • navigation_monitor Navigation monitoring. Responsible for high-level movement control, provides action servers for tasks like "navigate_to_point", and monitors their successful execution.
  • planner Path planner (implements pathfinding algorithms, including CCMA). Builds a route from the current point to the target point while bypassing known obstacles.

Brain - Perception

Packages for working with sensors (cameras, lidars) and recognition.

  • bov_camera / camera_stream A node for working with machine vision camera. Responsible for sensor configuration, capturing frames, and publishing them (including compression).
  • bov_camera / camera_localization Camera-based localization module. Uses ArUco marker detection for fast tracking of the robot's position and determining the occupancy/dominance in regions of interest (nut_checker, opponent robots).
  • ekf_localization Extended Kalman Filter setup based on robot_localization. Runs local and global EKF nodes, fusing odometry, IMU, LiDAR pose, and camera pose inputs into filtered robot pose estimates.
  • lidar_localization Uses 2D LiDAR obstacle detections and known field landmarks to estimate the robot pose. Publishes LiDAR-based pose updates for localization.
  • opponent_tracker Tracks the opponent robot using LiDAR and camera observations, publishing opponent odometry for the planner and cmd_watchdog.

Services

Auxiliary tools for development, monitoring, and debugging.

  • monitoring / foxglove Integration with Foxglove Studio to view telemetry, logs, and the state of behavior trees via a web browser or desktop application.
  • visualization / rviz2 Configured RViz2 visualization environment to display the map, lidar point clouds, TF tree, markers, and visual model of the robot in real-time.