Cubs2
User Guide
Installation
Dependencies
ROS 2 Installation
Python Dependencies
System Libraries
Building Cubs2
Verifying Installation
Quick Start
Basic Simulation
Launch Options
Visualization Only
Replay Mode
Available Topics
Using the Joystick Panel
Adjusting Simulation Parameters
Next Steps
Simulation
Architecture
Physics Model
SportCub Dynamics
State Vector
Control Inputs
Integration
Numerical Methods
Timestep Selection
Real-Time vs Accelerated
Configuration
Aircraft Parameters
Initial Conditions
Visualization
RViz Topics
3D Model
Troubleshooting
Simulation Unstable
Poor Performance
See Also
Control
Controller Architecture
Autolevel Controller
Usage Example
Tuning
PID Gains
Anti-Windup
Manual Control
Gamepad
Virtual Joystick
Control Topics
Published
Subscribed
Advanced Usage
Custom Controllers
Closed-Loop Analysis
See Also
Planning
Dubins Paths
What are Dubins Paths?
Path Types
Algorithm
Usage
Python API
ROS2 Node
Racecourse Navigation
Gate Sequencing
Visualization
Parameters
Turning Radius
Cruise Altitude
Path Following
Published Topics
Subscribed Topics
Control Integration
Advanced Usage
Custom Path Generation
Obstacle Avoidance
See Also
Visualization
RViz Panels
Video Panel
Joy Panel
Sim Panel
HUD Panel
3D Visualization
Aircraft Model
Force Visualization
Path Display
Racecourse
Camera Control
Follow Mode
Fixed Views
Recording
Configuration
RViz Config
Topics to Display
Troubleshooting
Video Panel
Performance
See Also
Package Documentation
cubs2_msgs
Messages
AircraftControl.msg
Usage
Dependencies
cubs2_description
Files
URDF Model
3D Meshes
Launch Files
robot_state_publisher.launch.py
Usage
In RViz
In Launch Files
Customization
Modify Visual Appearance
Adjust Inertial Properties
Dependencies
cubs2_dynamics
Features
Modules
Model Framework
Aircraft Models
Analysis Tools
Hierarchical Model Composition
Examples
Simulate Aircraft Dynamics
Compute Trim Condition
Linearization
Testing
Dependencies
No ROS Dependencies
API Reference
Dynamics API
cubs2_control
Features
Controllers
Autolevel Controller
Closed-Loop System
PID Controller
Testing
Dependencies
Design Philosophy
cubs2_simulation
Nodes
sim.py
pose_to_tf.py
gamepad_control.py
Usage
Launch Simulation
With Launch File
Gamepad Control
Configuration
Simulation Parameters
Gamepad Mapping
Testing
Dependencies
Architecture
cubs2_planning
Features
Nodes
planner_dubins.py
Dubins Path Planning
Path Types
Usage
Launch Planner
Custom Gate Sequence
Python API
Racecourse Integration
Visualization
Testing
Dependencies
Algorithm Details
cubs2_rviz
Plugins
Video Panel
Joy Panel
Sim Panel
HUD Panel
Usage
Load Panels in RViz
Pre-configured RViz Config
Development
Building
Plugin Architecture
Adding a New Panel
Qt Integration
Dependencies
Testing
cubs2_bringup
Launch Files
sim.xml
viz.xml
gamepad_control.xml
keyboard_control.xml
planning.xml
Complete Workflow
Standard Simulation
Manual Control
Replay Analysis
Configuration
RViz Layout
Racecourse Gates
Dependencies
Design Philosophy
cubs2_data
Configuration Files
sportcub.yaml
sim.yaml
control.yaml
Datasets
Flight Test Data
Replay
Usage
Loading Configuration
Customization
Adding Parameters
Creating Datasets
API Reference
Dynamics API
Control API
Planning API
Simulation API
Development
Contributing
Development Setup
Clone and Build
Code Style
Python
C++
Linting
Testing
Unit Tests
Coverage
Integration Tests
Pull Request Process
1. Fork the Repository
2. Create a Branch
3. Make Changes
4. Run Tests
5. Submit Pull Request
Code Review
Checklist
Addressing Feedback
Documentation
Building Docs
Writing Docstrings
License
Questions?
Architecture
System Overview
Layer Responsibilities
Cyecca Layer
cubs2_dynamics
cubs2_control
cubs2_simulation
cubs2_planning
cubs2_rviz
cubs2_bringup
Data Flow
Simulation Loop
Message Types
Custom Messages
Standard Messages
Hierarchical Composition
ModelSX Framework
Plugin Architecture
RViz Panels
Design Principles
Separation of Concerns
Composition over Inheritance
Type Safety
Testing
Performance Considerations
Simulation Speed
Memory
Extensibility
Adding Aircraft
Adding Controller
Adding RViz Panel
See Also
Testing
Test Organization
Directory Structure
Running Tests
All Tests
Single Package
Specific Test File
With Coverage
Unit Tests
Dynamics Tests
Controller Tests
Planning Tests
Integration Tests
Closed-Loop Tests
Simulation Tests
Property-Based Testing
Using Hypothesis
Regression Tests
Baseline Comparisons
Continuous Integration
GitHub Actions
Coverage Requirements
Debugging Failed Tests
Verbose Output
With PDB
Logging
Performance Testing
Benchmarks
Best Practices
Test Structure
Fixtures
Parametrize
See Also
Cubs2
Index
Index