Find_Orb : Orbit determination from observations

Last updated 2023 March 15

Screen shot of 'find_orb.exe'

Read this first!

A lot of people find that the on-line, server-based version of Find_Orb does everything they need, without having to install software or learn much about it. The on-line version allows you to enter observed positions in the Minor Planet Center's 80-column observation format, and/or the newer ADES astrometric format , and/or in the AstDyS/NEODys .rwo format, and determine the orbital elements matching those observations and compute ephemerides. It can even get the data for a desired object from the Minor Planet Center for you.

The on-line version has gradually improved. But it doesn't always find an orbit (usually for "hard" cases such as some artificial and natural satellites and sun-grazing comets, or difficult linkages of short arcs). You can't compute Monte Carlo variant orbits, or try out different orbit determination schemes. You can't exclude observations (except by removing them from the input data), or filter them, or fit non-gravitational parameters. If you're looking for these and other advanced capabilities, you'll have to install Find_Orb. (Which, fortunately, isn't all that difficult.)

Find_Orb users group

You can click here for information about the Find_Orb users group. Announcements of new versions will be made there; questions about the program or about orbit determination in general, or requests for new features, are welcome.

What is Find_Orb?

Find_Orb can take a set of observations of an asteroid, comet, or natural or artificial satellite, given in the MPC (Minor Planet Center)'s "traditional" 80-column punch-card format, and/or the newer ADES astrometric format , and/or the NEODyS or AstDyS formats, and find the corresponding orbit. You can click here for further details on how to format astrometric data for Find_Orb.

Having found the orbit, you can generate ephemerides for desired quantities for a desired time span from a desired location.

Find_Orb is available as executable Windows software, for both 64-bit Windows and 32-bit Windows, and as C/C++ source code that can be compiled to make Windows or Linux or Mac or *BSD console applications (one interactive, one non-interactive). In what follows, I'll just refer to "Find_Orb", without making a distinction between the various flavors. There are some minor differences, which will be noted where they matter.

Click here for a screenshot. The interactive version looks like this on all platforms.

Why a console version of Find_Orb?

I think a lot of people look at a console-based program and think : "The 1980s called, and they want their software back." If you're among them, I urge you to withhold judgment. A well crafted console program can be quite straightforward to use. I am confident that if you give this program a try, you'll be converted to this point of view.

