A Julia package for simulation of generic ram-air kites built on SymbolicAWEModels.jl.
RamAirKite.jl provides model setup utilities, simulation functions, and configuration structs for simulating ram-air kites. Unlike V3Kite.jl which is tailored for the TU Delft V3 kite with KCU-specific steering/depower percentages, RamAirKite is designed for generic ram-air kite simulations with direct torque control.
using Pkg
Pkg.develop(path="/path/to/RamAirKite.jl")using RamAirKite
using GLMakie # For visualization
# Create configuration
config = RamAirSimConfig(
physical_model = "ram", # "ram", "simple_ram", or "4_attach_ram"
sim_time = 10.0, # seconds
v_wind = 15.51, # m/s
tether_length = 50.0, # meters
steering_freq = 0.5, # Hz
steering_magnitude = 1.0, # Nm
)
# Run simulation
sam, syslog = run_ram_air_simulation(config)
# Visualize
plot(sam.sys_struct, syslog)
replay(syslog, sam.sys_struct)The package supports three physical model variants, each with different levels of complexity:
Standard 2-group ram-air kite with bridle system:
- Full bridle geometry
- 2 deformable wing groups (left/right)
- Suitable for most simulations
Simplified model without bridle:
- Direct tether connection to wing
- Single-segment tethers
- Faster simulation, reduced fidelity
Detailed 4-point bridle attachment:
- 4 deformable wing groups
- Full pulley constraints
- Highest fidelity, slower simulation
The ram-air kite uses a 3-winch torque control system:
- Power Left Winch: Controls left side of power line
- Power Right Winch: Controls right side of power line
- Steering Winch: Differential steering control
For simulation, the package provides sinusoidal steering oscillation via sim_oscillate!(), which applies torque inputs to create periodic left-right steering motions.
RamAirSimConfig(
# Model selection
physical_model = "ram", # Model variant
wing_type = QUATERNION, # QUATERNION or REFINE
# Simulation parameters
sim_time = 10.0, # Total time [s]
dt = 0.05, # Time step [s]
vsm_interval = 3, # VSM update frequency
# Environment
v_wind = 15.51, # Wind speed [m/s]
upwind_dir = -90.0, # Upwind direction [deg]
# Initial conditions
tether_length = 50.0, # Tether length [m]
elevation = nothing, # Elevation [deg] or nothing
# Steering control
steering_freq = 0.5, # Oscillation frequency [Hz]
steering_magnitude = 1.0, # Torque magnitude [Nm]
steering_bias = 0.2, # Torque bias [Nm]
# Model options
remake_cache = false, # Force rebuild cache
brake = true, # Winch brake engaged
)julia --project=examples examples/ram_air_kite.jl- SymbolicAWEModels.jl: Core symbolic modeling
- VortexStepMethod.jl: Aerodynamic calculations
- KiteUtils.jl: Common types and utilities
- GLMakie.jl (optional): Visualization
The package includes bundled data files in data/ram_air_kite/:
system.yaml- System configurationsettings.yaml- Simulation settingsvsm_settings.yaml- Aerodynamic settingsram_air_kite_body.obj- 3D CAD modelram_air_kite_foil.dat- Airfoil shape*_polar.csv- Cl/Cd/Cm polars with deflection angles
MPL-2.0