[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