و بما انك يا صديقي رجل برمجه سأهدي لك هذا
We came to the point where we needed to know about rocket guidance..
The best two books we found on the subject are "Guided Weapon Control
Systems" by Paul Garnell, 1980. (A good book, but out of print. See a
college or university library. If they don't have it, get an inter-library
loan.) And "Tactical & Strategic Missile Guidance", 1990 by Paul Zarchan.
He has some FORTRAN programs that can be rewritten into BASIC, and the book
is very readable. Chapter two is most applicable to small rockets. Chapter
nine is also useful. It's helpful to read these two books together if
possible. In a library these are found as: UG 1310.(author's initial) (35
or 37) (year), Library of Congress system. Also good is the article
"Sidewinder" in "Invention and Technology" magazine, Fall 1989, pp. 56-63.
In the library you may also see "Radar Homing Guidance for Tactical
Missiles" by James. Some pages were useful. "Automatic Control of
Aircraft and Missiles" by Blakelock, is about autopilots. Very scholarly.
The newest book we've found (1991) is "Modern Navig., Guid. and Control
Processing" by Ching-Fang Lin, which is still in print.
To help you appreciate rocket guidance, just imagine you're running
at a right angle to get on a moving bus which has its door open. There
are basically four methods of getting to the door. (1) You could simply
run straight toward the door at all times as it moves. (2) You could run
at a fixed course that depends on the your speed and some initial sightline
angle. (3) You could lead by a changing angle that depends on your speed
and the bus' angular speed. (proportional navigation) (4) You could run at
some constant sighting angle to the door at all times (demand angle of
sight). Some of these strategies work more efficiently than others, but
might be impractical to implement in an amateur rocket.
Sighting on the door, your sightline swings at some angular speed.
Proportional navigation means that your running-path rotation rate is
faster than the sightline rotation rate by some constant multiplier. So
eventually your path will be "correct" and your sightline angle won't
change. Now you are on a perfect intercept course. The higher the
multiplier number, the faster you correct your path early in the flight
and the less correction is needed later in the flight.
This multiplier number is called the navigation constant. By the way,
if it is 1, you're just running straight at the door. This choice is
simple to implement, but it's a poor choice when you get close to the
door, because the bus may go faster than you can run! And as you get very
close, the bus may change speed or direction.
Steering a rocket using proportional navigation depends on three factors.
The sideways or lateral acceleration, called latax, given to the rocket
must be the product of: (1) the navigation constant times (2) the closing
velocity times (3) the target sightline rotation rate. Sounds simple
enough. The difficulty comes from how you measure the last one, how you
measure the rocket's true orientation and motion rates in space
and how you implement the control motions.
The multiplier number is always 1 or higher and the closing speed
can't be zero if you want to have intercept, so let's look at the last
factor. This is the one you want to have be zero, which means that
you're on a collision course and you now need no further correction.
Approaching impact, the target always appears to be at the SAME angle.
Early ship captains knew that this was a sure sign a collision at sea
was about happen, and which would ruin their whole day!
An interesting curiosity regarding the perfect initial lead angle is
that if your rocket has the same vertical speed as the target's constant
horizontal speed during its entire flight and the target flies straight,
you need only to launch at exactly as many degrees ahead of the target as
the target is seen in degrees above the horizon at the instant of launch.
If the navigation constant is 2, the sightline angle is always constant
and the rocket will move in a circle. (The angle you use is dependent on
closing speed.) The navigation constant ideally is 3, needing the least
correction over the entire flight. In reality it varies from 2 to 5,
depending on the motions of the target and the rocket. The navigation
constant depends roughly on the area of the fins and the fin swing angle.
This can be measured in a wind tunnel.
The closing velocity is how fast the rocket and target come together.
But if we're only hitting a towed kite or bunch of balloons, the closing
velocity is the vertical velocity. You can find this speed using a BASIC
rocket flight dynamics program, providing you know your individual rocket's
true parameters. Or you can track it using a camera-theodolite.
How do we account for the sightline swing? We don't. An operator
watches a TV monitor and controls sightline angle. A concentric circle
representing the chosen angle is marked on the screen. The operator is to
keep the target on the circle (not centered) with it's flight direction
passing thru the center of the screen. Automatic roll control is a must,
by using the sun's position or a good model-helo gyro.
Latax is produced by aerodynamic forces acting on control surfaces.
This force increases with speed if fins are rigid. Twice the speed means
four times the force! We could keep this force proportional to fin angle
by keeping the speed constant. But a better way is by making the force
independent of speed. You can do this simply by spring-loading the
control surfaces, like the Sidewinder's. Measure the side force on the
rocket in the wind tunnel. Choose the spring stiffness such that the
servo angle is proportional to the latax force at different wind speeds.
This way the same joystick motion gives the same control force.
In the wind tunnel, the air speed is the "closing speed" in the case of
flying up to hit a target. Getting technical, the control surfaces put a
force on the rocket. This is ahead of the CG and even farther ahead of
the CP. This torque accelerates the rotation like a weathervane around
the CP, at a rate that depends on the torque divided by the moment of
The main thing is to have a stable rocket with sufficient control to
do the job, found by some trial-and-error. Using a stable rocket, having
a cooperative target, using roll hold and an operator looking at video
from the rocket, we can do a creditable job of coming pretty close to the
Included are some IBM BASICA (GW-BASIC) computer programs to display
possible engagement trajectories. They show the path of the rocket going
after a target flying along the top edge from right to left. Sightlines
are drawn from the rocket to the target. These paths are not dynamically
correct. But they can reveal some general ideas.
PROPONAV begins with the rocket on the ground in line with target path.
You input the initial launch point in reference to where the target enters
the view, the angle from vertical rocket axis to the target at launch, the
navigational ratio and the rocket's speed compared to the target's speed.
The program stops if the target got away, the rocket goes off the display
or the rocket went past the target. A small crossbar is drawn at the rocket
location at the end of the engagement. The screen height and width are
equal by pixel count but not geometrically. The program may end when the
target & rocket are very close with a BASIC round-off error.
SIGHTANG is a display of what path would occur if an operator or a
fuzzy-logic system kept the target at the same leading angle to the rocket
axis at all times. This is "demand angle of look". It seems to be the
system most amenable to a simple autonomous system. The program assumes
the launch direction is in line with the target flight path and that roll
is held fixed. The height and width are equal by pixel count. There is a
speed look-up data table in lines 20-50. You can find out from a BASIC
dynamics program, a video theodolite or by telemetry how your actual rocket
performs with a given motor. Divide the expected flight time up to the
target's altitude into 160 segments. Take the true speed in each interval,
multiply by 1.24 (for proper aspect ratio on the screen) and key this into
the DATA lines. Delete line 430 RESTORE. That is there only if the speed
is constant and line 26 is the single data entry.
Real-world rockets are a marvel of complex ingenuity. Integrating gyros,
rate gyros, accelerometers, resolvers (control mixers), rollerons,
(gyroscopic/aerodynamic roll stabilizers), range radar, Doppler radar
(speed-finding "police" radar) and filters (computers to modify several
control-input signals into desired outputs). They measure the true space
motions and angles of the rocket and target. They must control the rocket
correctly. Priority one is that they must work, in all circumstances, with
many sources of "noise" and with little human assistance.
We don't have those pressures because we're going slow and "setting up"
the target. We will conveniently ignore noise. Like the sun-eye roll
control that is causing the rocket to roll back and forth. Imperfect
joystick skill. The time lag in the servos. The wind blowing. The control
fins fluttering. The target not cooperating. The actual motor you're using
isn't the same as the average motor. The fins aren't exactly straight. The
list goes on.
Real rockets must account for all these conditions. When they get it
right, they're called kinetic energy weapons or "hittiles" (as opposed to
"missiles"). They hit, not miss and their kinetic energy does the damage.
This is a source of wonderment to us.
We tried SACLOS (semi-automatic-command-line-of-sight) control using a
simple circuit, TV camera and a bright light on a radio-control car. It
was a full-throw right-or-left-turn, no-neutral system and did not work
A word about potential for misuse is appropriate. We have encountered
a few individuals who fear technological changes as the end of the world,
especially if it seems to them to be "dangerous". Perhaps they fear
backlash by federal regulators. But you can't uninvent any of the crucial
components that make our projects possible. The motive is not to use this
rocket or this report to promote mayhem, but to help us understand guidance
CG - center of gravity (balance point)
CP - center of (aerodynamic) pressure
latax - lateral acceleration
PROPONAV BASIC program
SIGHTANG BASIC program
SACLOS Autonomous Guidance
Rocket backpack flight back to home page
BASIC Proportional Navigation Program
20 REM PROPONAV rocket intercept display, input launch angle
25 KEY OFF
30 SCREEN 2: REM set screen hi-res
40 INPUT "Offset (+319 to -319, + is to right) ";O
50 INPUT "Launch angle (degrees, up = 0, + is to right) ";L
60 INPUT "Navigational Ratio (2 to 5) ";N
70 INPUT "Rocket Speed Multiplier (1 = target speed) ";S
80 CLS: REM clear screen
81 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PR INT:REM print data out of
path of engagement
82 PRINT "Offset=";O
84 PRINT "Angle =";L
86 PRINT "N.R. =";N
88 PRINT "Speed =";S
100 S=S*4.84: REM set rocket/target speeds to screen aspect ratio
110 DRAW "BM639,199": DRAW "M+1,0": REM draw framing dot lower right
130 DRAW "BM0,199":DRAW "M+1,0":REM draw framing dot lower left
135 DRAW "BM0,0": DRAW "R3": REM draw target at upper left of field
140 REM loop to draw target positions
145 DRAW "BR61":DRAW "R3":C=C+1:IF C<10 THEN 140
150 C=0 :REM zero counter
155 DRAW "BM319,199" :REM move to bottom of screen, center
160 DRAW "BR=O;":REM offset launch point
165 REM initialize variables
170 X2=639:X1=631 :REM set up initial sightline shift (8 steps)
185 Y1=199:Y2=199:REM set initial height
187 DRAW "A1": REM vertical reference
190 REM main program loop
191 X4=POINT(0):REM locate rocket horizontal position before move
192 Y2=POINT(1):REM locate rocket vertical position before move
200 DRAW "TA=L;U=S;":REM turn angle L, move rocket
201 X3=POINT(0):REM locate rocket horiz pos after move
202 Y1=POINT(1):REM locate rocket vert pos after move
210 IF Y1=0 THEN 350:REM stop if rocket above target
211 IF Y1<0 THEN 350
212 IF Y1>199 THEN 350:REM stop if rocket hit ground
220 T2=ATN((X2-X4)/Y2):REM calculate sightline before move
225 T1=ATN((X1-X3)/Y1):REM calculate sightline after move
230 T=(T2-T1)*57.3:REM determine sightline rotation in degrees
260 IF X1=-9 THEN 350: REM end if target safely off screen
290 L=L+(T*N):REM rotate rocket
295 IF T>9 THEN PRINT:PRINT"Round-Off Stop":PRINT:GOTO 350:REM avoid roundoff
300 X2=X2-8:X1=X1-8 :REM move target 8 steps
309 C=C+1: REM bump loop counter
310 IF C=8 THEN C=0 :DRAW "NM=X2;,0;":REM draw sightline
340 GOTO 190
BASIC Sighting Angle Rocket Guidance Program
10 REM SIGHTANG rocket intercept display, constant sightline angle, integ
20 REM List speed lookup table from dynamics program here, 160
22 REM values that represent 1/160 of expected flight in units of
24 REM target speed times 1.24375, and remove line 360 RESTORE.
26 DATA 2
38 KEY OFF
40 SCREEN 2: REM set screen hi-res
50 INPUT "Offset (+319 to -319, + is to right)? ",O
60 INPUT "Sightline Angle? ",E
80 CLS: REM clear screen
90 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PR INT:REM print data out of
path of engagement
100 PRINT "Offset=(+319 to -319, + is to right)? ";O
110 PRINT "Sight Angle=(degrees, up = 0, + is to right)? ";E
120 DRAW "BM639,199": DRAW "M+1,0": REM draw framing dot lower right
130 DRAW "BM0,199":DRAW "M+1,0":REM draw framing dot lower left
140 DRAW "BM0,0": DRAW "R3": REM draw target at upper left of field
150 REM loop to draw target positions
160 DRAW "BR61":DRAW "R3":C=C+1:IF C<10 THEN 150
170 C=0 :REM zero counter
180 DRAW "BM319,199" :REM move to bottom of screen, center
190 DRAW "BR=O;":REM offset launch point
200 REM initialize variables
210 X2=639:REM set up initial target sightline
220 X4=329+O: REM set initial launch point
230 Y2=199:REM set initial height
240 REM main program loop
250 T=ATN((X2-X4)/Y2):REM find initial angle
260 READ S
270 T=-(T-E):REM rotate rocket
280 DRAW "TA=T;U=S;":REM turn angle L, move rocket
284 X4=POINT(0):REM locate rocket horiz position
286 Y2=POINT(1):REM locate rocket vertical position
288 IF X4<=0 THEN 380
290 IF Y2=0 THEN 380:REM stop if rocket above target
300 IF Y2<0 THEN 380
310 IF Y2>199 THEN 380:REM stop if rocket hit ground
320 X2=X2-4 :REM move target 4 steps
330 IF X2<0 THEN 380: REM end if target safely off screen
340 C=C+1: REM bump loop counter
350 IF C=16 THEN C=0 :DRAW "NM=X2;,0;":REM print sightlines
370 GOTO 240