Difference between revisions of "OpenIGTLink/Protocol/JHUBRP"
Line 2: | Line 2: | ||
<div class="floatright">__TOC__</div> | <div class="floatright">__TOC__</div> | ||
+ | |||
+ | = System Diagram = | ||
+ | [[Image:MRI_Robot_System_Diagram.png]] | ||
= Workflow = | = Workflow = |
Revision as of 19:00, 2 February 2008
Home < OpenIGTLink < Protocol < JHUBRPContents
- 1 System Diagram
- 2 Workflow
- 3 Set Workphase (Slicer -> Robot)
- 4 Query / Command (Slicer -> Robot)
- 4.1 Command: INITIALIZE
- 4.2 Command: SET_Z_FRAME
- 4.3 Command: MOVE_TO
- 4.4 Query: GET_COORDINATE
- 4.5 Query: GET_STATUS
- 4.6 Command: INSERT
- 4.7 Command: BIOPSY
- 4.8 Query: GET_BIOPSY
- 4.9 Command: HOME
- 4.10 Command: STOP
- 4.11 Command: E_STOP
- 4.12 Command: SET_JOINT
- 4.13 Command: SET_VELOCITY
- 4.14 Query: GET_NR_JOINT
- 4.15 Query: GET_JOINT
- 4.16 Query: GET_VELOCITY
- 4.17 Query: GET_AIR_PRESSURE
- 4.18 Query: GET_JOINT_TRACK
- 4.19 Query: GET_BRAKE
- 4.20 Query: GET_MOVING
- 4.21 Command: LOCK
- 4.22 Command: UNLOCK
- 4.23 Command: LIMIT_VELOCITY
- 5 Responses sent by the robot (Robot -> Slicer)
System Diagram
Workflow
- Scanner: Scout image acquisition with the landmark close to the prostate
- Navigation soft and scanner: Calculate Z-frame position, scan a slice through the Z-frame
- Repeat previous step if the Z-frame is not visible enough to register the robot
- Scanner: 3D volume acquisition of the prostate
- Navigation soft: Select (or import) the targets, show needle path, allow modification
- Navigation soft: Calculate the target and path, send it to the robot
- Robot: Execute command
- [Optional] Navigation soft: send current robot coordinates to the Real Time scanner IO for needle tracking, display image
- Navigation soft: Display robot position and status
- Scanner: Confirm robot location before biopsy
- Manual: Insert biopsy needle
- [Optional] Navigation soft: show Real time images of the needle insertion
- Manual: Fire biopsy gun
Set Workphase (Slicer -> Robot)
START_UP
Initialize robot, respond with status as part of the command
PLANNING
Respond with status
CALIBRATION
Robot responds with status
TARGETING
Robot responds with status
MANUAL
Robot responds with status.
Slicer sends "GetCoordinate" query periodically to update the display.
EMERGENCY
Robot responds with status
Query / Command (Slicer -> Robot)
Command: INITIALIZE
Initialize robot (calibration, set the encoders, this will be "home") - respond with status
Command: SET_Z_FRAME
Z-frame position and orientation (global RAS coordinate system) - respond with status
Command: MOVE_TO
Go to coordinate - position, orientation (later: speed) (global RAS coordinate system)
Query: GET_COORDINATE
Get Coordinates (position and orientation in global RAS coordinate system)
Query: GET_STATUS
Get Robot Status
Command: INSERT
Insertion depth - float (in mm)
Command: BIOPSY
Take biopsy (Retract Cannula)
Query: GET_BIOPSY
Get Actual Insertion Depth
Command: HOME
Go to Home (collapses the robot to remove/replace needle)
Command: STOP
Stop moving
Command: E_STOP
Emergency Stop (stop + purges the air lines)
Command: SET_JOINT
Set Joint Positions - float[max.16] - move joint here
Command: SET_VELOCITY
Set Joint Velocities - float[max.16] - move joint with this speed
Query: GET_NR_JOINT
Get Number of Joints - integer
Query: GET_JOINT
Get Actual Joint Positions
Query: GET_VELOCITY
Get Actual Joint Velocities
Query: GET_AIR_PRESSURE
Get Actual Air Pressures
Query: GET_JOINT_TRACK
Get Actual Joint Tracking Errors
Query: GET_BRAKE
Get Brakes status
Query: GET_MOVING
Get Joint Moving status
Command: LOCK
Lock (engage brakes - all of them)
Command: UNLOCK
Unlock (disengage the brakes so it can be moved manually)
Command: LIMIT_VELOCITY
Set entire robot velocity limit in Robot Coords. - float (like 10 mm/s)
Responses sent by the robot (Robot -> Slicer)
Value: COORDINATES
Actual coordinates and insertion depth - 6DOF in global RAS coordinate system
Status: STATUS
Robot done moving, Error message, Emergency stop
Response: JOINTS
Number of Joints - integer
Response: JOINT_POS
Actual joint positions - float[max.16] (joint positions in mm)
Response: JOINT_VEL
Actual joint velocities - float[max.16] (joint velocities in mm/s)
Response: JOINT_TRACK
Actual joint tracking error - float[max.16] - "actual joint position" - "set joint position"
Response: AIR_PRESSURE
Actual air pressures - float[max.32] - two per joint! (PSI for each valve)
Status: BRAKES
Brake status - float[max.16] - true(locked)/false(loose) for each joint
Status: DONE_MOVING
Done moving/joint - float[max.16] - true/false for each joint