General System Properties

Return to System Configuration

Default system configuration

When the Unifeye SDK is launched (via the Unifeye GUI, a HTML page or any application using it), the system is started using default configuration files which are located in the config folder of the Unifeye installation. This place is called ASROOT and is retrieved from the registry using the key: Computer\HKLM\SOFTWARE\Augmented Solutions\ASROOT. It usually points to: C:\Program files\metaio\UnifeyeSDK\. On 64-bit systems (using the 32-bit version of Unifeye) the registry key is: Computer\HKLM\SOFTWARE\Wow6432Node\Augmented Solutions\ASROOT. Usually the registry key is set during installation and does not need manual adjustments.
The standard configuration includes:

  • the general system configuration using the file ASROOT\config\AS_AR_Settings.xml which will be described below,
  • a default camera calibration ASROOT\config\AS_Sextant.xml which is also described below
  • and a default tracking configuration which is given through the file ASROOT\config\ AS_Tracking_Data.xml. The default tracking configuration for the Unifeye SDK contains the first 3 markers. For more details regarding the tracking configuration please refer to the tracking configuration section.

The system configuration file AS_AR_Settings.xml

The system configuration file ASROOT\config\AS_AR_Settings.xml configures default values of the Unifeye SDK AR-System. Some of the parameters can also be changed during runtime using the according Unifeye SDK functions.

<?xml version="1.0"?>
<!DOCTYPE AS_AR_Settings SYSTEM "AS_AR_Settings.dtd">
<AS_AR_Settings>
    <CameraParameters>
        <!-- Can be either: Sextant, ExtendedSextant -->
        <CalibrationFile type="Sextant">Sextant.xml</CalibrationFile>
        <VisCamTimeStampAdjustment>0.0</VisCamTimeStampAdjustment><!-- in ms -->
        <Performance>MultiCore</Performance> <!-- Can be either: SingleCore, MultiCore, Cuda -->
    </CameraParameters>
    <ComputerVisionParameters>
        <videosize_width>640</videosize_width> <!-- In case of AVT cameras the ROI is adjusted accordingly-->
        <videosize_height>480</videosize_height> <!-- In case of AVT cameras the ROI is adjusted accordingly-->
        <!-- Optional: for AVT cameras: Y8, Y16, IYU1, UYVY, IYU2, RGB8, RGB16, RAW8, RAW16, SY16, SRGB16
        <ColorFormat>RAW8</ColorFormat> -->
        <!-- Optional: for AVT cameras running in F7 Mode 0, you can specify the framerate
        <FrameRate>20.0</FrameRate> -->
        <!-- Optional:  0 = no flip, 1 = flip at y-axis (vertical), 2 = flip at x-axis (horizontal), 3 = both
        <ImageFlipMode>0</ImageFlipMode> -->
    </ComputerVisionParameters>
    <SyncParameters>
        <!-- Can be either: SyncOnImageMode, UnfilteredMode, SyncOnLossDataMode -->
        <SyncMode>SyncOnImageMode</SyncMode>
        <SyncModeProperties>
              <continueTrackingDelay> 0 </continueTrackingDelay><!-- in ms-->
        </SyncModeProperties>
    </SyncParameters>
    <RenderParameters>
        <!-- Can be either: 0 or 1 -->
        <OcclusionCulling>0</OcclusionCulling>
        <!-- Put you JT SDK CustomerID here if you are planning to use JT files-->
        <JTCustomerID>12345</JTCustomerID>
    </RenderParameters>
</AS_AR_Settings>

CameraParameters

The tag <CalibrationFile> points to a camera calibration file. The type attribute can be either Sextant or !ExtendedSextant. See the section Camera Calibration ALERT! for more details.
If you specify the Sextant type the path should point to a standard camera calibration (Sextant) XML-File, which contains the camera parameters.
If you specify the ExtendedSextant type the path should point to a binary file, which contains the camera calibration you have generated with the ExtendedSextant-tool.ALERT!

The second camera parameter allows to specify a time stamp adjustment for the visualization camera (in milliseconds). In case there is a known latency for the image source, the time stamp needs to be adjusted accordingly to assure a synchronized packaging of image and tracking data. By e.g. using -60.0 the time stamps of the visulization camera are subtracted by 60 milliseconds. Note that you need to set the synchronization mode accordingly ( SyncOnImageMode) as described in the SynchParameters section.

