[IGSTK-Developers] Re: Questions about IGSTK

Julien Jomier julien.jomier at kitware.com
Thu Apr 5 11:25:14 EDT 2007


Hello,

I just tried the Polaris tracker on our linux box (Dell/RedHat) and the 
code works great. I was able to run the OneViewAndTracking example as well.
Our box as a serial port, so I guess this doesn't help. I suspect the 
USB-to-serial converter to be the problem in your case. Maybe NDI 
provides some testing tools for Linux (I didn't have time to investigate 
this).

Let me know if I should try anything else,

Julien

Patrick Cheng wrote:
> Hi Haiying,
> 
> The code looks alright to me. I have no clue why it can not open the 
> serial port unless I run the test. I will try to setup the system on our 
> linux machine here (I am a pc guy).
> 
> Meanwhile, Andinet and Luis, I think your guys have the tracking system 
> connected to linux machine, could you try this code at your convenience? 
> This is part of the Slicer-IGSTK integration project, it's very 
> important to us.
> 
> Thank you,
> 
> Patrick
> 
> hliu at bwh.harvard.edu wrote:
>> Patrick,
>>
>> Many thanks for your help.
>>
>> Indeed, the serial port seemed not opened (the Polaris is connected to my
>> computer on ttyS0). I tried all possible port numbers (0 ... 7) supported
>> by IGSTK, I got the same error message.
>>
>> I'm attaching the code snippet (it's copied from your test file) I'm 
>> using
>> in Slicer to perform the serial port connection. Could you please scan it
>> a bit and point to me any errors?
>>
>>
>> Thank you very much,
>>
>>
>>
>> Haiying
>>
>>
>>> Hi Haiying,
>>>
>>> 1.
>>> Looking at the logger file from serial communication,
>>>
>>> 1175527044.46198701858520507812  :    (DEBUG) State transition is being
>>> made : SerialCommunicationForPosix  PointerID 0x212e150
>>> AttemptingToOpenPortState(10)  with FailureInput(22) ---> IdleState(9).
>>>
>>> It looks like the serial port is not being opened. Did you try some
>>> other port number? There are some confusion in terms of numbering of the
>>> serial port. For instance, in Windows, COM1 is
>>> SerialCommunication::PortNumber0.
>>>
>>> 2.
>>> In state machine, we have a mechanism to check if the state-input
>>> transition table is complete. Some times programmer just provide the
>>> possible combination of state-input transition, some times, in this
>>> case, if the open communication failed, it will not enter into the next
>>> state, and if you sent some inputs to the state machine, it might
>>> complain, the transition if not being defined. Our guide line is to
>>> fully populate the transition table, and output error messages.
>>>
>>>
>>> Patrick
>>>
>>> hliu at bwh.harvard.edu wrote:
>>>> Hi Patrick,
>>>>
>>>> Thank you very much for your answers. Now I have more questions.
>>>>
>>>> A polaris is connected through a serial port (/dev/ttyS0) to a Dell
>>>> desktop with Fedora core 5 installed. The "ttyS0" has been made
>>>> writable.
>>>> To test the connection, I used another program to get tracking data 
>>>> from
>>>> the Polaris; it worked well.
>>>>
>>>> Then, I embedded the part of the code in
>>>> IGSTK/Testing/igstkPolarisTrackerTest.cxx into Slicer. Since the 
>>>> polaris
>>>> is connected on /dev/ttyS0, I use port 0 in
>>>> "serialComm->SetPortNumber(igstk::SerialCommunication::PortNumber0);"
>>>> Keep
>>>> other parameters unchanged.
>>>>
>>>> After running Slicer, I saved the output in these two files which are
>>>> attached:
>>>>
>>>> igstkLoggerOutput.txt -- from the logger
>>>> igtskScreenCout.txt -- screen text from cout
>>>>
>>>> It seems I could not get tracking data from polaris. I notice errors:
>>>>
>>>> 1. It complains the serial port is not writable. But I already changed
>>>> the
>>>> permission. Did I use the wrong port number?
>>>>
>>>> 2. A lot of "No transitions have been defined for current state." What
>>>> are
>>>> they?
>>>>
>>>> Thank you very much for any advice.
>>>>
>>>>
>>>>
>>>> Haiying
>>>>
>>>>
>>>>> Hi Haiying,
>>>>>
>>>>> 1) IGSTK supports serial communication, when you use serial-to-usb
>>>>> adapter, your external use device will just look like a serial device
>>>>> through port mapping.
>>>>>
>>>>> 2) For linux, you have to install some kernel level driver to do the
>>>>> USB-to-Serial conversion. There are some instructions in "Polaris User
>>>>> Guide" page 23
>>>>>
>>>>> 3) We normally use the toolbox from NDI to test the device connection
>>>>> before trying our own code
>>>>>
>>>>> 4) Error reporting from the hardware is a feature we are going to add
>>>>> to
>>>>> the toolkit in the future.
>>>>>
>>>>> Let me know if you need any help with setting up the system.
>>>>>
>>>>> Thank you,
>>>>>
>>>>> Patrick
>>>>>
>>>>> hliu at bwh.harvard.edu wrote:
>>>>>> Hi Patrick,
>>>>>>
>>>>>> My name is Haiying Liu, who is working with Dr. Noby Hata on Slicer
>>>>>> engineering for Image Guided Therapy at Brigham and Women's Hospital.
>>>>>>
>>>>>> I'm currently trying to integrate IGSTK into Slicer3. The following
>>>>>> describes what I have now:
>>>>>>
>>>>>> 1) NDI Polaris tracking device
>>>>>> 2) Dell laptop (Inspiron 1501) with Fedora core 6 installed
>>>>>>
>>>>>> My dell doesn't have any serial port; I'm using a serial-to-usb
>>>>>> converter
>>>>>> and connect polaris to the computer thru one of the USB ports. Here
>>>>>> come
>>>>>> my questions:
>>>>>>
>>>>>> 1) Does IGSTK support a computer without a serial port?
>>>>>> 2) For my case, which port number should I use?
>>>>>> 3) How do I know the connection between polaris and laptop is good?
>>>>>> 4) How I get error messages when something goes wrong?
>>>>>>
>>>>>> Thank you very much,
>>>>>>
>>>>>>
>>>>>>
>>>>>> Haiying
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>>
>>>>> 1175527044.46130800247192382812  :    (DEBUG)
>>>>> SerialCommunication::OpenCommunication called ...
>>>>> 1175527044.46185088157653808594  :    (DEBUG) State transition is 
>>>>> being
>>>>> made : SerialCommunicationForPosix  PointerID 0x212e150 IdleState(9)
>>>>> with OpenPortInput(24) ---> AttemptingToOpenPortState(10).
>>>>> 1175527044.46188211441040039062  :    (DEBUG)
>>>>> SerialCommunicationForPosix::InternalOpenPort called ...
>>>>> 1175527044.46198701858520507812  :    (DEBUG) State transition is 
>>>>> being
>>>>> made : SerialCommunicationForPosix  PointerID 0x212e150
>>>>> AttemptingToOpenPortState(10)  with FailureInput(22) ---> 
>>>>> IdleState(9).
>>>>> 1175527044.471179962158203125  :    (DEBUG) PolarisTracker:: Entered
>>>>> SetCommunication ...
>>>>> 1175527044.47123694419860839844  :    (DEBUG) UpdateParameters called
>>>>> ...
>>>>> 1175527044.47128009796142578125  :    (DEBUG) State transition is 
>>>>> being
>>>>> made : SerialCommunicationForPosix  PointerID 0x212e150 IdleState(9)
>>>>> with UpdateParametersInput(26) ---> IdleState(9).
>>>>> 1175527044.471302032470703125  :    (DEBUG) PolarisTracker:: Exiting
>>>>> SetCommunication ...
>>>>> 1175527044.47134804725646972656  :    (DEBUG)
>>>>> igstk::Tracker::RequestOpen called...
>>>>> 1175527044.4714450836181640625  :    (DEBUG) State transition is being
>>>>> made : PolarisTracker  PointerID 0x2110910 IdleState(36)  with
>>>>> EstablishCommunicationInput(46) --->
>>>>> AttemptingToEstablishCommunicationState(37).
>>>>> 1175527044.47147393226623535156  :    (DEBUG)
>>>>> igstk::Tracker::AttemptToOpenProcessing called ...
>>>>> 1175527044.47149395942687988281  :    (DEBUG)
>>>>> PolarisTracker::InternalOpen called ...
>>>>> 1175527044.4715518951416015625  :    (DEBUG)
>>>>> SerialCommunication::PurgeBuffers called ...
>>>>> 1175527044.47157788276672363281  :    (ERROR) In class
>>>>> SerialCommunicationForPosix No transitions have been defined for
>>>>> current state and input  State = 9 [IdleState] Input = 30
>>>>> [PurgeBuffersInput]
>>>>> 1175527044.47160506248474121094  :    (DEBUG) UpdateParameters called
>>>>> ...
>>>>> 1175527044.47163105010986328125  :    (DEBUG) State transition is 
>>>>> being
>>>>> made : SerialCommunicationForPosix  PointerID 0x212e150 IdleState(9)
>>>>> with UpdateParametersInput(26) ---> IdleState(9).
>>>>> 1175527044.47167801856994628906  :    (DEBUG)
>>>>> SerialCommunication::PurgeBuffers called ...
>>>>> 1175527044.47170305252075195312  :    (ERROR) In class
>>>>> SerialCommunicationForPosix No transitions have been defined for
>>>>> current state and input  State = 9 [IdleState] Input = 30
>>>>> [PurgeBuffersInput]
>>>>> 1175527044.47228789329528808594  :    (DEBUG)
>>>>> SerialCommunication::Write(INIT:E3A5\x0D, 10) called...
>>>>> 1175527044.47236990928649902344  :    (ERROR) In class
>>>>> SerialCommunicationForPosix No transitions have been defined for
>>>>> current state and input  State = 9 [IdleState] Input = 28 [WriteInput]
>>>>> 1175527044.4724369049072265625  :    (WARNING) Polaris Error 0x500:
>>>>> Serial port write error
>>>>> 1175527044.47247791290283203125  :    (DEBUG) State transition is 
>>>>> being
>>>>> made : PolarisTracker  PointerID 0x2110910
>>>>> AttemptingToEstablishCommunicationState(37)  with FailureInput(54) 
>>>>> --->
>>>>> IdleState(36).
>>>>> 1175527044.47249889373779296875  :    (DEBUG)
>>>>> igstk::Tracker::CommunicationEstablishmentFailureProcessing called ...
>>>>> 1175527044.4726428985595703125  :    (DEBUG)
>>>>> igstk::Tracker::RequestInitialize called ...
>>>>> 1175527044.47266888618469238281  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 47 [ActivateToolsInput]
>>>>> 1175527044.49376010894775390625  :    (DEBUG)
>>>>> igstk::Tracker::RequestStartTracking called ...
>>>>> 1175527044.49382495880126953125  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 48 [StartTrackingInput]
>>>>> 1175527044.49386000633239746094  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.493885040283203125  :    (ERROR) In class PolarisTracker No
>>>>> transitions have been defined for current state and input  State = 36
>>>>> [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.4942989349365234375  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49432492256164550781  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49441099166870117188  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49443697929382324219  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49451899528503417969  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49454402923583984375  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49462604522705078125  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49465203285217285156  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49473309516906738281  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49475789070129394531  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49483990669250488281  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49486494064331054688  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49494910240173339844  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49497509002685546875  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49505710601806640625  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49508190155029296875  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.4951629638671875  :    (DEBUG)
>>>>> igstk::Tracker::RequestUpdateStatus called ...
>>>>> 1175527044.49518799781799316406  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 49 [UpdateStatusInput]
>>>>> 1175527044.49528789520263671875  :    (DEBUG)
>>>>> igstk::Tracker::RequestReset called ...
>>>>> 1175527044.49531292915344238281  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 51 [ResetInput]
>>>>> 1175527044.49533796310424804688  :    (DEBUG)
>>>>> igstk::Tracker::RequestInitialize called ...
>>>>> 1175527044.49536609649658203125  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 47 [ActivateToolsInput]
>>>>> 1175527044.49539089202880859375  :    (DEBUG)
>>>>> igstk::Tracker::RequestStartTracking called ...
>>>>> 1175527044.49541497230529785156  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 48 [StartTrackingInput]
>>>>> 1175527044.495449066162109375  :    (DEBUG)
>>>>> igstk::Tracker::RequestStopTracking called ...
>>>>> 1175527044.49547410011291503906  :    (ERROR) In class PolarisTracker
>>>>> No transitions have been defined for current state and input  State =
>>>>> 36 [IdleState] Input = 50 [StopTrackingInput]
>>>>> 1175527044.49550890922546386719  :    (DEBUG)
>>>>> igstk::Tracker::RequestClose called ...
>>>>> 1175527044.4955348968505859375  :    (ERROR) In class 
>>>>> PolarisTracker No
>>>>> transitions have been defined for current state and input  State = 36
>>>>> [IdleState] Input = 52 [CloseCommunicationInput]
>>>>> 1175527044.49557209014892578125  :    (DEBUG)
>>>>> SerialCommunication::CloseCommunication called ...
>>>>> 1175527044.49562191963195800781  :    (DEBUG) State transition is 
>>>>> being
>>>>> made : SerialCommunicationForPosix  PointerID 0x212e150 IdleState(9)
>>>>> with ClosePortInput(25) ---> IdleState(9).
>>>>>
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>>
>>>>> Script started on Mon 02 Apr 2007 11:16:53 AM EDT
>>>>> Unmatched ".
>>>>> th303-d4-5:/projects/birn/hliu/slicer3-trunk/Slicer3-build/bin% bash
>>>>>
>>>>> bash-3.1$ ./Slicer3
>>>>> Set environment:
>>>>> SLICER_HOME=/projects/birn/hliu/slicer3-trunk/Slicer3-build/bin/../
>>>>> Starting Slicer:
>>>>> Searching
>>>>> /projects/birn/hliu/slicer3-trunk/Slicer3-build/bin/../lib/Slicer3/Plugins 
>>>>>
>>>>> for shared object plugins.
>>>>> Tested 0 files as shared object plugins. Found 0 new plugins in
>>>>> 0.00152493 seconds.
>>>>> Application does not include the Binary File Descriptor library (BFD).
>>>>> Cannot peek into executables for global symbols.
>>>>> Searching
>>>>> /projects/birn/hliu/slicer3-trunk/Slicer3-build/bin/../lib/Slicer3/Plugins 
>>>>>
>>>>> for command line executable plugins by executing.
>>>>> Tested 0 files as command line executable plugins by executing. 
>>>>> Found 0
>>>>> new plugins in 0.000633001 seconds.
>>>>> No plugin modules found. Check your module search path and your Slicer
>>>>> installation.PolarisTrackerTool
>>>>> PolarisTrackerTool (0x210b9e0)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 2
>>>>>   Modified Time: 20
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x210bb38)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x210bb40)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x210bba8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x210bbb0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x210bc08)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x210bc10)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>> Logger output saved here:
>>>>> /spl/tmp/Haiying/HaiyingIGSTKLoggerOutput.txt
>>>>> OpenPortErrorEvent
>>>>> SetCommunication()
>>>>> RequestOpen()
>>>>> TrackerOpenErrorEvent
>>>>> RequestInitialize()
>>>>> PolarisTracker (0x2110910)
>>>>>   RTTI typeinfo:   igstk::PolarisTracker
>>>>>   Reference Count: 2
>>>>>   Modified Time: 33
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     AnyEvent(Command)
>>>>>   PulseGenerator (0x2112e80)
>>>>>   RTTI typeinfo:   igstk::PulseGenerator
>>>>>   Reference Count: 2
>>>>>   Modified Time: 37
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     PulseEvent(SimpleMemberCommand)
>>>>>   Frequency: 30
>>>>>   Period: 33.3333
>>>>>
>>>>>   SimpleMemberCommand (0x2114510)
>>>>>   RTTI typeinfo:   itk::SimpleMemberCommand<igstk::Tracker>
>>>>>   Reference Count: 3
>>>>>   Modified Time: 41
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>
>>>>>   Number of ports: 12
>>>>>   TrackerPort (0x211d630)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 51
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x211cd10)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 47
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x211ce68)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211ce70)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x211ced8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211cee0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x211cf38)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211cf40)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x211e9b0)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 59
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x211e090)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 55
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x211e1e8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211e1f0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x211e258)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211e260)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x211e2b8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211e2c0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x211fd30)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 67
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x211f410)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 63
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x211f568)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211f570)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x211f5d8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211f5e0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x211f638)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x211f640)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x21210e0)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 75
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x2120790)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 71
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x21208e8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x21208f0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x2120958)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2120960)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x21209b8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x21209c0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x2133530)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 83
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x2132df0)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 79
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x2132f48)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2132f50)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x2132fb8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2132fc0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x2133018)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2133020)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x21348c0)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 91
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x2133f50)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 87
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x21340a8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x21340b0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x2134118)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2134120)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x2134178)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2134180)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x2135c80)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 99
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x21352e0)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 95
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x2135438)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2135440)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x21354a8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x21354b0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x2135508)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2135510)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x2136ff0)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 107
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x21366a0)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 103
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x21367f8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2136800)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x2136868)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2136870)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x21368c8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x21368d0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x21383b0)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 115
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x2137a10)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 111
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x2137b68)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2137b70)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x2137bd8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2137be0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x2137c38)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2137c40)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x2139780)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 123
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x2138dd0)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 119
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x2138f28)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2138f30)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x2138f98)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2138fa0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x2138ff8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x2139000)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x213ab40)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 131
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x213a1a0)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 127
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x213a2f8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x213a300)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x213a368)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x213a370)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x213a3c8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x213a3d0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   TrackerPort (0x213beb0)
>>>>>   RTTI typeinfo:   igstk::TrackerPort
>>>>>   Reference Count: 1
>>>>>   Modified Time: 139
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Number of tools: 1
>>>>>   PolarisTrackerTool (0x213b560)
>>>>>   RTTI typeinfo:   igstk::PolarisTrackerTool
>>>>>   Reference Count: 1
>>>>>   Modified Time: 135
>>>>>   Debug: Off
>>>>>   Observers:
>>>>>     none
>>>>>   Transform: Transform (0x213b6b8)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x213b6c0)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   RawTransform: Transform (0x213b728)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x213b730)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1.17553e+12
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ToolCalibrationTransform: Transform (0x213b788)
>>>>>   RTTI typeinfo:   N5igstk9TransformE
>>>>>   TimeStamp (0x213b790)
>>>>>   RTTI typeinfo:    N5igstk9TimeStampE
>>>>>   Start Time      = 1.17553e+12
>>>>>   Expiration Time = 1e+300
>>>>>
>>>>>   [0, 0, 0]
>>>>>   [ 0, 0, 0, 1 ]
>>>>>   2.22507e-308
>>>>>
>>>>>   ValidityPeriod: 0
>>>>>
>>>>>
>>>>>   Port 0 Enabled: 0
>>>>>   Po
>>>
>>> ------------------------------------------------------------------------
>>>
>>> void vtkIGTIGSTKStream::Test()
>>> {
>>>
>>>     igstk::RealTimeClock::Initialize();
>>>
>>> //    typedef itk::Logger                   LoggerType; //    typedef 
>>> itk::StdStreamLogOutput       LogOutputType;
>>>
>>>     igstk::PolarisTrackerTool::Pointer tool = 
>>> igstk::PolarisTrackerTool::New();
>>>     std::cout << tool->GetNameOfClass() << std::endl;
>>>     std::cout << tool << std::endl;
>>>
>>>     igstk::SerialCommunicationForPosix::Pointer
>>>         serialComm = igstk::SerialCommunicationForPosix::New();
>>>
>>>     PolarisTrackerTestCommand::Pointer         my_command = 
>>> PolarisTrackerTestCommand::New();
>>>
>>>     // logger object created     std::string testName = "HaiyingIGSTK";
>>> //    std::string outputDirectory = IGSTK_TEST_OUTPUT_DIR;
>>>     std::string outputDirectory = "/spl/tmp/Haiying";     std::string 
>>> filename = outputDirectory +"/";
>>>     filename = filename + testName;
>>>     filename = filename + "LoggerOutput.txt";
>>>     std::cout << "Logger output saved here:\n";
>>>     std::cout << filename << "\n";
>>>     std::ofstream loggerFile;
>>>     loggerFile.open( filename.c_str() );
>>>     LoggerType::Pointer   logger = LoggerType::New();
>>>     LogOutputType::Pointer logOutput = LogOutputType::New();      
>>> logOutput->SetStream( loggerFile );
>>>     logger->AddLogOutput( logOutput );
>>>     logger->SetPriorityLevel( itk::Logger::DEBUG);
>>>
>>>     serialComm->AddObserver( itk::AnyEvent(), my_command);
>>>
>>>     serialComm->SetLogger( logger );
>>>
>>> //    serialComm->SetPortNumber( IGSTK_TEST_POLARIS_PORT_NUMBER );
>>>         serialComm->SetPortNumber( 
>>> igstk::SerialCommunication::PortNumber0 );
>>>     serialComm->SetParity( igstk::SerialCommunication::NoParity );
>>>     serialComm->SetBaudRate( 
>>> igstk::SerialCommunication::BaudRate115200 );
>>>     serialComm->SetDataBits( igstk::SerialCommunication::DataBits8 );
>>>     serialComm->SetStopBits( igstk::SerialCommunication::StopBits1 );
>>>     serialComm->SetHardwareHandshake( 
>>> igstk::SerialCommunication::HandshakeOff );
>>>
>>>     serialComm->SetCaptureFileName( 
>>> "RecordedStreamByPolarisTrackerTest.txt" );
>>>     serialComm->SetCapture( true );
>>>
>>>     serialComm->OpenCommunication();
>>>
>>>
>>>     igstk::PolarisTracker::Pointer  tracker;
>>>
>>>     tracker = igstk::PolarisTracker::New();
>>>
>>>     tracker->AddObserver( itk::AnyEvent(), my_command);
>>>
>>>     tracker->SetLogger( logger );
>>>
>>>     std::cout << "SetCommunication()" << std::endl;
>>>     tracker->SetCommunication( serialComm );
>>>
>>>     std::cout << "RequestOpen()" << std::endl;
>>>     tracker->RequestOpen();
>>>
>>>
>>>     std::cout << "RequestInitialize()" << std::endl;
>>>     tracker->RequestInitialize();
>>>
>>>     std::cout << tracker << std::endl;
>>>
>>>     std::cout << "GetNumberOfTools()" << std::endl;
>>>     unsigned int ntools = tracker->GetNumberOfTools();
>>>
>>>     std::cout << "NumberOfTools : " << ntools << std::endl;
>>>
>>>     std::cout << "RequestStartTracking()" << std::endl;
>>>     tracker->RequestStartTracking();
>>>
>>>     typedef igstk::Transform            TransformType;
>>>     typedef ::itk::Vector<double, 3>    VectorType;
>>>     typedef ::itk::Versor<double>       VersorType;
>>>
>>>     for(unsigned int i=0; i<10; i++)
>>>     {
>>>         tracker->RequestUpdateStatus();
>>>         for (unsigned int port = 0; port < 4; port++)
>>>         {
>>>             TransformType             transform;
>>>             VectorType                position;
>>>
>>>             tracker->GetToolTransform( port, 0, transform );
>>>             position = transform.GetTranslation();
>>>             std::cout << "Port " << port << "  Position = (" << 
>>> position[0]
>>>                 << "," << position[1] << "," << position[2]
>>>                 << ")" << std::endl;
>>>         }
>>>     }
>>>
>>>     std::cout << "RequestReset()" << std::endl;
>>>     tracker->RequestReset();
>>>
>>>     std::cout << "RequestInitialize()" << std::endl;
>>>     tracker->RequestInitialize();
>>>
>>>     std::cout << "RequestStartTracking()" << std::endl;
>>>     tracker->RequestStartTracking();
>>>
>>>     std::cout << "RequestStopTracking()" << std::endl;
>>>     tracker->RequestStopTracking();
>>>
>>>     std::cout << "RequestClose()" << std::endl;
>>>     tracker->RequestClose();
>>>
>>>     std::cout << "CloseCommunication()" << std::endl;
>>>     serialComm->CloseCommunication();
>>>
>>>     std::cout << "[PASSED]" << std::endl;
>>> }
> 
> ------------------------------------------------------------------------
> 
> void vtkIGTIGSTKStream::Test()
> {
> 
>     igstk::RealTimeClock::Initialize();
> 
> //    typedef itk::Logger                   LoggerType; 
> //    typedef itk::StdStreamLogOutput       LogOutputType;
> 
>     igstk::PolarisTrackerTool::Pointer tool = igstk::PolarisTrackerTool::New();
>     std::cout << tool->GetNameOfClass() << std::endl;
>     std::cout << tool << std::endl;
> 
>     igstk::SerialCommunicationForPosix::Pointer
>         serialComm = igstk::SerialCommunicationForPosix::New();
> 
>     PolarisTrackerTestCommand::Pointer 
>         my_command = PolarisTrackerTestCommand::New();
> 
>     // logger object created 
>     std::string testName = "HaiyingIGSTK";
> //    std::string outputDirectory = IGSTK_TEST_OUTPUT_DIR;
>     std::string outputDirectory = "/spl/tmp/Haiying"; 
>     std::string filename = outputDirectory +"/";
>     filename = filename + testName;
>     filename = filename + "LoggerOutput.txt";
>     std::cout << "Logger output saved here:\n";
>     std::cout << filename << "\n"; 
> 
>     std::ofstream loggerFile;
>     loggerFile.open( filename.c_str() );
>     LoggerType::Pointer   logger = LoggerType::New();
>     LogOutputType::Pointer logOutput = LogOutputType::New();  
>     logOutput->SetStream( loggerFile );
>     logger->AddLogOutput( logOutput );
>     logger->SetPriorityLevel( itk::Logger::DEBUG);
> 
>     serialComm->AddObserver( itk::AnyEvent(), my_command);
> 
>     serialComm->SetLogger( logger );
> 
> //    serialComm->SetPortNumber( IGSTK_TEST_POLARIS_PORT_NUMBER );
>     
>     serialComm->SetPortNumber( igstk::SerialCommunication::PortNumber0 );
>     serialComm->SetParity( igstk::SerialCommunication::NoParity );
>     serialComm->SetBaudRate( igstk::SerialCommunication::BaudRate115200 );
>     serialComm->SetDataBits( igstk::SerialCommunication::DataBits8 );
>     serialComm->SetStopBits( igstk::SerialCommunication::StopBits1 );
>     serialComm->SetHardwareHandshake( igstk::SerialCommunication::HandshakeOff );
> 
>     serialComm->SetCaptureFileName( "RecordedStreamByPolarisTrackerTest.txt" );
>     serialComm->SetCapture( true );
> 
>     serialComm->OpenCommunication();
> 
> 
>     igstk::PolarisTracker::Pointer  tracker;
> 
>     tracker = igstk::PolarisTracker::New();
> 
>     tracker->AddObserver( itk::AnyEvent(), my_command);
> 
>     tracker->SetLogger( logger );
> 
>     std::cout << "SetCommunication()" << std::endl;
>     tracker->SetCommunication( serialComm );
> 
>     std::cout << "RequestOpen()" << std::endl;
>     tracker->RequestOpen();
> 
> 
>     std::cout << "RequestInitialize()" << std::endl;
>     tracker->RequestInitialize();
> 
>     std::cout << tracker << std::endl;
> 
>     std::cout << "GetNumberOfTools()" << std::endl;
>     unsigned int ntools = tracker->GetNumberOfTools();
> 
>     std::cout << "NumberOfTools : " << ntools << std::endl;
> 
>     std::cout << "RequestStartTracking()" << std::endl;
>     tracker->RequestStartTracking();
> 
>     typedef igstk::Transform            TransformType;
>     typedef ::itk::Vector<double, 3>    VectorType;
>     typedef ::itk::Versor<double>       VersorType;
> 
>     for(unsigned int i=0; i<10; i++)
>     {
>         tracker->RequestUpdateStatus();
>         for (unsigned int port = 0; port < 4; port++)
>         {
>             TransformType             transform;
>             VectorType                position;
> 
>             tracker->GetToolTransform( port, 0, transform );
>             position = transform.GetTranslation();
>             std::cout << "Port " << port << "  Position = (" << position[0]
>                 << "," << position[1] << "," << position[2]
>                 << ")" << std::endl;
>         }
>     }
> 
>     std::cout << "RequestReset()" << std::endl;
>     tracker->RequestReset();
> 
>     std::cout << "RequestInitialize()" << std::endl;
>     tracker->RequestInitialize();
> 
>     std::cout << "RequestStartTracking()" << std::endl;
>     tracker->RequestStartTracking();
> 
>     std::cout << "RequestStopTracking()" << std::endl;
>     tracker->RequestStopTracking();
> 
>     std::cout << "RequestClose()" << std::endl;
>     tracker->RequestClose();
> 
>     std::cout << "CloseCommunication()" << std::endl;
>     serialComm->CloseCommunication();
> 
>     std::cout << "[PASSED]" << std::endl;
> }
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> IGSTK-Developers mailing list
> IGSTK-Developers at public.kitware.com
> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers




More information about the IGSTK-Developers mailing list