Figure 2: FixtureNet process block diagram.
The new version of FixtureNet is implemented as a Java applet that can be downloaded from a Web site and run in the user's browser. The browser can be any Java-compatible browser such as Netscape 2.0, Netscape 3.0 or Internet Explorer 3.0. In contrast to many stand-alone Java applets where all processing is performed within the Java client, FixtureNet II uses the original FixtureNet server process running on the HTTP server machine to perform the actual fixturing calculations.
The choice to leave the fixturing calculations on the server was a deliberate one motivated by a number of considerations. First of all, we did not wish to spend time re-inventing an existing "wheel". We wanted to proceed to new work such as interactive analysis rather than re-implementing the existing algorithm. Secondly, we wanted to explore the possibilities of using Java in a client-server environment rather than a client-only model, which is more typical of early Java applets. There is work under way at USC, the birthplace of FixtureNet I, to convert the fixturing engine to Java. When that becomes available, we will be able to compare the client-server and client-only implementations.
Figure 2 shows the process architecture of the old and new versions of FixtureNet. The top terminal (labeled FN 1) shows the CGI-based architecture. All user inputs (mouse and button clicks) result in a call to the HTTP server that creates and executes the CGI processes. To compute fixtures, a CGI program calls the Fixture Server via TCP/IP, which in turn runs the Fixture Synthesizer via Microsoft's DDE. For details of FixtureNet I, see the original FixtureNet paper [Wagner et al., 1996].
Ideally, the new FixtureNet client would invoke the Fixture Server directly, as shown in the middle terminal (FN 1.5). However, the Fixture Server is not capable of handling multiple users simultaneously. Therefore, we created a Proxy Server to handle the coordination of multiple users, as shown in the bottom terminal (FN 2). This is a significant improvement over the original version because it does not require creating a new CGI process for every user input.
The process of fixturing in FixtureNet can be broken into the following steps: entering the part, computing the solution, and displaying the solution.
Part input with the new version appears much the same as part input with FixtureNet. The user clicks on the workspace canvas to trace out the vertices of the part. The difference is that all display processing is performed locally within the Java client program. Each mouse click is interpreted locally and the display is updated without intervention from the server.
When the user is ready to submit the part, he clicks on the submit button. This draws in the last edge of the part and submits it to the FixtureNet server. The applet then polls the FixtureNet server waiting for the server to complete the fixturing calculations.
When the server is done, the applet requests the first fixturing solution. A solution is composed of the positions of the three locators, the position and orientation of the clamp, and a translation and rotation transformation to apply to the part to position it in the fixtured pose. At this point the solution can be displayed to the user. The user can scan forward and backwards through the fixture solutions that the server found.