[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