Initially, the Windows version of this program had a GUI. As the Linux/Mac/*BSD version gained capabilities, the Windows version fell far behind. Aside from the pain involved in maintaining two different interfaces (this software is essentially a one-person project), the Windows GUI version relied on proprietary Microsoft tools (MFC, theoretically the "Microsoft Foundation Classes", but widely known as the "Microsoft Frustration Classes".) As the nickname suggests, these tools can be painful to use. Making the interface work in exactly the way I'd like is, generally speaking, easier in the console version.

The differences between the Microsoft and non-Microsoft console Find_Orbs are minor, from the standpoint of both the programmer and the user. So I now have only one program to document instead of two, and don't have to worry about Microsoft abandoning MFC.

Installing console Find_Orb

If you're using a non-Microsoft Windows® system (GNU/Linux, OS/X, *BSD, etc.), you'll have to download the source code and compile and install it. Click here for information on building Find_Orb from source. (Doing so is not especially complicated, but you will need to know some basics about compiling software.)

At some point, I do expect to provide directions for compiling Windows console Find_Orb from source. I usually do that by cross-compiling with MinGW-w64, or sometimes with Microsoft Visual C/C++. However, I also know that most Windows users do not want to compile code; they're more used to getting a pre-built executable.

To do that, just download and install either the Windows console version for 32-bit Windows or the Windows console version for 64-bit Windows. UnZIP the entire contents file you've downloaded into a new folder, and run either find_o64.exe or find_o32.exe.

To add a desktop icon for the program, you should right-click on the desktop, then New... then Shortcut. You'll be asked to identify the program; you can browse for find_o64.exe or find_o32.exe in whatever directory you unZIPped the file. A warning that (annoyingly), Windows may show the file name as find_o64 or find_o32 with the '.exe' hidden.

Alternatively, if you open File Manager, you can find the executable, right-click on it, and click "Create Shortcut".

Running Find_Orb

You can (and as a start, should) just run find_o32.exe or find_o64.exe much as you would the GUI version. After a brief splash screen, it will show you a menu :

   F Select file containing astrometry
   N Give object name and get data from MPC
   C Copy astrometry from clipboard
   Q Quit

Under non-Windows systems, there will also be an option to

   S Copy astrometry from selection

If you've run the program a time or two, it'll also list your recently-accessed files.

The options do pretty much what they say. For the first, you'll need a file with astrometry in the Minor Planet Center's 80-column format, and/or in the ADES format, in either XML or PSV format. You can also include observations in the AstDyS/NEODyS .rwo format, also used by the OrbFit software.

Find_Orb is quite flexible about mixing data from the various formats. Note that this is a little unusual; such mixed data will probably not work with other software. But it's very convenient when you have, say, some 80-column data from MPC plus some ADES observations you've just made.

If there's data for multiple objects, they'll all be listed, and you can select one with mouse or keyboard. If there's only data for a single object, it will automatically be selected and loaded.

If you're a command-line sort of person, you can run find_orb (filename) and get that file loaded.

If you cut observations and put them into the clipboard, you can just use the third line above to have Find_Orb read those data. On Linux, you can select observations (and not put them in the clipboard) and use the 'copy astrometry from selection' option.

The 'N' (get the data from MPC) option requires an Internet connection. Select it, and you can enter an MPC designation such as "1940 AB" or "C/2010 J2" or "Icarus". Find_Orb will send a query to the MPC for astrometry for that object, and then load it. Note that this doesn't work with NEOCP objects (yet).

Object information screen

Once data for an object is loaded, the initial display will be much as shown in the above screenshot. You get rather a lot of information, and it can be somewhat overwhelming at first.

It may help to notice that the information is split into five sections :

The 'menu' section starts with R1 and R2, the distances to the first and last observations. Next are a set of menu options with an orange background, ending in the [+] and [?] options. Click on [+], and another line of menu options will be added; you can repeat to get four or five lines of options (the number depends on your screen width). Click on [?] to get some overall help. (You will see the [?] at upper right in many dialog boxes and such; in each case, it will provide help specific to that situation in the program.)

If you move the mouse over a menu option, you'll get 'hint' text describing what that option does. (Similarly in most other parts of this screen; move it over the 'Epoch' or 'mean residual' texts in the orbital elements section, for example, and it'll tell you what clicking on those areas would do.)

The second line lists perturbing objects included in the orbital calculation. Shown are nine planets, the earth's moon, and 'asteroids'. You can normally ignore this line; in fact, I'm thinking about having it suppressed by default. Find_Orb will usually do quite a good job of figuring out which perturbing objects matter in a given situation. Incidentally, you may be interested in Find_Orb's force model (effects it includes/doesn't include), though the brief version is : it generally includes anything that would really affect the results.

The 'observation information' section will, reasonably enough, tell you details about the currently selected observation in the observations section. There is a lot packed into those five lines : the elongation from the sun, phase angle, the object's motion and distance at that time, its observed and computed magnitude, and so on.

The orbital elements section shows the elements determined by Find_Orb, in a somewhat modified version of the "eight-line" format used by the Minor Planet Center. It also gives some information about which observations were used, and about the uncertainties in the elements.

The 'observations' section lists some or all of the observations. You can click on an observation to select it, or use the arrow keys or page down/page up among the observations, or use your mouse scroll wheel, or click on the scroll bar at the right edge of the section. (You can also resize the window to get more observations on-screen at once.)

For each observation, much of the usual 80-column data is shown : the time and observed RA/dec and magnitude of the observation, the three-character MPC code of the observatory, and so forth. Next to that data, you also get the 'Xres' (RA residual) and 'Yres' (declination residual) for the observation.

You can right-click on an observation to bring up a pop-up menu of options for that observation (turning it on/off in the orbit fit, changing the assumed uncertainties for it, finding the next or previous observation from that observatory, and so on.)

The 'stations' section lists the observatories that got the data. Often, there are too many observatories to list them all at once; the program will list any for which observations are being shown, then list the larger contributors. You can right-click on a station to get some options to, for example, select all observations from that station.

If you simply move the mouse over one of these lines and pause, you'll get a summary of how many observations that station made of the object and when it made them.

The next lines, in white text on red, give information about the currently selected observation. In the above screen shot, I clicked on the highlighted observation (I could have used the cursor keys to do the selecting instead). The information shown is exactly what you'd see in the GUI version, though no longer at the bottom of the dialog.

Next, in black text on olive-green, are the orbital elements. One can click on 'Perihelion' to reset the central object and get, for example, barycentric or geocentric elements; on "(J2000 ecliptic)" to get equatorial or body-frame elements; on "Epoch" to reset the epoch.

Click elsewhere among the elements, and you'll get the popup menu shown at the top of this page, with options to set a lot of orbital-element related parameters.

There are a lot of ways to select observations. You can, of course, just click on one. Or you can click, drag, and release to select multiple observations; or click on one, then Shift-click or Ctrl-click on another.

If multiple observations are selected, you'll get information about those observations as a group. (This is similar to what you'd see in the Windows GUI version.)

You can right-click on an observation and get options to toggle it or reset its uncertainty.

Click on a station code at the bottom, and you'll get several options : select all observations from that station, or find the next or following observation from that station. Once you've selected one or more observations, you can hit 'x' to toggle them all, or '%' to set the uncertainty for all of them.

A (sometimes) useful feature : double-click on the list of MPC station codes, and Find_Orb will temporarily display as many of them as it can (usually, all stations that observed the object). You can then click on a particular station to display the next observation from it. This can help when you've got a lot of observations and would like to find the two or three from a particular station.

Ephemerides

After you've gotten the orbit you want, you can either hit 'm' (for 'make ephemerides') or click on the 'epheM' text on the top line. You will get a list of ephemeris options. You can, for example, click on the 'Location' line (or hit 'l') to be prompted for a three-digit ephemeris code. Note that hitting '?' (or clicking on the "help about making ephemerides" line) will get you some more detailed help.

To do

I think most Find_Orb users have just been using the Windows GUI version. I've done quite a bit to make that version as user-friendly as possible. The console version will have to be roughly as user-friendly before it can replace the GUI one; otherwise, I'll be in for a blizzard of "how do I..." inquiries.

• Most of the items in the Windows GUI 'settings' dialog are either inaccessible or not as easy to find as they ought to be. Note that most of them can be accessed by editing the file environ.dat; you can just edit that file in Notepad or the editor of your choice and tweak settings, and it's nicely documented (in my opinion as its author, anyway). Also (helpful hint!) you can click on the [+] at the end of the menu bar to get another line of menu items; keep doing that, and you get rather a lot of menu items. (Clicking on [-] makes them go away, logically enough.) But it'd be best if settings were made less obscure.

• Certain clickable areas should be more noticeable. For example, you can click on the epoch to be prompted to reset the epoch, or on R1/R2 to be prompted to reset those values. You can click on the 'observatory info' at the bottom to get a pop-up menu of options such as selecting all observations from a particular observatory. You can right-click on an observation to get a pop-up menu of options for that observation, and so on. But it's not at all obvious that you can do that.

• I've added a few [?] "help" buttons, but most dialogs ought to have them.