Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SPAAAAAAAAACE

listrophy
August 12, 2014

 SPAAAAAAAAACE

Let's learn us a space exploration! In this talk, Brad will wax poetic on the particulars of getting into space, getting around in space, and getting things done in space. PID controllers, orbital insertion, and how rockets work by smashing molecules together. There may or may not be any math, programming, or vacuum-induced hypoxia in this talk.

listrophy

August 12, 2014
Tweet

More Decks by listrophy

Other Decks in Science

Transcript

  1. Apollo Guidance Computer Compared to iPhone 5S: • 284 times

    heavier • 2600 times slower (Hz) • 17 million times less memory Photo in public domain via Wikimedia Commons
  2. A Fire Upon the Deep Ashes of Victory At All

    Costs Earth Unaware Echoes of Honor Ender’s Game Children of the Mind Ender’s Shadow First Meetings Flag in Exile Honor Among Enemies Field of Dishonor An Incomplete List In Enemy Hands Mission of Honor On Basilisk Station Shadow Puppets Shadow of the Giant Shadow of the Hegemon Red Mars Speaker for the Dead The Short Victorious War War of Honor Wool The Honor of the Queen
  3. Orbital Requirements • 1 Large Body, 1 Small Body •

    Circumferential Velocity • Only Gravity • No Intersection
  4. Kinetic Energy Ek = ½ m v2 Ek / kg

    = ½ (17,000 mph)2 Ek / kg = 29.6 MJ
  5. Potential Energy Ep = mgh Ep / kg = (9.81

    m/s2)(330 km) Ep / kg = 3.2 MJ
  6. Equatorial Surface Speed • 1,040 mph • With help: 16,000

    mph • Without help: 17,000 mph • Savings: ~5.4%
  7. Conservation of Momentum def system_momentum(objects)! objects.reduce(0) do |sum, (mass, velocity)|!

    sum + momentum(mass, velocity)! end! end! ! ! assert_equal \! system_momentum([[100 , 0 ], [100_000 , 0 ]]),! system_momentum([[100 , -10 ], [100_000 , 0.01 ]])! # g m/s g m/s
  8. Conservation of Momentum def system_momentum(objects)! objects.reduce(0) do |sum, (mass, velocity)|!

    sum + momentum(mass, velocity)! end! end! ! K = 1_000! assert_equal \! system_momentum([[100*K, 0*K], [100_000*K, 0*K ]]),! system_momentum([[100*K, -10*K], [100_000*K, 0.01*K]])! # kg km/s kg km/s (modified for rocketry)
  9. Eccentricity def type_of_trajectory(e)! case e! when 0.0 then :circle! when

    0.0...1.0 then :ellipse! when 1.0 then :parabola! else :hyperbola! end! end
  10. Orbital Points of Interest peri- apo- Closest Farthest Earth Perigee

    Apogee Sun Perihelion Aphelion Any Periapsis Apoapsis
  11. Kepler’s Third Law # P₁² P₂²! # --- = ---!

    # a₁³ a₂³! ! def solar_period(distance_in_au)! Math.sqrt(! 365.26**2 / # earth's period! 1**3 * # earth's distance in AU! distance_in_au**3! )! end
  12. Orbital Periods Distance (AU) Duration (days) Earth 1.0 365.26 Venus

    0.73 (-27%) 226.5 (-38%) Mars 1.52 (+52%) 686.7 (+88%)
  13. Kepler’s Laws of Planetary Motion 1. Orbits are elliptical 2.

    Faster when closer; Slower when farther 3. Big orbits take longer
  14. require 'excon'! require 'kuby'! ! link = Kuby::Link.new! link.connect! or

    fail 'Could not connect'! ! link.throttle_full! link.toggle_sas! ! link.stage! and sleep 2! ! prev_err = error =! integral = derivative = 0.0! ! prev_time = link.mission_time gitlab.com/listrophy/spaaaaaaaaace
  15. loop do! cur_time = link.mission_time! dt = cur_time - prev_time!

    error = 150.0 - link.altitude! integral = integral + error * dt! derivative = (error - prev_err)/dt! ! kp, ki, kd = 0.1, 0.003, 0.08! new_throttle = (kp*error + ki*integral + kd*derivative)! ! new_throttle = 1.0 if new_throttle > 1.0! new_throttle = 0.0 if new_throttle < 0.0! ! link.set_throttle new_throttle! ! prev_err, prev_time = error, cur_time! sleep 0.2! end gitlab.com/listrophy/spaaaaaaaaace
  16. Throttle → Height • Force = mass * acceleration •

    ∫ acceleration dt = velocity • ∫ velocity dt = height
  17. loop do! cur_time = link.mission_time! dt = cur_time - prev_time!

    error = 150.0 - link.altitude! integral = integral + error * dt! derivative = (error - prev_err)/dt! ! kp, ki, kd = 0.1, 0.003, 0.08! new_throttle = (kp*error + ki*integral + kd*derivative)! ! new_throttle = 1.0 if new_throttle > 1.0! new_throttle = 0.0 if new_throttle < 0.0! ! link.set_throttle new_throttle! ! prev_err, prev_time = error, cur_time! sleep 0.2! end gitlab.com/listrophy/spaaaaaaaaace