Download January 2000 modules and NTLs, unzip to neattools directory
Download Viz VRML files that go with above NTLs, unzip to viz directory
Visualizer documentation is separate, look here for Java 3D visualizer documentation.
Added JTTSObj for text-to-speech output, requires Microsoft Speech SDK (probably only needs subset, but I have whole thing installed, not sure which part is absolutely necessary)
For example, to send tMonitor digits to neattools on computer JJworkstation, edit connect.txt to have a single line:
JJworkstation
For example, to cause the sequence "##**" cause the hangup, start tMonitor as follows:
tMonitor "##**"
When not connected to tMonitor, DTMF module has fuzzy unreadable red letters. The red LED modules to the right are attached in same order as digits on telephone touch tone interface. Pushing a digit on telephone makes LED module go on.
And here is how it looks when connected to tMonitor
JTrans2 now saves names of DEFs as received from viz loading world, and uses this name as name of module, rather than using name "JTrans2". Name can be used later to synch up changes with VRML file (currently if vrml file adds DEFs, the NTL gets out of synch).
Starting with build 11 of viz, neattools and viz are more tightly integrated. The following behavior is supported:The end result is that viz should be totally controllable from the NTL file of neattools. Loading a NTL file can cause viz to load a VRML file, and once viz automatically receives the calibration information, viz should be modifying the visualization under control of neattools.
- neattools JViz2 module can instruct viz to load a specific VRML file when the NTL file is loaded.
- viz sends neattools a list of DEF names for the VRML file loaded. This list is used by the JTrans2 module to allow "by-name" changing of properties of visual objects displayed by viz.
- neattools automatically sends calibration information to viz when it first connects to viz, or when it loads a new NTL file
- viz requests new calibration from viz when it loads a new VRML file
Module name |
DLL & NTL file |
neattools appearance |
summary |
GPS | JGPS.dll | yellow, GPS | accepts JCOMObj serial data, assuming this is
connected to NMEA compatible GPS device. |
StaticPattern | JStaticPattern.dll | blue band at top and bottom, SPattern | creates and detects up to 10 static gestures
based on up to 10 inputs. Gestures can be created one by one under manual control, or automatically using the StaticCreator module |
StaticCreator | JStaticCreator.dll | cyan color, sCrt | Works in cooperation with StaticPattern. Output from bottom of StaticPattern is input to StaticCreator, output of StaticCreator sends a "create pattern" signal to StaticPattern |
DynamicPattern | JDynamicPattern.dll | black with small purple box in upper left corner | Works in cooperation with StaticPattern, accepts patterns detected by StaticPattern, creates patterns that are a time delimited sequence of StaticPattern outputs |
DynamicCreator | JDynamicCreator.dll | cyan color, dCrt | Works in cooperation with DynamicPattern. Output from bottom of DynamicPattern indicates when pattern should be created. DynamicCreator then sends signal to DynamicPattern. |
SpaceMarker | JSpaceMarkerObj.dll, SPACE.NTL | black with cyan border | very cool module, assumes input X-Y range from 0-65535 (e.g. neattools mouse X-Y do this, otherwise calibrate module does it), creates visual gestures as rectangles |
Viz Client | JViz2.dll, JVIZ2.NTL | cyan color, Viz Client | interface to external 3D data visualization program. |
JTrans2 | JTrans2.dll, ypw.NTL | cyan color, JTrans2 | interface to external 3D data visualization program, used for controlling DEFfed VRML object attributes. Controllable attributes are location, orientation, |
MR25 | JMR25Obj.dll | cyan color, MR25 | MR-25 input device |
RobotControl | JRobotControlObj.dll | cyan color, JRobot | interface to robot from ?? (davew knows) |
Flock of Birds | JFlockOfBirdsObj.dll | cyan color, flockOfBirds | interface to flock of birds device |
Polhemus | JPolhemusObj.dll | cyan color, polhemus | interface to polhemus device |
Humanoid Visualizer | JHumanoidObj.dll | cyan color, JHumanoid | interface to WorldView based VRML humanoid
visualizer. Some installation problems still to be resolved,
state questionable, WorldView out of business, product no longer
supported. Could resurrect this at some point... |
Module generator | not a module! | I use this to create neattools modules, not to be
confused with Rob's Module creator. This is an executable program that takes an XML description of a module as input, and generates the C++ source and header file, and a MSVC++ 6.0 make file for the module. In some cases creates totally functioning module (e.g. JRobotControlObj was 100% generated) |
Controls: controls are things like "calibration", "enable", etc. that affect the behavior of the module. These I always put at the top of the module | ||
Inputs: inputs go into the left side of the module, these are the raw data processed by the module. | neattools modules are always rectangles. The LEFT and TOP sides feed data into the module. The RIGHT and BOTTOM take data out of the module. | Outputs: the outputs appear on the right of the module, and result from how the module processes the inputs. |
Commands: these are any outputs that are used to control other modules (i.e. they connect to another module's "controls") |
JSpaceMarkerObj | ||
---|---|---|
|
||
|
defines color coded gesture areas in 2 dimensions | 1-10. on-off activation values for each
created pattern 11. lastPattern -- either the last pattern recognized, or the next one to be created |
SPACE.NTL - this file uses the mouse X & Y as the two gesture dimensions, and uses LEFT BUTTON as the gesture defining signal.
Which means CLICK-DRAG defines a gesture.
The space module visualization is proportional to the screen dimensions, so while you might drag a big area of the screen, the gesture appears color coded within the module.
JViz2 handles the main x/y/z/signals1-5 visualization.
JTrans2 handles property controls of a single object in the visualization. Any control data generated by JTrans is routed through JViz2 to reach the visualizer.
JViz2 | ||
---|---|---|
|
||
|
connects to visualizer, sends location/signal information to viz, forwards any object attribute information as received from JTrans2 | --> DEF list -- a list of DEF names from the VRML file loaded into Viz, passed to JTrans2 module so it can refer to DEFs by name. |
Properties
- fileToLoad -- sent to viz when changed, or when NTL first loaded. Viz then loads this file.
JVIZ2.NTL - to use this:
- calibrate inputs
- enable socket, if this connects successfully to visualizer, you should see a tiny bright red square in upper left of "Viz Client".
- from this point on, all location information is transferred over to visualizer, and you should see a "spray paint" effect on the surface.
JTrans2 | ||
---|---|---|
|
||
|
controls location, color, scaling of a single DEFfed Transform object in VRML world loaded into visualizer | --> dataOut -- must be sent to JSocketClient |
JTRANS.NTL - to use this:
JTransformer properties:
- set up JViz (see above), but first disable socket client, and increase the number of channels it can accept. JViz and JTrans both connect to same socket client, but it only accepts these connections of its property N is increased from 1.
- connect all three inputs to JTrans module, you can decide later what these inputs actually control
- calibrate inputs
- enable socket, if this connects successfully to visualizer, you should see a tiny bright red square in upper left of "Socket Client". NOTE: this requires the JJ version of Socket Client!
- send calibration info to visualizer
- from this point on, the JTrans continually sends information to the visualizer. To select what it controls, edit properties.
mapToMinI1, mapToMaxI1, mapToMinI2, mapToMaxI2, mapToMinI3, mapToMaxI3 -- JTransformer always sends three values to associate with a particular object in the visualization. The objectType property determines what visual property these three values are controlling.
- transformObject -- refers to which DEF in the loaded VRML file. Transform DEFs are used to control location, orientation, and scale. Material DEFs are used to control color.
- transformType -- list of types supported:
- main data -- unsupported at this time, there in case JViz merges into this module (not clear if this is desirable at this point)
- location -- for controlling a particular transformObject location. In the corresponding VRML file, there is a "DEF xxx Transform".
- orientation -- for controlling a particular transformObject orientation. In the corresponding VRML file, there is a "DEF xxx Transform".
- emissive color -- for controlling a particular transformObject emissiveColor. In the corresponding VRML file, there is a "material DEF xxxx Material", and that material is associated with a Shape with PointSet or IndexedLineSet geometry.
- diffuse color -- for controlling a particular transformObject diffuseColor. In the corresponding VRML file, there is a "material DEF xxx Material", and that material is associated with a solid shape (i.e. a Shape with any geometry except PointSet and IndexedLineSet)
- scale -- for controlling the size of a particular transformObject. In the corresponding VRML file, there is a "DEF xxx Transform".
- mapToMinI1, mapToMaxI1
- objectType location --> min/max X location
- objectType orientation --> min/max rotation about Y axis
- objectType emissiveColor --> min/max red color
- objectType diffuseColor --> min/max red color
- objectType scale --> min/max X axis scaling
- mapToMinI2, mapToMaxI2
- objectType location --> min/max Y location
- objectType orientation --> min/max rotation about X axis
- objectType emissiveColor --> min/max green color
- objectType diffuseColor --> min/max green color
- objectType scale --> min/max Y axis scaling
- mapToMinI3, mapToMaxI3
- objectType location --> min/max Z location
- objectType orientation --> min/max rotation about Z axis
- objectType emissiveColor --> min/max blue color
- objectType diffuseColor --> min/max blue color
- objectType scale --> min/max Z axis scaling
Since neattools is sending integer values, there are some conventions (described above with objectType) for mapping integer values into values the visualizer uses.
To change only one attribute, for example, to change only the red color of an object, just set the mapToMinNN and mapToMaxNN values to the same value that you want to be kept constant.
Demonstrates
Visualization of a signal value related to an X-Y value. The grid visualizing the signal is an ElevationGrid.Uses modules
- MouseX - sent to viz (via JViz2) as the X location of the signal
- MouseY - sent to viz (via JViz2) as the Y location of the signal, as well as the signal value
- JViz2 - handles automatic connection to viz, sends location/signal calibration information to viz
Demonstrates
Recording a ball position with the ability to insert "pause" markers in the recording. The ball is positioned in viz using the mouse, and the space bar is pressed to insert the "pause" markers in the recording.After the recording is made, load 2ball.ntl, and play back the recording.
Uses modules
- MouseX - sent to JTrans2, provides X location of ball
- MouseY - sent to JTrans2, provides Y location of ball
- JTrans2 - used to control location of ball. NOTE: JTrans2 can control many attributes besides location. It can control color, orientation, scale.
- JViz2 - handles automatic connection to viz, forwards information from JTrans2 to viz
Demonstrates
Playback of a recording with "pause" markers. When playback starts, the ball moves to the first "pause" marker, and the "pause" checkbox is checked.At this point, there are two ways to get the recording to continue:
- click pause checkbox to clear it, at which point, the playback continues to the next pause marker
- check off network data source to allow live input to control the cube. Then move the cube to the ball, to create a collision. The collision then causes the ball to move to the next "pause" marker.
Uses modules
- MouseX - sent to JTrans2, provides X location of ball
- MouseY - sent to JTrans2, provides Y location of ball
- JTrans2 - used to control location of ball. NOTE: JTrans2 can control many attributes besides location. It can control color, orientation, scale.
- JViz2 - handles automatic connection to viz, forwards information from JTrans2 to viz
Demonstrates
Orientation control provided by JTrans2 module. There is a single JTrans2 module for each viz object being controlled. Look in the properties of each JTrans2 module to see what object is being controlled and the type of control.Each object should have a name, "Yaw", "Pitch", or "Roll". These names correspond to names loaded from the corresponding VRML file "ypw.wrl". If viz is not running, you will see "??" for names, since it is viz that provides these names based on the file it loads.
For type of control you will see orientation, the three min/max values correspond to yaw/pitch/roll. To handle Yaw, but leave pitch and roll unchanged, the min/max for pitch/roll are all set to 0.
Uses modules
- MouseX - sent to JTrans2, provides yaw/pitch/roll control over each text word showing in viz
- JTrans2 - used to control orientation of each text word in viz.
- JViz2 - handles automatic connection to viz, forwards information from JTrans2 to viz
The initial orientation of text in Viz looks like this:
As the mouse moves, it changes to something like this:
Demonstrates
Neattools connecting to a GPS device that sends NMEA output out serial port.Uses modules
- JCOMObj - GPS device is connected to COM port. In this NTL, the GPS 315 was used set to NMEA 0183 version 2.1 mode. Uses default GPS 315 com port settings, 4800 baud.
- JGPS - accepts data sent to COM, and decodes assuming NMEA format
Demonstrates
Neattools sending 2 signals to viz, viz displaying these signals on two different planes.Uses modules
- JViz Client -- used to connect to viz, and tell viz to load jviz_2plane.wrl.
Here is how it looks from neattools:
Here is the corresponding VIZ, showing two different planes:
Demonstrates
Neattools changing the location and scale of objects in viz.Uses modules
- JViz Client -- used to connect to viz, and tell viz to load jviz_2plane.wrl.
Here is how it looks from neattools:
Here is the corresponding VIZ, the first picture shows the objects at the start:
The next picture shows the objects as they change scale depending on their location
Demonstrates
Neattools reading data from intersense tracker.NOTE: this is a little tricky to start up. Here's how I get it going:
The tricky startup only occurs when Intersense first turned on. Once its on and running, everything works smoothly.
- hook up hardware
- turn on Intersense, wait until red light stops blinking
- start neattools, if no data coming through, click on continuous mode button and try again (if it doesn't work at first, it will after a few times
Uses modules
- JPolheumsObj -- intersense is almost compatible with Polhemus Fasttrak format. Had to modify polhemus module slightly to support it.
Here is how it looks from neattools:
Demonstrates
Neattools controlling winamp MP3 player.Uses modules
- JwinampObj -- has controls for next/prev track, play, pause, stop, and volume.
Here is how it looks from neattools:
Demonstrates
Neattools outdialing telephone.Uses modules
- JDialerObj -- collects integer digits to dial, has controls for backspacing, resetting, and "dial now".
Here is how it looks from neattools:
Demonstrates
Neattools speaking arbitrary text using Microsoft Speech text-to-speech.Uses modules
- JTTSObj -- when enabled, input 0-9 results in phrase 0-9 being spoken.
Here is how it looks from neattools:
The JTTSObj module has 10 properties, each is a text phrase, which can be spoken when the corresponding integer input is received. Here is a view of the properties:
Demonstrates
Neattools recognizing arbitrary words using Microsoft Speech SDK.Uses modules
- JSpeechRecognizerObj -- when enabled, has option of recognizing digits 0-9, and up to 10 phrases. The phrases are entered as text properties.
Here is how it looks from neattools:
The JSpeechRecognizerObj module has 12 properties, 10 of these are text phrases to recognizer, one is a boolean which turns on and off single digit 0-9 recognition, and one is a debugging boolean. Here is a view of the properties:
Demonstrates
Neattools loading NTLs from a remote web server.Uses modules
- JNTLFetcherObj -- which uses web server to take a remote NTL file (in HTML format) and convert it to a local NTL file. When it is done, it sends out the local NTL file name
- JJNTLFileObj -- a slightly modified JNTLFileObj (Yuh-Jye says this change will eventually go into built-in JNTLFileObj), which takes a JString input and loads that file.
Here is how it looks from neattools:
When the fetch url button is pressed, it activates the JNTLFetcherObj, which has an input NTL path on the left side, and properties indicating the site to fetch from. The www.trapezium.com:80 means it will fetch from the web server at www.trapezium.com using port 80 (which is the standard web server port).
NOTE: the files fetched from the web server are HTML files. These HTML files are converted from NTL files using a program ntl2html.exe