[IGSTK-Developers] Position the CylinerSpatialObject
David Gobbi
david_gobbi at rogers.com
Sun Dec 18 15:36:41 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 as defined by the tracking system.
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