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

David Gobbi dgobbi at atamai.com
Thu Dec 1 15:26:19 EST 2005


Ziv Yaniv wrote:

> Hi David and James,
>
>   Following your discussion from yesterday I just wanted to comment on 
> the use of pivot calibration.
>   Pivot calibration only gives the translation between the tool tip 
> and the tracked coordinate system .
>   The way James uses it to get the orientation of the tool relies on 
> the following assumptions:
>   1.we have a cylindrical tool (pointer, needle, etc.).
>   2. the origin of the tracked coordinate system is on the axis of the 
> cylinder.

It specifically requires that the axis of the cylinder is aligned with 
the Z axis, but accomodating other axes would be easy.

>   This is the case for all the electromagnetic tools we have (needles, 
> catheters).
>    This approach will not work for many cylindrical tools, as we are 
> not guaranteed
>     that the origin of the tracked coordinate system  is on the axis 
> of the cylinder.
>    I do not know of generic calibration routines that will give the 5 
> degrees of freedomfor pointer like tools without any
>    assumptions or specific hardware (in my old lab we used a Traxtal 
> calibration jig with the math tailored to it).

I've seen calibration blocks that can provide an approximate 
orientation.  These consist of a tracked block of plastic with a groove 
cut into it, and you lay the shaft of the pointer or the needle in the 
groove to measure the orientation.   You've probably seen them before.  
The measured orientation is not accurate enough for measurement 
purposes, but it is good enough to get the orientation of a tracked 
pointer since only the tip position, and not the orientation, of the 
pointer needs to be accurately known.

>    As IGSTK aims for a wide audience I believe pivot calibration to 
> get the translation is sufficient.
>    Users that want the additional  orientation information will have 
> to write their custom code that fits
>    their specific setup (calibration jig, assumptions 1+2 are valid, 
> etc.).

I agree, but I'm going to bring this full-circle.  Patrick's original 
concern was that different pointers can have different orientations, 
some are aligned along the X axis, and some along Z, and custom-built 
pointers might be aligned with an oblique axis.  We need some way of 
figuring out the orientation of each tool so that when we draw the tool 
on the screen, it appears in the correct orientation.  We probably don't 
need a calibration procedure for this, but we still need some way to 
include the nominal tool orientation in the ToolCalibrationTransform.

The easiest way to do this, though I know James doesn't like it, is to 
have a SetToolOrientation() method in the ToolTipCalibration.  The tip 
calibration won't use this information to compute the tip position, but 
it will include this orientation in the transform that it produces.  
That would be sufficient for providing an accurate tip location and 
nominal orientation for the pointer.

 - David





More information about the IGSTK-Developers mailing list