Agent skill · software engineering · aradotso

manpads-system-launcher-and-rocket

manpads-system-launcher-and-rocket — an agent skill for coding agents.

Why this skill is useful

Includes executable firmware for rocket stabilization and telemetry that extends the AI's capabilities in aerospace applications.

What it needs

Requires arduino installed locally. About 6k tokens when loaded. Last updated 2026-07-09. 70 stars on the source repository.

What this skill does

/ ├── CAD/ # Fusion 360 .f3d files for rocket and launcher ├── Firmware/ │ ├── Rocket/ # ESP32 flight controller firmware │ └── Launcher/ # Launcher sensor and telemetry firmware ├── Simulation/ # OpenRocket .ork simulation files └── Documentation/ # System flow diagrams, BOM, specs cpp #include <Wire.h> #include <MPU6050.h> #include <ESP32Servo.h> MPU6050 imu; Servo canardPitch; Servo canardYaw; // PID state float pitchIntegral = 0, yawIntegral = 0; float prevPitchErr = 0, prevYawErr = 0; const float Kp = 1.2f, Ki = 0.01f, Kd = 0.4f; const int SERVOCENTER = 90; const int SERVORANGE = 30; // ±30 degrees max deflection void setup() { Wire.begin(); imu.initialize(); if (!imu.testConnection()) { Serial.println("MPU6050 connection failed"); while (1); } canardPitch.attach(18); // GPIO18 canardYaw.attach(19); // GPIO19 canardPitch.write(SERVOCENTER); canardYaw.write(SERVOCENTER); Serial.begin(115200); } float pidUpdate(float error, float &integral, float &prevError, float dt) { integral += error dt; float derivative = (error - prevError) / dt; prevError = error; return Kp error + Ki integral + Kd derivative; } void loop() { static unsigned long lastTime = micros(); unsigned long now = micros(); float dt = (now - lastTime) / 1e6f; lastTime = now; int16t ax, ay, az, gx, gy, gz; imu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // Convert raw gyro to deg/s (MPU6050 default ±250°/s scale) float pitchRate = gy / 131.0f; float yawRate = gz / 131.0f; // Target: zero rotation rate (stabilization mode) float pitchCmd = pidUpdate(pitchRate, pitchIntegral, prevPitchErr, dt); float yawCmd = pidUpdate(yawRate, yawIntegral, prevYawErr, dt); // Clamp and apply pitchCmd = constrain(pitchCmd, -SERVORANGE, SERVORANGE); yawCmd = constrain(yawCmd, -SERVORANGE, SERVORANGE); canardPitch.write(SERVOCENTER + (int)pitchCmd); canardYaw.write(SERVOCENTER + (int)yawCmd); delayMicroseconds(2000); // ~500 Hz loop } cpp // Fuse accelerometer angle with gyro integration float compFilter(float accelAngle, f …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills aradotso/manpads-system-launcher-and-rocket

View the source on GitHub

Browse the @skills marketplace