[IGSTK-Developers] Position the CylinerSpatialObject

David Gobbi david_gobbi at rogers.com
Sun Dec 18 15:33:47 EST 2005


Hi Julian,

The reason that I use the "Z" axis for the pointer
direction is because I think of that direction as
"depth", since that direction usually points into
the patient.

James has already added a ToolTipCalibration to
accurately shift the tool tip location to (0,0,0).
He has also created a PrincipalAxisCalibration class
for defining the orientation, which I am going to
be looking at in detail today or tomorrow.

Defining a pointer orientation by using two points
is not the best approach.  At the T-con I promised to
spend some time with Patrick to explain how everything
can be done with the ToolCalibrationTransform.

It is all about defining a local coordinate system
for the tool, and providing a calibration transform
to go from this coordinate system to the "raw" coordinate
system of the tool.  This is impossible to explain
properly without drawing diagrams...
on Monday I will look for a good paper that explains it.
Julian, do you know of any good papers to recommend
to the group?

 - David


--- Julien Jomier <jjomier at cs.unc.edu> wrote:

> Patrick, Luis,
> 
> I don't think we really need these functions.
> 
>  From the current design we have, the ToolCalibrationTransform defines 
> the location of the tracker w.r.t the local origin of the object and the 
> PatientTransform defines the location of the patient w.r.t to the tracker.
> These two transforms are sufficient to localize the tool in the OR.
> 
> For a tool, the only point you care about is the tip of the tool 
> (correct me if I'm wrong here). So it is just a matter of defining a 
> common coordinate frame among tools in IGSTK. My first impression is to 
> always set the tip of the object at (0,0,0) and align the object in the 
> X axis. I think David suggested the Z axis, but I cannot see any 
> particular reason for this, David can you tell us more?
> 
> Once we have defined the common local frame for the tools, depending on 
> how the tracker is physically attached to the object, the user can set 
> the ToolCalibrationTransform to define the exact position of the tracker 
> w.r.t to the tip of the tool.
> 
> Patrick, can you tell me what problem you encounter with the 
> ToolCalibrationTransform?
> 
> BTW, I've implemented a tracker class for the Flock of Birds, David (and 
> others) you've done a very nice job with the tracker class, it took me 
> no time to do the basic implementation.
> 
> I'm also working on making some ToolSpatialOjbects, if someone has some 
> blueprints for the NDI tools that would be great.
> 
> Thanks,
> 
> Julien
> 
> Luis Ibanez wrote:
> > 
> > Hi Patrick,
> > 
> > This sounds like a good idea,
> > 
> >  but...
> > 
> > Shouldn't this be a method specific for the "NeedleSpatialObject" ?
> > 
> > 
> > after all,
> > the NeedleSpatialObject is the class that will
> > have a notion of "EntryPoint" and "TargetPoint".
> > 
> > 
> > Adding such methods to the Cylinder will be confusing,
> > because a cylinder is a generic geometrical shape,
> > and it is not designed to be inserted into a patient,
> > as needles are.
> > 
> > 
> > 
> >   Luis
> > 
> > 
> > 
> > 
> > -------------------
> > Patrick Cheng wrote:
> > 
> >> Hi all,
> >>
> >> I am proposing adding a RequestSetTipPoints( PointType &pts ) to the 
> >> CylinderSpatialObject. The parameters passed by are two points 
> >> indicates the two ends of the CylinderSpatialObject.
> >>
> >> Reason:
> >>
> >> 1. In path planing, we need to place the CylinderSpatialObject by 
> >> setting entry point and target point. We don't have the Transform 
> >> here. Actually place the CylinderSpatialObject by fixing it's two ends 
> >> is more straight forward.
> >>
> >> 2. When the CylinderSpatialObject is attached to the tracker tool, 
> >> even if we get the transform and orientation right (We haven't got to 
> >> that point yet), Then there should be another shift applied to the 
> >> CylinderSpatialObject to move it's tip to the probe tip. This is very 
> >> cumbersome, confusing, and erroneous. Why don't we take the transform 
> >> and the size of CylinderSpatialObject, and internally calculate the 
> >> points for the two ends (Which is easy to do), and place the 
> >> CylinderSpatialObject in the right position by pinpointing the two ends?
> >>
> >> Thank you,
> >>
> >> Patrick
> >>
> >> _______________________________________________
> >> IGSTK-Developers mailing list
> >> IGSTK-Developers at public.kitware.com
> >> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
> >>
> >>
> > 
> > _______________________________________________
> > IGSTK-Developers mailing list
> > IGSTK-Developers at public.kitware.com
> > http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
> > 
> > 
> _______________________________________________
> 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