Creating target points on a 3D model of a bone then exporting these out as a python script?


I’m very new to Slicer 3D but I’m planning to use it for a surgical robot.

Ideally, I want to be able to visualize a bone at position referenced to a frame (which I define). Then, I want to create target points on that bone manually (if this is possible, I’m still not sure).

Finally, I’d like to export these target points in a Python-readable format so I can import it to a different software (RoboDK).

Any advice on any of these points would be greatly appreciated! Thank you in advance.

Most Slicer-based surgical robotics projects uses OpenIGTLink protocol (via SlicerOpenIGTLink extension) to communicate with devices, such as position trackers, cameras, ultrasound imaging systems, surface scanners, and robots. Tool calibrations and patient registrations are performed using SlicerIGT extension and Plus toolkit.

Robots are usually controlled by ROS and commands and positions are transferred via ROS/OpenIGTLink bridge. You can have a look at this step-by-step tutorial for an example of how to set up a medical robotics guidance system using Slicer.

I’m sure you can set up something with RoboDK, too, but it is a closed, proprietary software, which seems quite limited compared to what you can do with ROS. If you still choose to try RoboDK (you don’t need real-time guidance and visualization) then then you can save all target point coordinates that you placed on the bone surface in Slicer as a json file using File / Save date. You can read this json file into Python using a single command.

1 Like

Hi, Thank you for your quick and detailed response, it’s going to help me a lot!

I have no experience with ROS but after some research, I found that it’s still only in the development stage with regards to KUKA Robots. Do you know if it’s still worth using then?

Thank you!

Which Kuka LBR (lightweight)? As far as I know, most research groups use this robot using ROS.

My apologies, I forgot to mention!

The robot that we have is a Kuka KR 60-3 with a KRC4 Controller. It’s quite a large 6-axis robot and is definitely not light weight.
Would it still be possible to use with ROS?

I hope this won’t affect the way we use Slicer, especially if it’s just taking points on the 3D space.

Thank you again, Andras!

I haven’t seen this robot model used by any medical research groups (Kuka lightweight robots are safer around people, smaller, less expensive), but Kuka robots are very popular in general, so I assume that yo can find readily usable ROS node to control it. This may be a good starting point: