| name | rocket-design-manufacturing-automation-shenzhen22 |
| description | Automated rocket design and manufacturing program built by students for aerospace engineering workflows |
| triggers | ["help me design a rocket","automate rocket manufacturing process","use the Shenzhen22 rocket design tool","calculate rocket trajectory and performance","generate rocket component specifications","optimize rocket design parameters","export rocket manufacturing files","simulate rocket flight dynamics"] |
Rocket Design and Manufacturing Automation Program
Skill by ara.so — Design Skills collection.
This is a TypeScript-based automation program for rocket design and manufacturing developed by students at Shenzhen 22nd High School. The system provides tools for designing rocket components, calculating performance parameters, simulating flight dynamics, and generating manufacturing specifications.
Installation
git clone https://github.com/Kevin100202/Rocket-Design-and-Manufacturing-Automation-Program-from-Shenzhen22highschool.git
cd Rocket-Design-and-Manufacturing-Automation-Program-from-Shenzhen22highschool
npm install
npm run build
npm start
Project Structure
The project typically follows this structure for rocket design automation:
src/
├── core/ # Core design engine
├── components/ # Rocket component models
├── simulation/ # Flight simulation modules
├── manufacturing/ # Manufacturing file generation
├── calculations/ # Performance calculations
└── utils/ # Helper utilities
Key Concepts
Rocket Component Design
Define rocket components with physical and performance specifications:
interface RocketComponent {
name: string;
type: 'noseCone' | 'bodyTube' | 'fins' | 'motor' | 'recovery';
dimensions: {
length: number;
diameter: number;
thickness?: number;
};
material: string;
mass: number;
}
interface RocketDesign {
id: string;
name: string;
components: RocketComponent[];
specifications: {
totalMass: number;
centerOfGravity: number;
centerOfPressure: number;
stability: number;
};
}
Creating a Basic Rocket Design
import { RocketDesigner } from './core/RocketDesigner';
import { MaterialLibrary } from './utils/MaterialLibrary';
const designer = new RocketDesigner();
const noseCone = designer.createComponent({
name: 'Nose Cone',
type: 'noseCone',
dimensions: {
length: 150,
diameter: 50
},
material: MaterialLibrary.PLA,
shape: 'ogive'
});
const bodyTube = designer.createComponent({
name: 'Main Body',
type: 'bodyTube',
dimensions: {
length: 400,
diameter: 50,
thickness: 3
},
material: MaterialLibrary.CARDBOARD
});
const fins = designer.createFinSet({
name: 'Trapezoidal Fins',
type: 'fins',
count: 3,
dimensions: {
rootChord: 100,
tipChord: 50,
span: 80,
thickness: 3
},
material: MaterialLibrary.BALSA_WOOD
});
const rocket = designer.assembleRocket({
name: 'Model Rocket Alpha',
components: [noseCone, bodyTube, fins]
});
Performance Calculations
Stability Analysis
import { StabilityCalculator } from './calculations/StabilityCalculator';
const calculator = new StabilityCalculator(rocket);
const cog = calculator.calculateCenterOfGravity();
console.log(`Center of Gravity: ${cog} mm from nose`);
const cop = calculator.calculateCenterOfPressure();
console.log(`Center of Pressure: ${cop} mm from nose`);
const stability = calculator.calculateStability();
console.log(`Stability Margin: ${stability} calibers`);
if (stability < 1) {
console.warn('Warning: Rocket is unstable. Move CG forward or increase fin size.');
} else if (stability > 2) {
console.warn('Warning: Rocket is overstable. May weathercock in wind.');
}
Flight Simulation
import { FlightSimulator } from './simulation/FlightSimulator';
const simulator = new FlightSimulator({
rocket: rocket,
motor: 'C6-5',
launchAngle: 90,
windSpeed: 5,
temperature: 20,
pressure: 101325
});
const flightData = await simulator.simulate();
console.log(`Maximum Altitude: ${flightData.maxAltitude.toFixed(2)} m`);
console.log(`Maximum Velocity: ${flightData.maxVelocity.toFixed(2)} m/s`);
console.log(`Flight Duration: ${flightData.flightTime.toFixed(2)} s`);
console.log(`Landing Distance: ${flightData.landingDistance.toFixed(2)} m`);
simulator.exportTrajectory('./output/trajectory.csv');
Manufacturing Automation
Generate CAD Files
import { CADExporter } from './manufacturing/CADExporter';
const exporter = new CADExporter(rocket);
await exporter.exportComponent(noseCone, {
format: 'STL',
outputPath: './manufacturing/nose_cone.stl',
units: 'mm',
resolution: 'high'
});
await exporter.exportComponent(fins, {
format: 'DXF',
outputPath: './manufacturing/fins.dxf',
units: 'mm'
});
await exporter.exportAssembly({
format: 'STEP',
outputPath: './manufacturing/rocket_assembly.step'
});
Generate Cutting Templates
import { TemplateGenerator } from './manufacturing/TemplateGenerator';
const generator = new TemplateGenerator();
const finTemplate = generator.createFinTemplate(fins, {
includeMargins: true,
marginSize: 5,
includeGuides: true,
scale: 1.0
});
await finTemplate.exportPDF('./manufacturing/fin_template.pdf');
await finTemplate.exportSVG('./manufacturing/fin_template.svg');
Bill of Materials
import { BOMGenerator } from './manufacturing/BOMGenerator';
const bomGenerator = new BOMGenerator(rocket);
const bom = bomGenerator.generate({
includeMaterials: true,
includeHardware: true,
includeCosts: true
});
console.log(bom.toTable());
await bom.exportCSV('./manufacturing/bom.csv');
await bom.exportJSON('./manufacturing/bom.json');
Advanced Features
Parametric Design Optimization
import { DesignOptimizer } from './core/DesignOptimizer';
const optimizer = new DesignOptimizer({
objectives: ['maxAltitude', 'stability'],
constraints: {
maxMass: 500,
maxLength: 600,
minStability: 1.5,
maxStability: 2.0
}
});
const optimizationResult = await optimizer.optimize({
finSpan: { min: 60, max: 100 },
finChord: { min: 80, max: 120 },
bodyLength: { min: 300, max: 500 },
noseConeLength: { min: 100, max: 200 }
});
console.log('Optimal parameters:', optimizationResult.parameters);
console.log('Expected altitude:', optimizationResult.altitude);
Multi-Stage Rockets
import { MultiStageRocket } from './core/MultiStageRocket';
const multiStage = new MultiStageRocket();
const stage1 = designer.assembleRocket({
name: 'Booster Stage',
components: [
boosterBody,
boosterFins,
boosterMotor
]
});
const stage2 = designer.assembleRocket({
name: 'Upper Stage',
components: [
upperNoseCone,
upperBody,
upperMotor
]
});
multiStage.addStage(stage1, { separationDelay: 2.5 });
multiStage.addStage(stage2, { ignitionDelay: 0.5 });
const multistageFlightData = await multiStage.simulate();
Configuration
Create a rocket.config.ts file for project-wide settings:
export const rocketConfig = {
units: {
length: 'mm',
mass: 'g',
velocity: 'm/s',
force: 'N'
},
simulation: {
timeStep: 0.01,
dragCoefficient: 0.75,
airDensity: 1.225
},
manufacturing: {
tolerance: 0.5,
defaultMaterial: 'PLA',
printer3D: {
bedSize: { x: 220, y: 220, z: 250 },
layerHeight: 0.2,
infill: 20
}
},
safety: {
minStability: 1.0,
maxStability: 3.0,
structuralSafetyFactor: 1.5
}
};
Common Patterns
Design Validation Pipeline
import { DesignValidator } from './core/DesignValidator';
async function validateAndExport(rocket: RocketDesign) {
const validator = new DesignValidator();
const validation = await validator.validate(rocket);
if (!validation.isValid) {
console.error('Design validation failed:');
validation.errors.forEach(err => console.error(`- ${err}`));
return false;
}
if (validation.warnings.length > 0) {
console.warn('Design warnings:');
validation.warnings.forEach(warn => console.warn(`- ${warn}`));
}
const exporter = new CADExporter(rocket);
await exporter.exportAll('./output');
return true;
}
Batch Simulation
import { BatchSimulator } from './simulation/BatchSimulator';
const batch = new BatchSimulator(rocket);
const motors = ['A8-3', 'B6-4', 'C6-5', 'D12-7'];
const results = await batch.simulateMotors(motors);
const optimal = results.reduce((best, current) =>
current.maxAltitude > best.maxAltitude ? current : best
);
console.log(`Optimal motor: ${optimal.motor}`);
console.log(`Altitude: ${optimal.maxAltitude.toFixed(2)} m`);
Troubleshooting
Stability Issues
If your rocket shows poor stability:
if (rocket.specifications.stability < 1.0) {
fins.dimensions.span += 10;
rocket.addBallast({ mass: 20, position: 'nose' });
rocket.recalculate();
}
Export Errors
If CAD export fails:
try {
await exporter.exportComponent(component, options);
} catch (error) {
if (error.code === 'INVALID_GEOMETRY') {
console.error('Component geometry is invalid. Check dimensions.');
} else if (error.code === 'FILE_WRITE_ERROR') {
console.error('Cannot write to output directory. Check permissions.');
}
}
Simulation Convergence
If simulations don't converge:
const simulator = new FlightSimulator({
rocket: rocket,
motor: 'C6-5',
solver: {
method: 'RK4',
maxIterations: 10000,
tolerance: 1e-6,
adaptiveStep: true
}
});
API Reference
Core Classes
RocketDesigner - Main design interface
StabilityCalculator - CG/CP calculations
FlightSimulator - Flight dynamics simulation
CADExporter - Manufacturing file export
DesignOptimizer - Parametric optimization
MaterialLibrary - Material properties database
Utility Functions
import { convertUnits, calculateArea, interpolate } from './utils';
const meters = convertUnits(1000, 'mm', 'm');
const finArea = calculateArea(fins);
const thrustAtTime = interpolate(motorData.thrust, 2.5);
Resources