tka_ar_navigation.json 14 KB

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