[IGSTK-Developers] calibration (followup to David and James'sdiscussion)

David Gobbi dgobbi at atamai.com
Tue Dec 6 19:16:57 EST 2005


Hui Zhang wrote:

> Hi, David,
>
> Thanks for your comments.
>
> Yes, I am not quite sure about the quaternion we calculated is the 
> rotation from the default orientation to the input orientation, or its 
> inverse one. The quaternion computation is always so ....

Yes, matrices are more intuitive, and more linear when it comes to 
coordinate conversions.  I still prefer quaternions for rotations, though.

> Perhaps Patrick can help test this class in his example application to 
> see whether the computed quaternion is a correct one or an inverse 
> one. Another method I think is we can try to provide a 
> RequestInverseRotation function to manually reverse the rotation 
> matrix if the user find the result is inverse?

Patrick can use it to see if he can get the correct axis for the spatial 
objects.  We can't let the user manually reverse the rotation matrix, 
though... it just isn't safe.  Recompiling is quick, so you can try it 
first one way and then with the transposed matrix to see which is right. 
  I'll look at the ITK matrix-to-quaternion conversion code to figure 
out which way around it should be.. I'll have to wait until morning when 
I'm a little smarter than I am now, though.

Cheers,
 - David

>>
>> We do in fact want the principal axis and plane normal to define a 
>> rotation via a quaternion.  To be precise, we want to create a 
>> quaternion that will rotate the raw tool coordinates such that the 
>> principal axis (i.e. the tool shaft) becomes the local Z axis in 
>> spatial object coordinates and the plane normal (i.e. the minor axis 
>> or flattest direction) becomes the Y axis.
>>
>> I have looked at your code, and it looks good, it even recomputes the 
>> normal to be perpendicular to the axis as it should.  The big danger, 
>> of course, is accidentally building the rotation matrix the wrong way 
>> around and ending up with the inverse rotation.
>>
>> - David
>>
>>> ----- Original Message ----- From: "David Gobbi" <dgobbi at atamai.com>
>>> To: "Hui Zhang" <zhang at isis.imac.georgetown.edu>
>>> Cc: "'IGSTK-developers'" <igstk-developers at public.kitware.com>
>>> Sent: Thursday, December 01, 2005 5:36 PM
>>> Subject: Re: [IGSTK-Developers] calibration (followup to David and 
>>> James'sdiscussion)
>>>
>>>
>>>> Yes, I think that the igstkReferenceCalibration should be added to 
>>>> the wiki.  I'm interested to see what the interface to the class 
>>>> will look like.
>>>>
>>>> Hui Zhang wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> This sounds good, I will put these two functions in the Wiki's 
>>>>> class requirement soon. Do we also need add that 
>>>>> igstkReferenceCalibration class in the Wiki? That is a general 
>>>>> class to calculate the reference transform between the object 
>>>>> position/orientation to reference position/orientation, which can 
>>>>> also be used for Ziv's proposed routine to get the rotation?
>>>>> Regards,
>>>>> James
>>>>> ----- Original Message ----- From: "David Gobbi" <dgobbi at atamai.com>
>>>>>
>>>>>>
>>>>>> We will need intuitive methods for setting the orientation, 
>>>>>> because not many people are familiar enough with quaternions.  So 
>>>>>> there could be two methods:
>>>>>>
>>>>>> SetToolPrincipalAxis(vx, vy, vz) -- set a vector that points 
>>>>>> along the tool axis towards the tool top
>>>>>> SetToolFaceNormal(nx, ny, nz) -- set a vector to define a  that 
>>>>>> "face" of the tool, this vector must be perpendicular to the tool 
>>>>>> axis
>>>>>>
>>>>>> The "tool face" is for when you want to use a pointer as a 
>>>>>> virtual ultrasound probe, it will define the orientation of the 
>>>>>> plane that you want to use as the virtual ultrasound plane.  This 
>>>>>> is only useful for 6DOF tools, not for 5DOF tools.
>>>>>>
>>>>>> These two vectors can be put together to create the quaternion 
>>>>>> that is used as the orientation.  The NDI tool architect software 
>>>>>> does something very similar to this.
>>>>>>
>>>>>> - David
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>




More information about the IGSTK-Developers mailing list