FEED(OPCS) Optical Printer Control System FEED(OPCS) NAME feed - feed motion control moves to motors every camera frame USAGE feed [chans] [file] # start feeding motors from file feed off # disable feeding [chans] declares specific channels to be used from the file, and should consist of combined channel letters (ie. 'efgh'), Asterisk (*) can be used to specify ALL channels. [file] specifies the name of the file containing the positions for the channels. [off] tells FEED to cancel any FEEDs in progress. EXAMPLE feed efgh zoomfile.pos # Specify motion control file to # control the e,f,g,h channels. feed off # cancel any motion control files # that may currently be in progress. feed * zoomfile.pos # all channels from file # (note: abc chans are ignored) DESCRIPTION FEED sets up per-frame motion control for situations such as zooms and pans to be automatically controlled by an ASCII file containing columns of numbers that represent absolute positions. When FEED has been given a file, any command that shoots a frame on the camera (such as cam or rep) will first read the next positions from the file, send the motors to their new positions, and then shoot the frame. This will continue until the end of the FEED file is reached, at which point the FEED file is automatically turned off. The file will be read one line at a time for each frame exposed. When the end of the file is reached, the feed command is disabled, and the file is closed. FEED files can be disabled prematurely by specifying feed off, cancelling any FEED that is in effect, closing the file. FEED is functionally similar to the FDI/FDO commands in that FEED does not actually shoot any frames, but sets things up so that when commands such as cam or rep are used, the motors move to the positions JUST BEFORE the camera shoots each frame. POSITION FILES (xxx.pos) Position files can be created in a text editor by typing in the values manually (see 'FEED FILE FORMAT' below), or by using external programs to generate the numbers (e.g. 'ease.exe' for generating ease-in/outs) The file contains white space delimited columns of numbers. Each line in the file corresponds to a frame on the camera. Each white-space delimited column corresponds to a motor axis or 'channel'; the first column being channel 'a', the second 'b', and so on. Lines that start with '#' are ignored, so that comments can be included within the file for readability. Example: # zoom.pos file # a b c d e f g h i .. 0 0 0 0 0 0 505 100 0 <-- frame 1 0 0 0 0 112 0 505 201 0 <-- frame 2 0 0 0 0 340 0 505 302 0 <-- frame 3 0 0 0 0 652 0 505 403 0 <-- frame 4 0 0 0 0 1034 0 505 504 0 <-- frame 5 0 0 0 0 1480 0 505 605 0 <-- frame 6 0 0 0 0 1982 0 505 706 0 <-- frame 7 In this case the 'e', 'g' and 'h' channels have moves programmed into them; 'e' has a ramp, 'g' has a holding position of '505', and 'h' has a linear ramp. The rest of the channels are zero. So to use just the 'e' channel from this file, the operator would use: feed e zoom.pos rep 20 ..this will set up and shoot the motion control move; each time the camera exposes a frame, the 'e' channel will move to the next position specified in the file under the 'e' column. For more info on the position file format, see 'POSITION FILE FORMAT' below. SPECIAL CHANNELS Currently, FEED ignores channels ABC, even if specified. These correspond to the Aerial, Main, and Camera respectively, and are only controlled by shooting commands (PRO2, PRO, CAM, etc) FEED is only for the positioning non-shutter motors. Like the GO(OPCS) command, if you have zoom and follow focus channels configured on your system, FEED will do auto-follow focus ONLY if the focus channel is specified to FEED. The file need not contain any relevant values for the focus channel, but the channel must be specified in order to do a follow focus zoom. Typically channels are assigned this way: a - aerial projector (if any) b - main projector c - camera d - fader (if any) e - zoom, usually the lens f - focus, usually the camera body g - filter wheel (if any) Only the a/b/c/d channels must be assigned as shown; if there's a fader, it must be on the 'd' channel, the camera must be on 'c'. The other channels (e/f/g/h..) can be assigned to any axis you like; the above are just recommendations. FOLLOW FOCUS In order for follow focus to work, the follow focus channel (f) must be specified to FEED. The values in the file for that channel will be ignored if INTERP is configured for followfocus, and can therefore be all zeroes. The INTERP command will control the motor movement for this channel, automatically slaving the position of the focus to the positions on the zoom (e), based on the interpolations. If the focus channel is not specified to FEED, zooms will move without moving the focus channel. In the following example, 'e' is the zoom, and 'f' is focus, with the 'f' channel slaved to the zoom with an INTERP command (not shown): feed ef zoom.pos # DO follow focus during zooms feed e zoom.pos # DONT follow focus during zooms If you want to specify your OWN focus positions in the FEED file, simply disable the INTERP(OPCSDEFS) command for the focus channel: ! echo interp f - 0 0 0 > foo.foo ! ldefs foo.foo This disables interpolation slaving for the focus channel, so that it can be run like a normal channel, using the values from the file for the positions. POSITION FILE FORMAT Position files are simple ascii files. They can be created with text editors, custom programs, or with software that comes with OPCS to create position files (e.g. ease.exe, gr.exe, etc). o Lines whose first character starts with '#' are ignored. These are comment lines, and are not parsed by FEED(OPCS). o Each line in the file is considered a 'frame'. o Each line should have no more than 256 characters. o Each number on the line represents an ABSOLUTE POSITION for that channel's motor. There is no way to represent RELATIVE positioning in a FEED file currently. o The channels are always (ABCDEFGH..) respectively from left to right. Even though the software always ignores values for the 'abc' channels, some value (usually zeroes) must be there. o Numbers are normally ASCII signed integers, although can be floating point values for channels such as the fader, to specify floating point 'degrees'. Here is a sample file that has a 5 frame zoom programmed into the 'e' channel: # TEST.POS # A B C D E F G H 0 0 0 0 10 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 45 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 65 0 0 0 Although values must be specified in the A,B and C columns, they are automatically ignored by the OPCS software to avoid screwing up the camera and projector positions which are better controlled by other commands such as CAM, PRO and REP. ♀ To use the above file: feed ef test.pos # Start 'feed'ing numbers from test.pos cam 5 # Shoot all 5 frames in the file Note that you can use any shooting command, including RAT and REP to shoot the frames. The rule to remember is new positions are fed to the motors BEFORE the camera ever shoots a frame. SEE ALSO GO(OPCS) - Move motors some distance or to new positions INTERP(OPCSDEFS) - configure channel position interpolations ORIGIN Gregory Ercolano, Los Feliz California 01/10/91