tka_ar_navigation.json 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. {
  2. "variable_list": [
  3. {
  4. "name": "probe_in_tracker",
  5. "type": "transform_obj"
  6. },
  7. {
  8. "name": "probe_in_tracker_denoised",
  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. "value": [
  19. 49.7073,
  20. -72.6173,
  21. -9.09289,
  22. 0.440928,
  23. 0.542853,
  24. 0.490098,
  25. 0.520286
  26. ]
  27. },
  28. {
  29. "name": "tibia_ref_in_tracker",
  30. "type": "transform_obj"
  31. },
  32. {
  33. "name": "tibia_in_tibia_ref",
  34. "type": "transform_obj",
  35. "value": [
  36. -3.91566,
  37. -85.3472,
  38. -42.0667,
  39. 0.360607,
  40. 0.661265,
  41. -0.283426,
  42. -0.5936
  43. ]
  44. },
  45. {
  46. "name": "camera_ref_in_tracker",
  47. "type": "transform_obj"
  48. },
  49. {
  50. "name": "left_camera_in_tracker",
  51. "type": "transform_obj"
  52. },
  53. {
  54. "name": "right_camera_in_tracker",
  55. "type": "transform_obj"
  56. },
  57. {
  58. "name": "femur_in_tracker",
  59. "type": "transform_obj"
  60. },
  61. {
  62. "name": "tibia_in_tracker",
  63. "type": "transform_obj"
  64. },
  65. {
  66. "name": "probe_in_femur_ref",
  67. "type": "transform_obj"
  68. },
  69. {
  70. "name": "probe_in_tibia_ref",
  71. "type": "transform_obj"
  72. },
  73. {
  74. "name": "probe_in_femur",
  75. "type": "transform_obj"
  76. },
  77. {
  78. "name": "probe_in_tibia",
  79. "type": "transform_obj"
  80. },
  81. {
  82. "name": "probe_tip_in_femur_ref",
  83. "type": "scalarxyz_obj"
  84. },
  85. {
  86. "name": "probe_tip_in_tibia_ref",
  87. "type": "scalarxyz_obj"
  88. },
  89. {
  90. "name": "picked_point_in_femur_ref",
  91. "type": "scalarxyz_obj"
  92. },
  93. {
  94. "name": "picked_point_in_tibia_ref",
  95. "type": "scalarxyz_obj"
  96. },
  97. {
  98. "name": "femur_in_femur_ref_error",
  99. "type": "double_obj"
  100. },
  101. {
  102. "name": "tibia_in_tibia_ref_error",
  103. "type": "double_obj"
  104. },
  105. {
  106. "name": "probe_tip_in_femur",
  107. "type": "scalarxyz_obj"
  108. },
  109. {
  110. "name": "probe_tip_in_tibia",
  111. "type": "scalarxyz_obj"
  112. },
  113. {
  114. "name": "picked_point_in_femur",
  115. "type": "scalarxyz_obj"
  116. },
  117. {
  118. "name": "picked_point_in_tibia",
  119. "type": "scalarxyz_obj"
  120. }
  121. ],
  122. "object_list": [
  123. {
  124. "type": "transform_tree",
  125. "name": "transform_tree",
  126. "init_config": {
  127. "node_list": [
  128. {
  129. "name": "tracker"
  130. },
  131. {
  132. "name": "probe_ref",
  133. "parent": "tracker",
  134. "transform_var_name": "probe_in_tracker"
  135. },
  136. {
  137. "name": "probe",
  138. "parent": "probe_ref",
  139. "transform": [
  140. -0.23,
  141. -13.98,
  142. -119.65,
  143. 1,
  144. 0,
  145. 0,
  146. 0
  147. ]
  148. },
  149. {
  150. "name": "femur_ref",
  151. "parent": "tracker",
  152. "transform_var_name": "femur_ref_in_tracker"
  153. },
  154. {
  155. "name": "femur",
  156. "parent": "femur_ref",
  157. "transform_var_name": "femur_in_femur_ref"
  158. },
  159. {
  160. "name": "tibia_ref",
  161. "parent": "tracker",
  162. "transform_var_name": "tibia_ref_in_tracker"
  163. },
  164. {
  165. "name": "tibia",
  166. "parent": "tibia_ref",
  167. "transform_var_name": "tibia_in_tibia_ref"
  168. },
  169. {
  170. "name": "camera_ref",
  171. "parent": "tracker",
  172. "transform_var_name": "camera_ref_in_tracker"
  173. },
  174. {
  175. "name": "left_camera",
  176. "parent": "camera_ref",
  177. "transform": [
  178. 91.0962,
  179. 35.5978,
  180. -25.9658,
  181. 0.6130,
  182. -0.3530,
  183. 0.6086,
  184. 0.3595
  185. ]
  186. },
  187. {
  188. "name": "right_camera",
  189. "parent": "camera_ref",
  190. "transform": [
  191. 90.1815,
  192. 35.1063,
  193. -91.4749,
  194. 0.6089,
  195. -0.3537,
  196. 0.6133,
  197. 0.3577
  198. ]
  199. }
  200. ]
  201. },
  202. "start_config": {
  203. "watch_list": [
  204. {
  205. "target": "left_camera",
  206. "observer": "tracker",
  207. "transform_var_name": "left_camera_in_tracker"
  208. },
  209. {
  210. "target": "right_camera",
  211. "observer": "tracker",
  212. "transform_var_name": "right_camera_in_tracker"
  213. },
  214. {
  215. "target": "femur",
  216. "observer": "tracker",
  217. "transform_var_name": "femur_in_tracker"
  218. },
  219. {
  220. "target": "tibia",
  221. "observer": "tracker",
  222. "transform_var_name": "tibia_in_tracker"
  223. },
  224. {
  225. "target": "probe",
  226. "observer": "femur_ref",
  227. "transform_var_name": "probe_in_femur_ref"
  228. },
  229. {
  230. "target": "probe",
  231. "observer": "tibia_ref",
  232. "transform_var_name": "probe_in_tibia_ref"
  233. },
  234. {
  235. "target": "probe",
  236. "observer": "femur",
  237. "transform_var_name": "probe_in_femur"
  238. },
  239. {
  240. "target": "probe",
  241. "observer": "tibia",
  242. "transform_var_name": "probe_in_tibia"
  243. }
  244. ]
  245. }
  246. },
  247. {
  248. "type": "ndi_interface",
  249. "name": "ndi",
  250. "init_config": {
  251. "address_type": "serial",
  252. "ip": "10.0.0.5",
  253. "tcp_port": 8765,
  254. "com_port": "/dev/ttyUSB0",
  255. "tool_list": [
  256. {
  257. "rom_path": "/home/tpx/data/roms/GlassProbe_4Ball_4.rom",
  258. "outputs": {
  259. "transform": "probe_in_tracker"
  260. }
  261. },
  262. {
  263. "rom_path": "/home/tpx/data/roms/Glass_4Ball_1.rom",
  264. "outputs": {
  265. "transform": "camera_ref_in_tracker"
  266. }
  267. },
  268. {
  269. "rom_path": "/home/tpx/data/roms/Glass_3Ball_6.rom",
  270. "outputs": {
  271. "transform": "femur_ref_in_tracker"
  272. }
  273. },
  274. {
  275. "rom_path": "/home/tpx/data/roms/Glass_3Ball_5.rom",
  276. "outputs": {
  277. "transform": "tibia_ref_in_tracker"
  278. }
  279. }
  280. ]
  281. },
  282. "start_config": {
  283. "allow_unreliable": true,
  284. "prefer_stream_tracking": false
  285. }
  286. },
  287. {
  288. "type": "variable_validity_watcher",
  289. "name": "probe_visibility_watcher",
  290. "start_config": {
  291. "variable_name": "probe_in_tracker"
  292. }
  293. },
  294. {
  295. "type": "transform_obj_validity_watcher",
  296. "name": "camera_visibility_watcher",
  297. "start_config": {
  298. "variable_name": "camera_ref_in_tracker"
  299. }
  300. },
  301. {
  302. "type": "transform_obj_validity_watcher",
  303. "name": "femur_visibility_watcher",
  304. "start_config": {
  305. "variable_name": "femur_ref_in_tracker"
  306. }
  307. },
  308. {
  309. "type": "transform_obj_validity_watcher",
  310. "name": "tibia_visibility_watcher",
  311. "start_config": {
  312. "variable_name": "tibia_ref_in_tracker"
  313. }
  314. },
  315. {
  316. "type": "scalarxyz_transformer",
  317. "name": "probe_tip_in_femur_ref_transformer",
  318. "start_config": {
  319. "transform_type": "point",
  320. "transform_var_name": "probe_in_femur_ref",
  321. "target_value": [
  322. 0,
  323. 0,
  324. 0
  325. ],
  326. "output_var_name": "probe_tip_in_femur_ref"
  327. },
  328. "dependencies": [
  329. "ndi",
  330. "transform_tree"
  331. ]
  332. },
  333. {
  334. "type": "scalarxyz_transformer",
  335. "name": "probe_tip_in_tibia_ref_transformer",
  336. "start_config": {
  337. "transform_type": "point",
  338. "transform_var_name": "probe_in_tibia_ref",
  339. "target_value": [
  340. 0,
  341. 0,
  342. 0
  343. ],
  344. "output_var_name": "probe_tip_in_tibia_ref"
  345. },
  346. "dependencies": [
  347. "ndi",
  348. "transform_tree"
  349. ]
  350. },
  351. {
  352. "type": "transform_stabilizer",
  353. "name": "point_picker_in_femur_ref",
  354. "start_config": {
  355. "stable_type": "point",
  356. "input_var_name": "probe_tip_in_femur_ref",
  357. "output_var_name": "picked_point_in_femur_ref",
  358. "linear_tolerance_mm": 0.05,
  359. "temporal_interval_s": 3
  360. },
  361. "dependencies": [
  362. "probe_tip_in_femur_ref_transformer"
  363. ]
  364. },
  365. {
  366. "type": "transform_stabilizer",
  367. "name": "point_picker_in_tibia_ref",
  368. "start_config": {
  369. "stable_type": "point",
  370. "input_var_name": "probe_tip_in_tibia_ref",
  371. "output_var_name": "picked_point_in_tibia_ref",
  372. "linear_tolerance_mm": 0.05,
  373. "temporal_interval_s": 3
  374. },
  375. "dependencies": [
  376. "probe_tip_in_tibia_ref_transformer"
  377. ]
  378. },
  379. {
  380. "type": "scalarxyz_obj_watcher",
  381. "name": "picked_point_watcher_for_femur_ref",
  382. "start_config": {
  383. "variable_name": "picked_point_in_femur_ref"
  384. }
  385. },
  386. {
  387. "type": "scalarxyz_obj_watcher",
  388. "name": "picked_point_watcher_for_tibia_ref",
  389. "start_config": {
  390. "variable_name": "picked_point_in_tibia_ref"
  391. }
  392. },
  393. {
  394. "type": "landmark_registration",
  395. "name": "femur_landmark",
  396. "start_config": {
  397. "fiducial_points": [
  398. [
  399. 1.68412,
  400. 22.5766,
  401. 202.831
  402. ],
  403. [
  404. 13.5083,
  405. -24.1831,
  406. 200.386
  407. ],
  408. [
  409. 26.621,
  410. 2.0151,
  411. 191.341
  412. ]
  413. ],
  414. "point_var_name": "picked_point_in_femur_ref",
  415. "transform_var_name": "femur_in_femur_ref",
  416. "error_var_name": "femur_in_femur_ref_error"
  417. },
  418. "dependencies": [
  419. "point_picker_in_femur_ref"
  420. ]
  421. },
  422. {
  423. "type": "landmark_registration",
  424. "name": "tibia_landmark",
  425. "start_config": {
  426. "fiducial_points": [
  427. [
  428. 47.351,
  429. 46.6799,
  430. -70.5804
  431. ],
  432. [
  433. -45.3668,
  434. 23.3452,
  435. 1.94304
  436. ],
  437. [
  438. -55.3382,
  439. -4.55638,
  440. 54.7446
  441. ]
  442. ],
  443. "point_var_name": "picked_point_in_tibia_ref",
  444. "transform_var_name": "tibia_in_tibia_ref",
  445. "error_var_name": "tibia_in_tibia_ref_error"
  446. },
  447. "dependencies": [
  448. "point_picker_in_tibia_ref"
  449. ]
  450. },
  451. {
  452. "type": "transform_obj_watcher",
  453. "name": "femur_registration_result_watcher",
  454. "start_config": {
  455. "variable_name": "femur_in_femur_ref"
  456. }
  457. },
  458. {
  459. "type": "transform_obj_watcher",
  460. "name": "tibia_registration_result_watcher",
  461. "start_config": {
  462. "variable_name": "tibia_in_tibia_ref"
  463. }
  464. },
  465. {
  466. "type": "double_obj_watcher",
  467. "name": "femur_registration_error_watcher",
  468. "start_config": {
  469. "variable_name": "femur_in_femur_ref_error"
  470. }
  471. },
  472. {
  473. "type": "double_obj_watcher",
  474. "name": "tibia_registration_error_watcher",
  475. "start_config": {
  476. "variable_name": "tibia_in_tibia_ref_error"
  477. }
  478. },
  479. {
  480. "type": "scalarxyz_transformer",
  481. "name": "probe_tip_in_femur_transformer",
  482. "start_config": {
  483. "transform_type": "point",
  484. "transform_var_name": "probe_in_femur",
  485. "target_value": [
  486. 0,
  487. 0,
  488. 0
  489. ],
  490. "output_var_name": "probe_tip_in_femur"
  491. },
  492. "dependencies": [
  493. "ndi",
  494. "transform_tree"
  495. ]
  496. },
  497. {
  498. "type": "scalarxyz_transformer",
  499. "name": "probe_tip_in_tibia_transformer",
  500. "start_config": {
  501. "transform_type": "point",
  502. "transform_var_name": "probe_in_tibia",
  503. "target_value": [
  504. 0,
  505. 0,
  506. 0
  507. ],
  508. "output_var_name": "probe_tip_in_tibia"
  509. },
  510. "dependencies": [
  511. "ndi",
  512. "transform_tree"
  513. ]
  514. },
  515. {
  516. "type": "transform_stabilizer",
  517. "name": "point_picker_in_femur",
  518. "start_config": {
  519. "stable_type": "point",
  520. "input_var_name": "probe_tip_in_femur",
  521. "output_var_name": "picked_point_in_femur",
  522. "linear_tolerance_mm": 0.05,
  523. "temporal_interval_s": 3
  524. },
  525. "dependencies": [
  526. "probe_tip_in_femur_transformer"
  527. ]
  528. },
  529. {
  530. "type": "transform_stabilizer",
  531. "name": "point_picker_in_tibia",
  532. "start_config": {
  533. "stable_type": "point",
  534. "input_var_name": "probe_tip_in_tibia",
  535. "output_var_name": "picked_point_in_tibia",
  536. "linear_tolerance_mm": 0.05,
  537. "temporal_interval_s": 3
  538. },
  539. "dependencies": [
  540. "probe_tip_in_tibia_transformer"
  541. ]
  542. },
  543. {
  544. "type": "scalarxyz_obj_watcher",
  545. "name": "picked_point_watcher_for_femur",
  546. "start_config": {
  547. "variable_name": "picked_point_in_femur"
  548. }
  549. },
  550. {
  551. "type": "scalarxyz_obj_watcher",
  552. "name": "picked_point_watcher_for_tibia",
  553. "start_config": {
  554. "variable_name": "picked_point_in_tibia"
  555. }
  556. },
  557. {
  558. "type": "kalman_denoiser",
  559. "name": "test_denoiser",
  560. "init_config": {
  561. "variable_in": "probe_in_tracker",
  562. "variable_out": "probe_in_tracker_denoised"
  563. }
  564. },
  565. {
  566. "type": "variable_recorder",
  567. "name": "test_recorder",
  568. "init_config": {
  569. "variable_name": "probe_in_tracker_denoised",
  570. "save_file": "probe_in_tracker.csv"
  571. },
  572. "dependencies": [
  573. "test_denoiser"
  574. ]
  575. },
  576. {
  577. "type": "empty_object",
  578. "name": "tracker_all",
  579. "dependencies": [
  580. "transform_tree",
  581. "ndi",
  582. "probe_visibility_watcher",
  583. "camera_visibility_watcher",
  584. "femur_visibility_watcher",
  585. "tibia_visibility_watcher",
  586. "test_recorder"
  587. ]
  588. },
  589. {
  590. "type": "empty_object",
  591. "name": "femur_landmark_all",
  592. "dependencies": [
  593. "tracker_all",
  594. "femur_landmark",
  595. "picked_point_watcher_for_femur_ref",
  596. "femur_registration_result_watcher",
  597. "femur_registration_error_watcher"
  598. ]
  599. },
  600. {
  601. "type": "empty_object",
  602. "name": "tibia_landmark_all",
  603. "dependencies": [
  604. "tracker_all",
  605. "tibia_landmark",
  606. "picked_point_watcher_for_tibia_ref",
  607. "tibia_registration_result_watcher",
  608. "tibia_registration_error_watcher"
  609. ]
  610. },
  611. {
  612. "type": "empty_object",
  613. "name": "femur_icp_all",
  614. "dependencies": [
  615. "tracker_all",
  616. "point_picker_in_femur",
  617. "picked_point_watcher_for_femur"
  618. ]
  619. },
  620. {
  621. "type": "empty_object",
  622. "name": "tibia_icp_all",
  623. "dependencies": [
  624. "tracker_all",
  625. "point_picker_in_tibia",
  626. "picked_point_watcher_for_tibia"
  627. ]
  628. }
  629. ]
  630. }