The parameter <Performance> specifies where the undistortion of the visualization camera is calculated. There are currently three options available:

  • MultiCore (default), which spreads the calculation over the available cores of your CPU.
  • SingleCore, which computes the undistortion on a single core of your CPU.
  • Cuda, which tries to perform the undistortion on a CUDA enabled NVIDIA graphics card (see http://www.nvidia.com/object/cuda_home.html#). If this does not work, it falls back to SingleCore.
    Note that for CUDA you need a CUDA enabled graphics card with up to date drivers (you need at least driver version 177.35) that supports the CUDA API. You can find out the driver version via the NVIDIA control panel by clicking on System Information. Many of the NVIDIA products today contain CUDA-enabled GPUs. These include:
    • NVIDIA GeForce® 8, 9, and 200 series GPUs
    • NVIDIA Tesla™ computing solutions
    • Many of the NVIDIA Quadro® products

For an up-to-date list of compatible devices see http://www.nvidia.com/object/cuda_learn_products.html.
CUDA is currently only supported for Extended Camera based calibration files and will only be used if your image resolution is above 240x180.

Notes on CUDA

  • For high precision applications you should use MultiCore or SingleCore as CUDA performs the pixel interpolation during undistortion slightly different.
  • If you haven't installed up-to-date drivers for your graphics card, the CUDA undistortion might not be performed and no error message might be raised. So if you experience no undistortion effect, please update your driver or change the undistortion performance parameter.

ComputerVisionParameters

In this section, the properties <videosize_width> and <videosize_height> describe the resolution which will be attempted to be used for every camera you start. (if it is supported by the camera). While using a DirectShow camera, the size is automatically tailored to the size provided by the camera driver.
Note, that when using AVT cameras, you should enter the desired image dimensions here, or call setCameraFormat()/loadCameraParameters() later. The settings from AVT's SmartView application regarding the image dimension can no longer be used directly. You are also able to set Format 7 Mode 0 resolutions (ROI resolutions) here as well as in setCameraFormat().
For getting the AVT camera settings into Unifeye the best way is to store the settings via AVTs SmartView in an according XML file and load them into Unifeye via loadCameraParameters().
For AVT cameras you can further define the color format and the framerate.

If you need a flipped video image, you can achieve this by specifying the ImageFlipMode parameter:

  • 0 = no flip,
  • 1 = flip at y-axis (vertical),
  • 2 = flip at x-axis (horizontal),
  • 3 = both

Note, that when flipping the image also the configured (optical) tracking systems will receive a flipped image. This implies that your camera calibration has to be also performed on the flipped image. IN addition e.g. in case of Marker tracking you need to also print out flipped markers.
If you want the complete augmented image to be flipped, use the Unifeye function: mirrorRenderOutput().

SynchParameters

The Unifeye SDK provides the opportunity to combine many different tracking and camera systems. If a tracking system and a visualization camera, which are not synchronized by a hardware mechanism, are used in an AR scenario, the augmentation will never be a 100% correct. As the video image and the tracking data have probably been acquired at different times. To solve this problem, Unifeye offers several synchronization modes that can be used to match video images with the right tracking data.

SyncOnImageMode Synchronization to image timestamp (default mode); for each image a tracking information with fitting timestamp is searched. In case of a tracking loss the system continues to deliver recent valid tracking information for a configurable number of seconds.
To set this interval the XML tag <continueTrackingDelay> is used (see AS_AR_Settings.xml)
Timestamp adjustment in case of known delays is possible using the <VisCamTimeStampAdjustment> parameter (see AS_AR_Settings.xml)
Note that when using SynchOnImageMode tracking values from asynchronous tracking systems like (FARO, Cimcore or Dummy) won't be available unless you also have a running video file or camera. If you want to use asynchronous tracking systems with still images use UnfilteredMode.
UnfilteredMode No synchronization; images and tracking data are simply forwarded to visualization as they arrive.
SyncOnLossDataMode This synchronization mode is like the unfiltered mode, except that the tracking is continued for a configurable number of seconds in case of a tracking loss.
To set this interval the xml tag <continueTrackingDelay> is used (see AS_AR_Settings.xml)
VRPNMode

Does not perform any kind of synchronization but sends the tracking data over network using the VRPN protocol as a VRPN server. The following parameters can be adjusted:

  • <TrackerName>: contains the name of the VRPN tracker used for sending the data via the VRPN protocol. For each configured coordinate system (COS) a VRPN-Tracker will be created. VRPN-Clients can address such a Tracker by its name. The name of a tracker is defined as: <TrackerName> + cosnr, where cosnr is the number of coordinate system and starts with zero, e.g. "Tracker0", "Tracker1" where the <TrackerName> would be "Tracker".
  • <ServerPort>: the port number of the server on which it is listening for VRPN clients.
  • <Visualization>: If "1" then also the visualization/rendering will be updated with the tracking values. If "0" then the tracking values will only be send over the network.

SyncOnImageMode

SyncOnImageMode

RenderParameters

OcclusionCulling can be activated by setting the according parameter to 1.This feature is only available in the Unifeye SDK Ultimate.

General JT/PLMXML considerations

If you are a member of the JT consortium an eligible for loading JT/PLMXML model files, you have to put your JT customer/soldToID into the tag <JTCustomerID>. This feature is only available in the Unifeye SDK Ultimate. The Unifeye SDK itself also does not provide the DLLs needed for loading JT files. If you want to use JT files please follow this procedure:

Copy the following DLLs (from the JT SDK version 5.3.1.0)
into the folder: ASROOT\bin\ (e.g. C:\Program files\metaio\Unifeye\bin).
- Jt73.dll
- JtBrep73.dll
- JtImageIO73.dll
- JtLibra73.dll
- JtSimp73.dll
- JtSimpOGL73.dll
- JtSupt73.dll
- JtTk53.dll
- JtWinShellExt73.dll
- JtXTBrep73.dll
- ParaSupt73.dll
- plmxmlAdapterJT60.dll
- plmxmlExtensions.dll
- plmxmlSDK.dll
- psbodyshop.dll
- pskernel.dll
- psxttoolkit.dll

Put your JT SoldToID (also known as JT Customer ID) into the AS_AR_Settings.xml file. To do that, open it in a normal text editor and go to the XML tags:
<JTCustomerID></JTCustomerID> and save the file again.
Fill your customer ID into the XML tag.
Example:

<JTCustomerID>123456789</JTCustomerID>

If you are experiencing problems loading JT/PLMXML files, you can make sure if you are having the correct JT SoldToID/JT Customer ID for the JT DLLs. First of all, double check that you really copied all the needed DLLs into ASROOT\bin folder as described above. Now, open a Windows command prompt (e.g. via Windows Start menu > Programs > Accessories) and change to the directory ASROOT\bin (e.g. C:\Program files\metaio\Unifeye\bin). Now run the command line tool jttk_license_check.exe giving your JT SoldToID/JT Customer ID, e.g.:
jttk_license_check 123456789

As a result you should get:

JtToolkit found. Installed version: 5.3.1.0R    build: 100217
ENABLED:  JT write/general license
ENABLED:  JT read license

You should get at least ENABLED for the JT read license. If you only get DISABLED, then most likely your JT SoldToID/JT Customer ID does not correspond to the JT DLLs you provided.

Please note that the JT DLLs of the JT SDK might also require the Microsoft Visual Studio runtime of Visual Studio 2008. You can get this from your JT SDK supplier or download it e.g. here: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

JT SoldToID/JT Customer ID encryption/protection

If you want to protect your JT SoldToID/JT Customer ID inside the AS_AR_Settings.xml file in order to keep it confidential, then follow this process:

  1. Adjust the AS_AR_Settings.xml file as described above filling in the plain text JT SoldToID/JT Customer ID.
  2. Open a (administrative/elevated for Windows Vista/7) Windows command prompt (e.g. via Windows Start menu > Programs > Accessories). To make it an administrative/elevated command prompt right click on link to the command prompt in the start menu and select "run as administrator".
  3. Go to the folder: ASROOT\bin (e.g. C:\Program files\metaio\Unifeye\bin) and use the command line tool EncryptJTCustomerID.exe with the ASROOT\config\AS_AR_Settings.xml file by entering:
    EncryptJTCustomerID ..\config\AS_AR_Settings.xml.
    This will encrypt the JT SoldToID/JT Customer ID in the AS_AR_Settings.xml file. You should get the result "Encrypting CustomerID ... Done." which signal a success. To make sure that the encryption process worked, open the AS_AR_Settings.xml file again in an editor. The tag <JTCustomerID> should contain an attribute encrypted="1" and the content of the tag should be encrypted and will look similar like this:
    <JTCustomerID encrypted="1">AQAAAAIAAACAAAAAnaTJotw4ZT+lVn/K4i/FuBbt0twq8CEtcPw+S5se6/fxLp8Pr5//aftb
    esYzrxzlEL6gt0NHotf211Wh4ELpufDJsFkajnIGSqtwArsrNYjgtWLDOuw2egIa7J0ml+P6
    F/JkKgrB5/obu5/opkVM15AoRCp2zMxRw44EH0Ij9ObAAAFAA3RTwmA63a0zWz+DQWPsclTq
    MtXpoUVj3zI7L5xVabeGDSA/yIpMghpDlhG0PLkoCcoCqVKUNpzIJHHy9d1vZ+aWBzqk46YI
    ICdsUidjGBcJXeYU1U3yjdc4HAdHB15o6R5u1x5wnXU1pXBtEgXTfCQuabbBjrqyYR8Itze9
    mOuAAAAAQoj8h4lFCLKx6lGmDQhLCyM6wQxiyxdZfw6z7ZEM6NmqZqGSOdFF5SvA8lQgLgbM
    L3mD3cstfa+mpC/cTK9Y7WRH32U793YkUXRw36b2rOTTHI8/3Ym4K1BW22obLYk59Rk7L1eC
    h20Nn7N+6UUWwoCgLjeNWRTWRiLMNG4ruwRIKmbViG1Mfh+z9UvUOLE/
    </JTCustomerID>
  4. If you start the Unifeye GUI now, the encrypted part of the AS_AR_Settings.xml file containing the encrypted JT SoldToID/JT Customer ID file will be decrypted at startup and used when loading JT/PLMXML files.

If you encrypt the JT SoldTo/JT Customer ID please be aware of the following issues:

  1. Do not alter the encrypted ID inside the AS_AR_Settings.xml file manually. You can however adjust any other parts of the file.
  2. Make sure to have write permissions to the file ASROOT\config\AS_AR_Settings.xml if you perform the encryption. Otherwise encryption will fail. Special considerations have to be taken when running the encryption process on Windows Vista/Windows 7: Even when you are logged in as administrator you won't automatically have administrative rights (if so called User Account Control is enabled, which it is by default). That's why you have to start the command prompt in "administrative/elevated" mode as described above. If not doing so, Windows Resource Protection will take over: The encryption process will succeed (apparently) but when you open the AS_AR_Settings.xml file again, it will still contain the unencrypted ID (as Windows does not allow changes inside the "Program folder" and will copy back/protect the files automatically).
    Alternativly you can also copy the files: ASROOT\config\AS_AR_Settings.xml and ASROOT\config\AS_AR_Settings.dtd to a users location (like the users desktop), encrypt it there and then copy it back to the ASROOT\config folder.
  3. Unifeye has to be restarted for the changes to take effect.
Deployment considerations for JT/PLMXML

In order to allow for an easier deployment the Unifeye SDK installer can copy the JT DLLs and the AS_AR_Settings.xml file of your choice after the installation process automatically. To do so, just create a folder called bin and a folder called config next to the Unifeye SDK installer:

JT_Deploy.png

Now copy the JT DLLs into the bin folder and the adjusted AS_AR_Settings.xml file into the config folder. If you now run the Unifeye SDK installer it will copy the contents of the bin and config folder to the according locations on the target installation after the normal installation process.


Return to System Configuration


-- SupportMetaio - 2011-01-20

Topic attachments
I Attachment Action Size Date Who Comment
pngpng JT_Deploy.png manage 5.5 K 2011-02-08 - 16:39 SupportMetaio  
Topic revision: r4 - 2011-05-03 - 14:14:33 - SupportMetaio
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback