sophiar_config_endo_guide.json 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. {
  2. "variable_list": [
  3. {
  4. "name": "probe_ref_in_tracker",
  5. "type": "transform_obj"
  6. },
  7. {
  8. "name": "probe_in_tracker",
  9. "type": "transform_obj"
  10. },
  11. {
  12. "name": "femur_ref_in_tracker",
  13. "type": "transform_obj"
  14. },
  15. {
  16. "name": "femur_in_femur_ref",
  17. "type": "transform_obj"
  18. },
  19. {
  20. "name": "tibia_ref_in_tracker",
  21. "type": "transform_obj"
  22. },
  23. {
  24. "name": "tibia_in_tibia_ref",
  25. "type": "transform_obj"
  26. },
  27. {
  28. "name": "camera_ref_in_tracker",
  29. "type": "transform_obj"
  30. },
  31. {
  32. "name": "camera_in_camera_ref",
  33. "type": "transform_obj"
  34. },
  35. {
  36. "name": "camera_in_tracker",
  37. "type": "transform_obj"
  38. },
  39. {
  40. "name": "femur_in_tracker",
  41. "type": "transform_obj"
  42. },
  43. {
  44. "name": "tibia_in_tracker",
  45. "type": "transform_obj"
  46. },
  47. {
  48. "name": "probe_in_femur_ref",
  49. "type": "transform_obj"
  50. },
  51. {
  52. "name": "probe_in_tibia_ref",
  53. "type": "transform_obj"
  54. },
  55. {
  56. "name": "probe_in_femur",
  57. "type": "transform_obj"
  58. },
  59. {
  60. "name": "probe_in_tibia",
  61. "type": "transform_obj"
  62. },
  63. {
  64. "name": "probe_tip_in_femur_ref",
  65. "type": "scalarxyz_obj"
  66. },
  67. {
  68. "name": "probe_tip_in_tibia_ref",
  69. "type": "scalarxyz_obj"
  70. },
  71. {
  72. "name": "picked_point_in_femur_ref",
  73. "type": "scalarxyz_obj"
  74. },
  75. {
  76. "name": "picked_point_in_tibia_ref",
  77. "type": "scalarxyz_obj"
  78. },
  79. {
  80. "name": "probe_tip_in_femur",
  81. "type": "scalarxyz_obj"
  82. },
  83. {
  84. "name": "probe_tip_in_tibia",
  85. "type": "scalarxyz_obj"
  86. },
  87. {
  88. "name": "picked_point_in_femur",
  89. "type": "scalarxyz_obj"
  90. },
  91. {
  92. "name": "picked_point_in_tibia",
  93. "type": "scalarxyz_obj"
  94. },
  95. {
  96. "name": "femur_in_tracker_denoised",
  97. "type": "transform_obj"
  98. },
  99. {
  100. "name": "tibia_in_tracker_denoised",
  101. "type": "transform_obj"
  102. }
  103. ],
  104. "object_list": [
  105. {
  106. "type": "transform_tree",
  107. "name": "transform_tree",
  108. "init_config": {
  109. "node_list": [
  110. {
  111. "name": "tracker"
  112. },
  113. {
  114. "name": "probe_ref",
  115. "parent": "tracker",
  116. "transform_var_name": "probe_ref_in_tracker"
  117. },
  118. {
  119. "name": "probe",
  120. "parent": "probe_ref",
  121. "transform": [
  122. -0.23,
  123. -13.98,
  124. -119.65,
  125. 1,
  126. 0,
  127. 0,
  128. 0
  129. ]
  130. },
  131. {
  132. "name": "femur_ref",
  133. "parent": "tracker",
  134. "transform_var_name": "femur_ref_in_tracker"
  135. },
  136. {
  137. "name": "femur",
  138. "parent": "femur_ref",
  139. "transform_var_name": "femur_in_femur_ref"
  140. },
  141. {
  142. "name": "tibia_ref",
  143. "parent": "tracker",
  144. "transform_var_name": "tibia_ref_in_tracker"
  145. },
  146. {
  147. "name": "tibia",
  148. "parent": "tibia_ref",
  149. "transform_var_name": "tibia_in_tibia_ref"
  150. },
  151. {
  152. "name": "camera_ref",
  153. "parent": "tracker",
  154. "transform_var_name": "camera_ref_in_tracker"
  155. },
  156. {
  157. "name": "camera",
  158. "parent": "camera_ref",
  159. "transform_var_name": "camera_in_camera_ref"
  160. }
  161. ]
  162. },
  163. "start_config": {
  164. "watch_list": [
  165. {
  166. "target": "camera",
  167. "observer": "tracker",
  168. "transform_var_name": "camera_in_tracker"
  169. },
  170. {
  171. "target": "femur",
  172. "observer": "tracker",
  173. "transform_var_name": "femur_in_tracker"
  174. },
  175. {
  176. "target": "tibia",
  177. "observer": "tracker",
  178. "transform_var_name": "tibia_in_tracker"
  179. },
  180. {
  181. "target": "probe",
  182. "observer": "tracker",
  183. "transform_var_name": "probe_in_tracker"
  184. },
  185. {
  186. "target": "probe",
  187. "observer": "femur_ref",
  188. "transform_var_name": "probe_in_femur_ref"
  189. },
  190. {
  191. "target": "probe",
  192. "observer": "tibia_ref",
  193. "transform_var_name": "probe_in_tibia_ref"
  194. },
  195. {
  196. "target": "probe",
  197. "observer": "femur",
  198. "transform_var_name": "probe_in_femur"
  199. },
  200. {
  201. "target": "probe",
  202. "observer": "tibia",
  203. "transform_var_name": "probe_in_tibia"
  204. }
  205. ]
  206. }
  207. },
  208. {
  209. "type": "ndi_interface",
  210. "name": "ndi",
  211. "init_config": {
  212. "address_type": "ethernet",
  213. "ip": "10.0.0.5",
  214. "tcp_port": 8765,
  215. "com_port": "/dev/ttyUSB0",
  216. "tool_list": [
  217. {
  218. "rom_path": "/home/tpx/data/roms/GlassProbe_4Ball_4.rom",
  219. "serial_number": "3DD50000",
  220. "outputs": {
  221. "transform": "probe_ref_in_tracker"
  222. }
  223. },
  224. {
  225. "rom_path": "/home/tpx/data/roms/Glass_4Ball_2.rom",
  226. "outputs": {
  227. "transform": "camera_ref_in_tracker"
  228. }
  229. },
  230. {
  231. "rom_path": "/home/tpx/data/roms/Glass_3Ball_5.rom",
  232. "serial_number": "39B33001",
  233. "outputs": {
  234. "transform": "femur_ref_in_tracker"
  235. }
  236. },
  237. {
  238. "rom_path": "/home/tpx/data/roms/Glass_3Ball_6.rom",
  239. "outputs": {
  240. "transform": "tibia_ref_in_tracker"
  241. }
  242. }
  243. ]
  244. },
  245. "start_config": {
  246. "allow_unreliable": true,
  247. "prefer_stream_tracking": false
  248. }
  249. },
  250. {
  251. "type": "variable_validity_watcher",
  252. "name": "probe_visibility_watcher",
  253. "start_config": {
  254. "variable_name": "probe_in_tracker"
  255. }
  256. },
  257. {
  258. "type": "transform_obj_validity_watcher",
  259. "name": "camera_visibility_watcher",
  260. "start_config": {
  261. "variable_name": "camera_ref_in_tracker"
  262. }
  263. },
  264. {
  265. "type": "transform_obj_validity_watcher",
  266. "name": "femur_visibility_watcher",
  267. "start_config": {
  268. "variable_name": "femur_ref_in_tracker"
  269. }
  270. },
  271. {
  272. "type": "transform_obj_validity_watcher",
  273. "name": "tibia_visibility_watcher",
  274. "start_config": {
  275. "variable_name": "tibia_ref_in_tracker"
  276. }
  277. },
  278. {
  279. "type": "scalarxyz_transformer",
  280. "name": "probe_tip_in_femur_ref_transformer",
  281. "start_config": {
  282. "transform_type": "point",
  283. "transform_var_name": "probe_in_femur_ref",
  284. "target_value": [
  285. 0,
  286. 0,
  287. 0
  288. ],
  289. "output_var_name": "probe_tip_in_femur_ref"
  290. },
  291. "dependencies": [
  292. "ndi",
  293. "transform_tree"
  294. ]
  295. },
  296. {
  297. "type": "scalarxyz_transformer",
  298. "name": "probe_tip_in_tibia_ref_transformer",
  299. "start_config": {
  300. "transform_type": "point",
  301. "transform_var_name": "probe_in_tibia_ref",
  302. "target_value": [
  303. 0,
  304. 0,
  305. 0
  306. ],
  307. "output_var_name": "probe_tip_in_tibia_ref"
  308. },
  309. "dependencies": [
  310. "ndi",
  311. "transform_tree"
  312. ]
  313. },
  314. {
  315. "type": "transform_stabilizer",
  316. "name": "point_picker_in_femur_ref",
  317. "start_config": {
  318. "stable_type": "point",
  319. "input_var_name": "probe_tip_in_femur_ref",
  320. "output_var_name": "picked_point_in_femur_ref",
  321. "linear_tolerance_mm": 0.05,
  322. "temporal_interval_s": 3
  323. },
  324. "dependencies": [
  325. "probe_tip_in_femur_ref_transformer"
  326. ]
  327. },
  328. {
  329. "type": "transform_stabilizer",
  330. "name": "point_picker_in_tibia_ref",
  331. "start_config": {
  332. "stable_type": "point",
  333. "input_var_name": "probe_tip_in_tibia_ref",
  334. "output_var_name": "picked_point_in_tibia_ref",
  335. "linear_tolerance_mm": 0.05,
  336. "temporal_interval_s": 3
  337. },
  338. "dependencies": [
  339. "probe_tip_in_tibia_ref_transformer"
  340. ]
  341. },
  342. {
  343. "type": "scalarxyz_obj_watcher",
  344. "name": "picked_point_watcher_for_femur_ref",
  345. "start_config": {
  346. "variable_name": "picked_point_in_femur_ref"
  347. }
  348. },
  349. {
  350. "type": "scalarxyz_obj_watcher",
  351. "name": "picked_point_watcher_for_tibia_ref",
  352. "start_config": {
  353. "variable_name": "picked_point_in_tibia_ref"
  354. }
  355. },
  356. {
  357. "type": "transform_obj_watcher",
  358. "name": "femur_registration_result_watcher",
  359. "start_config": {
  360. "variable_name": "femur_in_femur_ref"
  361. }
  362. },
  363. {
  364. "type": "transform_obj_watcher",
  365. "name": "tibia_registration_result_watcher",
  366. "start_config": {
  367. "variable_name": "tibia_in_tibia_ref"
  368. }
  369. },
  370. {
  371. "type": "kalman_denoiser",
  372. "name": "femur_denoiser",
  373. "init_config": {
  374. "variable_in": "femur_in_tracker",
  375. "variable_out": "femur_in_tracker_denoised"
  376. }
  377. },
  378. {
  379. "type": "kalman_denoiser",
  380. "name": "tibia_denoiser",
  381. "init_config": {
  382. "variable_in": "tibia_in_tracker",
  383. "variable_out": "tibia_in_tracker_denoised"
  384. }
  385. },
  386. {
  387. "type": "empty_object",
  388. "name": "tracker_all",
  389. "dependencies": [
  390. "transform_tree",
  391. "ndi",
  392. "probe_visibility_watcher",
  393. "camera_visibility_watcher",
  394. "femur_visibility_watcher",
  395. "tibia_visibility_watcher",
  396. "femur_denoiser",
  397. "tibia_denoiser"
  398. ]
  399. }
  400. ]
  401. }