-
Notifications
You must be signed in to change notification settings - Fork 5
Home
Software | Version | Dependencies |
---|---|---|
Windows 10 | Visual Studio 17 2022 | |
Prostate BRP Interface | https://github.com/ProstateBRP/BRPRobot2021/commit/f194071cb8c945800b1eaa507f2b9cc0fa163cc9 | SlicerZFrameRegistration, SlicerOpenIGTLink |
SlicerZFrameRegistration | https://github.com/SlicerProstate/SlicerZFrameRegistration/commit/28d43dd19c5052dbcc51ff79a108f91f32e5ea16 replaced a folder with Rebecca's code. | SlicerDevelopmentToolbox |
SlicerDevelopmentToolbox | Slicer Extensions Manager or https://github.com/QIICR/SlicerDevelopmentToolbox | - |
SlicerOpenIGTLink | Slicer Extensions Manager or https://github.com/openigtlink/SlicerOpenIGTLink | - |
SlicerIGT | Slicer Extensions Manager or https://github.com/SlicerIGT/SlicerIGT | - |
Slicer | 5.02 Stable: https://github.com/Slicer/Slicer/commit/a4420c378ebe8d84928f10bd3040d48181890a3b | Qt 5.15.2 |
✔️ Builds successfully
✔️ Works with test data in simulation
➖ Works with physical robot
Software | Version | Dependencies |
---|---|---|
Windows 11 | Visual Studio 17.2.1 | |
Prostate BRP Interface | https://github.com/ProstateBRP/BRPRobot2021/commit/f194071cb8c945800b1eaa507f2b9cc0fa163cc9 | SlicerZFrameRegistration, SlicerOpenIGTLink |
SlicerZFrameRegistration | https://github.com/SlicerProstate/SlicerZFrameRegistration/commit/28d43dd19c5052dbcc51ff79a108f91f32e5ea16 replaced a folder with Rebecca's code. | SlicerDevelopmentToolbox |
SlicerDevelopmentToolbox | Slicer Extensions Manager or https://github.com/QIICR/SlicerDevelopmentToolbox | - |
SlicerOpenIGTLink | Slicer Extensions Manager or https://github.com/openigtlink/SlicerOpenIGTLink | - |
SlicerIGT | Slicer Extensions Manager or https://github.com/SlicerIGT/SlicerIGT | - |
Slicer | 5.02 Stable: https://github.com/Slicer/Slicer/commit/a4420c378ebe8d84928f10bd3040d48181890a3b | Qt 5.15.2 |
✔️ Builds successfully
✔️ Works with test data in simulation
➖ Works with physical robot
Software | Version | Dependencies |
---|---|---|
Ubuntu 20.04 | GCC | |
Prostate BRP Interface | https://github.com/ProstateBRP/BRPRobot2021/commit/f194071cb8c945800b1eaa507f2b9cc0fa163cc9 | SlicerZFrameRegistration, SlicerOpenIGTLink, libeigen3-dev |
SlicerZFrameRegistration | https://github.com/SlicerProstate/SlicerZFrameRegistration/commit/28d43dd19c5052dbcc51ff79a108f91f32e5ea16 replaced a folder with Rebecca's code. | SlicerDevelopmentToolbox |
SlicerDevelopmentToolbox | Slicer Extensions Manager or https://github.com/QIICR/SlicerDevelopmentToolbox | Slicer |
SlicerOpenIGTLink | Slicer Extensions Manager or https://github.com/openigtlink/SlicerOpenIGTLink | Slicer |
SlicerIGT | Slicer Extensions Manager or https://github.com/SlicerIGT/SlicerIGT | SlicerIGSIO, Slicer |
SlicerIGSIO | Slicer Extensions Manager or https://github.com/IGSIO/SlicerIGSIO | Slicer |
Slicer | 5.02 Stable: https://github.com/Slicer/Slicer/commit/a4420c378ebe8d84928f10bd3040d48181890a3b | Qt 5.15.2 |
➖ Builds successfully
➖ Works with test data in simulation
➖ Works with physical robot
Robot Communication Test Build: https://github.com/ProstateBRP/ProstateRobotCommunication Submodule of Prostate Robot repository
Built separately for testing purposes and uses a dummy Prostate Robot
Slicer Communication Test Build: (Tentative) Script sends OpenIGTLink commands mimicking 3D Slicer
- START_UP sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- CALIBRATION sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (calibration) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- PLANNING sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (target) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TARGETING sent from Slicer to Robot
- ACK sent from Robot to Slicer
- TRANSFORM (target) sent from Robot to Slicer
- STATUS (Reachable) sent from Robot to Slicer
- [Tentative] Slicer waits for ACK from Robot to Slicer for end of movement
- MOVE sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- START_UP sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- CALIBRATION sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (calibration) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- Slicer displays Calibration error
- START_UP sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- CALIBRATION sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (calibration) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- PLANNING sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (target) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TARGETING sent from Slicer to Robot
- ACK sent from Robot to Slicer
- TRANSFORM (target) sent from Robot to Slicer
- STATUS (NOT reachable) sent from Robot to Slicer
- Slicer displays error
- START_UP sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- CALIBRATION sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (calibration) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- PLANNING sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TRANSFORM (target) sent from Slicer to Robot
- ACK sent from Robot to Slicer
- STATUS sent from Robot to Slicer
- TARGETING sent from Slicer to Robot
- ACK sent from Robot to Slicer
- TRANSFORM (target) sent from Robot to Slicer
- STATUS (Reachable) sent from Robot to Slicer
- EMERGENCY STOP sent from Slicer to Robot
- Slicer displays that Robot has stopped
Build Instructions:
- Install Slicer from source. FINAL: Navigate to: /BRPRobot2021/ and copy ZFrameRegistration folder. Next step: Navigate to /SlicerZFrameRegistration/ and replace the ZFrameRegistration folder with the folder copied in the previous step by pasting it into the folder's root directory. NOTE Make sure you replace the whole folder.
Project Week Oct 15 - Oct 22.
The goal of the project week is to implement the Open IGT Protocol clients/servers using CMake. We will use the latest OpenIGTLink (compiled elsewhere) to be linked to both WPI and BWH software.
It is expected, but not necessary, that each party will develop an independent bridging software that communicates with their proprietary software via shared memory, peer-to-peer socket communication etc. when a party compiles the other party's software in a simulation mode, this communication with the proprietary software is cut.
[Real mode] WPI control software ---- WPI bridging software <----[this project] ----> BWH bridging software ---- Slicer
[Simulation mode] (looping with different responses from simulation patterns) WPI bridging software <----[this project] ----> BWH bridging software (looping with simulated behavioral responses from Slicer)
The goal of the hackason week is to etablish [simulation mode] using https://www.na-mic.org/wiki/ProstateBRP_OpenIGTLink_Communication_June_2013.
Step 1: Create a CMake environment to compile an example code from TrackerClient in and TrackerServer in BWH. Create CMake in the BRPRobot2001 that compiles CMake's in WPI and BWH directory.
(Rebecca: Added String Example CMakeFiles and .cxx files to BRPRobot-bridge-Slicer. Allows us to pull from the GitHub and compile example clients/servers on our individual desktops.)
Hint https://github.com/ProstateBRP/CommunicationTest/blob/master/CMakeLists.txt
Step 2: Add WPI_SIMULATION ON/OFF and BWH_SIMULATION ON/OFF in the parent Cmake, pass it to individual CMakes in BWH and WPI directory, and compile different in ON mode and OFF mode.
Step 3: modify TrackerClient in WPI, and TrackerServer in BWH, and changes phases. Specificaly implement the following in BWH, and WPI should respond according to the protocol. Use if(simulation) wisely. Define global variable to store phases.
Hint -- https://github.com/ProstateBRP/CommunicationTest/blob/master/RobotSimulatorTargetingPhase.cxx
STRING(CMD_XXXX, START_UP) >> STRING(CMD_XXXX, PLANNING) >> STRING(CMD_XXXX, CALIBRATION) >> STRING(CMD_XXXX, TARGETING) >> STRING (CMD_XXXX, MANUAL) >> STRING(CMD_XXXX, STOP) >> STRING(CMD_XXXX, EMERGENCY) >> GET_TRANSFORM(CURRENT_POSITION) >> GET_STATUS(CURRENT_STATUS) >> ?? CONFIRM COMMAND STRUCTURE FOR STATUS REQUEST