[IGSTK-Users] EM tracking giving the same readings

Jain, Ameet ameet.jain at philips.com
Tue Jul 26 15:32:13 EDT 2011


Thanks Patrick. I am not getting an 'invalid transform', i.e. transform.IsValidNow() (and the observer->GotTransform) is true, but I get the same transform as before. Would this be expected behavior?

Thanks a lot of your help,
Ameet

From: Patrick Cheng [mailto:patrick.p.cheng at gmail.com]
Sent: Tuesday, July 26, 2011 3:14 PM
To: Jain, Ameet
Cc: igstk-users at public.kitware.com
Subject: Re: [IGSTK-Users] EM tracking giving the same readings

Hi Ameet,

Observer will not be updated if Aurora tool goes 'out of volume'.

You can check the validity of the time stamp to verify that:

  igstk::Transform transform = transformObserver->GetTransform();
  if( !transform.IsValidNow() )
    {
    // Invalid transforms
    {


Patrick

On Tue, Jul 26, 2011 at 2:49 PM, Jain, Ameet <ameet.jain at philips.com<mailto:ameet.jain at philips.com>> wrote:
Thanks for your email Patrick. However, this did not solve the issue. Seems like the observer is not getting updated for some reason. It continues to report the same value.

Do you know if the observer gets updated if the Aurora tool goes 'out of volume'?

Thanks,
Ameet

From: Patrick Cheng [mailto:patrick.p.cheng at gmail.com<mailto:patrick.p.cheng at gmail.com>]
Sent: Monday, July 25, 2011 11:03 AM
To: Jain, Ameet
Cc: igstk-users at public.kitware.com<mailto:igstk-users at public.kitware.com>
Subject: Re: [IGSTK-Users] EM tracking giving the same readings

Hi Ameet,

The code spinet you provided is probably not complete. The while loop doesn't seem to be correct.

Try use this workflow:

loop{

    observer->Clear();
    trackerTool->RequestGetTransformToParent();
    if (observer->GotTransform())
      {
      ...
      }
    else
      {
     ...
      }
  }

Let me know how it goes,

Patrick
On Fri, Jul 22, 2011 at 3:52 PM, Jain, Ameet <ameet.jain at philips.com<mailto:ameet.jain at philips.com>> wrote:
Hi all,

I am having an issue in trying to use IGSTK for EM tracking a large tool with multiple 5DOFs. It starts to track the sensors alright, but then after some point it starts giving me the same tracked information for all sensors - i.e. it repeats the previous value continuously for hours. My feeling is that it gets a 'bad fit' at some point and then the sensor location does not get updated after that.

The code where I update the tracking info for each tool is below. Do you think this is not the correct way to implement the update?

auroraTrackerTool[i]->RequestGetTransformToParent();
while(!TransformObserver[i]->GotTransform());
igstk::Transform transform = TransformObserver[i]->GetTransform();
igstk::Transform::VectorType t = transform.GetTranslation();
igstk::Transform::VersorType r = transform.GetRotation();

Your help is much appreciated,
Thanks a lot in advance,
Ameet Jain


PS: The code for initialization of the Aurora is below, in case you see some error there
igstk::SerialCommunication::PortNumberType AURORAPORT = (igstk::SerialCommunication::PortNumberType)6;
igstk::SerialCommunication::Pointer serialCommAurora;
igstk::AuroraTracker::Pointer  tracker;
igstk::AuroraTrackerTool::Pointer auroraTrackerTool[16];
igstk::TransformObserver::Pointer TransformObserver[16];

void openauroraport()
{
                serialCommAurora = igstk::SerialCommunication::New();
                serialCommAurora->SetPortNumber( AURORAPORT );
                serialCommAurora->SetParity( igstk::SerialCommunication::NoParity );
                serialCommAurora->SetBaudRate( igstk::SerialCommunication::BaudRate115200 );
                serialCommAurora->SetDataBits( igstk::SerialCommunication::DataBits8 );
                serialCommAurora->SetStopBits( igstk::SerialCommunication::StopBits1 );
                serialCommAurora->SetHardwareHandshake( igstk::SerialCommunication::HandshakeOff );
                serialCommAurora->OpenCommunication();

                tracker = igstk::AuroraTracker::New();
                std::cout << "SetCommunication()" << std::endl;
                tracker->SetCommunication( serialCommAurora );

                std::cout << "RequestOpen()" << std::endl;
                tracker->RequestOpen();

                for (int count_port = 0; count_port < 4; count_port++){
                                auroraTrackerTool[2*count_port] = igstk::AuroraTrackerTool::New();
                                auroraTrackerTool[2*count_port]->RequestSelect5DOFTrackerTool();
                                auroraTrackerTool[2*count_port]->RequestSetPortNumber( count_port );
                                auroraTrackerTool[2*count_port]->RequestSetChannelNumber( 0 );
                                auroraTrackerTool[2*count_port]->RequestConfigure();
                                auroraTrackerTool[2*count_port]->RequestAttachToTracker( tracker );

                                auroraTrackerTool[2*count_port + 1] = igstk::AuroraTrackerTool::New();
                                auroraTrackerTool[2*count_port + 1]->RequestSelect5DOFTrackerTool();
                                auroraTrackerTool[2*count_port + 1]->RequestSetPortNumber( count_port );
                                auroraTrackerTool[2*count_port + 1]->RequestSetChannelNumber( 1 );
                                auroraTrackerTool[2*count_port + 1]->RequestConfigure();
                                auroraTrackerTool[2*count_port + 1]->RequestAttachToTracker( tracker );

                                std::cout << "Initialized Port" << count_port << std::endl;
                }



                for (int count_port = 0; count_port < 4; count_port++){
                                TransformObserver[2*count_port] = igstk::TransformObserver::New();
                                TransformObserver[2*count_port]->ObserveTransformEventsFrom(auroraTrackerTool[2*count_port]);

                                TransformObserver[2*count_port + 1] = igstk::TransformObserver::New();
                                TransformObserver[2*count_port + 1]->ObserveTransformEventsFrom(auroraTrackerTool[2*count_port + 1]);

                                std::cout << "Assigned Observer" << count_port << std::endl;
                }

                tracker->RequestStartTracking();
                std::cout << "Requested Tracking" << std::endl;

}

________________________________
The information contained in this message may be confidential and legally protected under applicable law. The message is intended solely for the addressee(s). If you are not the intended recipient, you are hereby notified that any use, forwarding, dissemination, or reproduction of this message is strictly prohibited and may be unlawful. If you are not the intended recipient, please contact the sender by return e-mail and destroy all copies of the original message.

_______________________________________________
Powered by www.kitware.com<http://www.kitware.com>

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-users


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/igstk-users/attachments/20110726/77dc32dc/attachment.html>


More information about the IGSTK-Users mailing list