tka_ar_navigation.json 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  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. },
  32. {
  33. "name": "camera_ref_in_tracker",
  34. "type": "transform_obj"
  35. },
  36. {
  37. "name": "left_camera_in_tracker",
  38. "type": "transform_obj"
  39. },
  40. {
  41. "name": "right_camera_in_tracker",
  42. "type": "transform_obj"
  43. },
  44. {
  45. "name": "femur_in_tracker",
  46. "type": "transform_obj"
  47. },
  48. {
  49. "name": "tibia_in_tracker",
  50. "type": "transform_obj"
  51. },
  52. {
  53. "name": "probe_in_femur_ref",
  54. "type": "transform_obj"
  55. },
  56. {
  57. "name": "probe_in_tibia_ref",
  58. "type": "transform_obj"
  59. },
  60. {
  61. "name": "probe_in_femur",
  62. "type": "transform_obj"
  63. },
  64. {
  65. "name": "probe_in_tibia",
  66. "type": "transform_obj"
  67. },
  68. {
  69. "name": "probe_tip_in_femur_ref",
  70. "type": "scalarxyz_obj"
  71. },
  72. {
  73. "name": "probe_tip_in_tibia_ref",
  74. "type": "scalarxyz_obj"
  75. },
  76. {
  77. "name": "picked_point_in_femur_ref",
  78. "type": "scalarxyz_obj"
  79. },
  80. {
  81. "name": "picked_point_in_tibia_ref",
  82. "type": "scalarxyz_obj"
  83. },
  84. {
  85. "name": "femur_in_femur_ref_error",
  86. "type": "double_obj"
  87. },
  88. {
  89. "name": "tibia_in_tibia_ref_error",
  90. "type": "double_obj"
  91. },
  92. {
  93. "name": "probe_tip_in_femur",
  94. "type": "scalarxyz_obj"
  95. },
  96. {
  97. "name": "probe_tip_in_tibia",
  98. "type": "scalarxyz_obj"
  99. },
  100. {
  101. "name": "picked_point_in_femur",
  102. "type": "scalarxyz_obj"
  103. },
  104. {
  105. "name": "picked_point_in_tibia",
  106. "type": "scalarxyz_obj"
  107. }
  108. ],
  109. "object_list": [
  110. {
  111. "type": "transform_tree",
  112. "name": "transform_tree",
  113. "init_config": {
  114. "node_list": [
  115. {
  116. "name": "tracker"
  117. },
  118. {
  119. "name": "probe_ref",
  120. "parent": "tracker",
  121. "transform_var_name": "probe_in_tracker"
  122. },
  123. {
  124. "name": "probe",
  125. "parent": "probe_ref",
  126. "transform": [
  127. -0.23,
  128. -13.98,
  129. -119.65,
  130. 1,
  131. 0,
  132. 0,
  133. 0
  134. ]
  135. },
  136. {
  137. "name": "femur_ref",
  138. "parent": "tracker",
  139. "transform_var_name": "femur_ref_in_tracker"
  140. },
  141. {
  142. "name": "femur",
  143. "parent": "femur_ref",
  144. "transform_var_name": "femur_in_femur_ref"
  145. },
  146. {
  147. "name": "tibia_ref",
  148. "parent": "tracker",
  149. "transform_var_name": "tibia_ref_in_tracker"
  150. },
  151. {
  152. "name": "tibia",
  153. "parent": "tibia_ref",
  154. "transform_var_name": "tibia_in_tibia_ref"
  155. },
  156. {
  157. "name": "camera_ref",
  158. "parent": "tracker",
  159. "transform_var_name": "camera_ref_in_tracker"
  160. },
  161. {
  162. "name": "left_camera",
  163. "parent": "camera_ref",
  164. "transform": [
  165. -11.3375,
  166. 21.2730,
  167. -37.5694,
  168. 0.0009,
  169. -0.7088,
  170. -0.0091,
  171. 0.7053
  172. ]
  173. },
  174. {
  175. "name": "right_camera",
  176. "parent": "camera_ref",
  177. "transform": [
  178. -11.2100,
  179. 22.1807,
  180. -97.3032,
  181. 0.0011,
  182. 0.7066,
  183. 0.0120,
  184. -0.7075
  185. ]
  186. }
  187. ]
  188. },
  189. "start_config": {
  190. "watch_list": [
  191. {
  192. "target": "left_camera",
  193. "observer": "tracker",
  194. "transform_var_name": "left_camera_in_tracker"
  195. },
  196. {
  197. "target": "right_camera",
  198. "observer": "tracker",
  199. "transform_var_name": "right_camera_in_tracker"
  200. },
  201. {
  202. "target": "femur",
  203. "observer": "tracker",
  204. "transform_var_name": "femur_in_tracker"
  205. },
  206. {
  207. "target": "tibia",
  208. "observer": "tracker",
  209. "transform_var_name": "tibia_in_tracker"
  210. },
  211. {
  212. "target": "probe",
  213. "observer": "femur_ref",
  214. "transform_var_name": "probe_in_femur_ref"
  215. },
  216. {
  217. "target": "probe",
  218. "observer": "tibia_ref",
  219. "transform_var_name": "probe_in_tibia_ref"
  220. },
  221. {
  222. "target": "probe",
  223. "observer": "femur",
  224. "transform_var_name": "probe_in_femur"
  225. },
  226. {
  227. "target": "probe",
  228. "observer": "tibia",
  229. "transform_var_name": "probe_in_tibia"
  230. }
  231. ]
  232. }
  233. },
  234. {
  235. "type": "ndi_interface",
  236. "name": "ndi",
  237. "init_config": {
  238. "address_type": "ethernet",
  239. "ip": "10.0.0.5",
  240. "tcp_port": 8765,
  241. "com_port": "COM3",
  242. "tool_list": [
  243. {
  244. "rom_path": "/home/tpx/data/roms/GlassProbe_4Ball_4.rom",
  245. "outputs": {
  246. "transform": "probe_in_tracker"
  247. }
  248. },
  249. {
  250. "rom_path": "/home/tpx/data/roms/Glass_4Ball_1.rom",
  251. "outputs": {
  252. "transform": "camera_ref_in_tracker"
  253. }
  254. },
  255. {
  256. "rom_path": "/home/tpx/data/roms/Glass_3Ball_6.rom",
  257. "outputs": {
  258. "transform": "femur_ref_in_tracker"
  259. }
  260. },
  261. {
  262. "rom_path": "/home/tpx/data/roms/Glass_3Ball_5.rom",
  263. "outputs": {
  264. "transform": "tibia_ref_in_tracker"
  265. }
  266. }
  267. ]
  268. },
  269. "start_config": {
  270. "allow_unreliable": true,
  271. "prefer_stream_tracking": false
  272. }
  273. },
  274. {
  275. "type": "transform_obj_validity_watcher",
  276. "name": "probe_visibility_watcher",
  277. "start_config": {
  278. "variable_name": "probe_in_tracker"
  279. }
  280. },
  281. {
  282. "type": "transform_obj_validity_watcher",
  283. "name": "camera_visibility_watcher",
  284. "start_config": {
  285. "variable_name": "camera_ref_in_tracker"
  286. }
  287. },
  288. {
  289. "type": "transform_obj_validity_watcher",
  290. "name": "femur_visibility_watcher",
  291. "start_config": {
  292. "variable_name": "femur_ref_in_tracker"
  293. }
  294. },
  295. {
  296. "type": "transform_obj_validity_watcher",
  297. "name": "tibia_visibility_watcher",
  298. "start_config": {
  299. "variable_name": "tibia_ref_in_tracker"
  300. }
  301. },
  302. {
  303. "type": "scalarxyz_transformer",
  304. "name": "probe_tip_in_femur_ref_transformer",
  305. "start_config": {
  306. "transform_type": "point",
  307. "transform_var_name": "probe_in_femur_ref",
  308. "target_value": [
  309. 0,
  310. 0,
  311. 0
  312. ],
  313. "output_var_name": "probe_tip_in_femur_ref"
  314. },
  315. "dependencies": [
  316. "ndi",
  317. "transform_tree"
  318. ]
  319. },
  320. {
  321. "type": "scalarxyz_transformer",
  322. "name": "probe_tip_in_tibia_ref_transformer",
  323. "start_config": {
  324. "transform_type": "point",
  325. "transform_var_name": "probe_in_tibia_ref",
  326. "target_value": [
  327. 0,
  328. 0,
  329. 0
  330. ],
  331. "output_var_name": "probe_tip_in_tibia_ref"
  332. },
  333. "dependencies": [
  334. "ndi",
  335. "transform_tree"
  336. ]
  337. },
  338. {
  339. "type": "transform_stabilizer",
  340. "name": "point_picker_in_femur_ref",
  341. "start_config": {
  342. "stable_type": "point",
  343. "input_var_name": "probe_tip_in_femur_ref",
  344. "output_var_name": "picked_point_in_femur_ref",
  345. "linear_tolerance_mm": 0.05,
  346. "temporal_interval_s": 3
  347. },
  348. "dependencies": [
  349. "probe_tip_in_femur_ref_transformer"
  350. ]
  351. },
  352. {
  353. "type": "transform_stabilizer",
  354. "name": "point_picker_in_tibia_ref",
  355. "start_config": {
  356. "stable_type": "point",
  357. "input_var_name": "probe_tip_in_tibia_ref",
  358. "output_var_name": "picked_point_in_tibia_ref",
  359. "linear_tolerance_mm": 0.05,
  360. "temporal_interval_s": 3
  361. },
  362. "dependencies": [
  363. "probe_tip_in_tibia_ref_transformer"
  364. ]
  365. },
  366. {
  367. "type": "scalarxyz_obj_watcher",
  368. "name": "picked_point_watcher_for_femur_ref",
  369. "start_config": {
  370. "variable_name": "picked_point_in_femur_ref"
  371. }
  372. },
  373. {
  374. "type": "scalarxyz_obj_watcher",
  375. "name": "picked_point_watcher_for_tibia_ref",
  376. "start_config": {
  377. "variable_name": "picked_point_in_tibia_ref"
  378. }
  379. },
  380. {
  381. "type": "landmark_registration",
  382. "name": "femur_landmark",
  383. "start_config": {
  384. "fiducial_points": [
  385. [
  386. 1.68412,
  387. 22.5766,
  388. 202.831
  389. ],
  390. [
  391. 13.5083,
  392. -24.1831,
  393. 200.386
  394. ],
  395. [
  396. 26.621,
  397. 2.0151,
  398. 191.341
  399. ]
  400. ],
  401. "point_var_name": "picked_point_in_femur_ref",
  402. "transform_var_name": "femur_in_femur_ref",
  403. "error_var_name": "femur_in_femur_ref_error"
  404. },
  405. "dependencies": [
  406. "point_picker_in_femur_ref"
  407. ]
  408. },
  409. {
  410. "type": "transform_obj_watcher",
  411. "name": "femur_registration_result_watcher",
  412. "start_config": {
  413. "variable_name": "femur_in_femur_ref"
  414. }
  415. },
  416. {
  417. "type": "double_obj_watcher",
  418. "name": "femur_registration_error_watcher",
  419. "start_config": {
  420. "variable_name": "femur_in_femur_ref_error"
  421. }
  422. },
  423. {
  424. "type": "scalarxyz_transformer",
  425. "name": "probe_tip_in_femur_transformer",
  426. "start_config": {
  427. "transform_type": "point",
  428. "transform_var_name": "probe_in_femur",
  429. "target_value": [
  430. 0,
  431. 0,
  432. 0
  433. ],
  434. "output_var_name": "probe_tip_in_femur"
  435. },
  436. "dependencies": [
  437. "ndi",
  438. "transform_tree"
  439. ]
  440. },
  441. {
  442. "type": "transform_stabilizer",
  443. "name": "point_picker_in_femur",
  444. "start_config": {
  445. "stable_type": "point",
  446. "input_var_name": "probe_tip_in_femur",
  447. "output_var_name": "picked_point_in_femur",
  448. "linear_tolerance_mm": 0.05,
  449. "temporal_interval_s": 3
  450. },
  451. "dependencies": [
  452. "probe_tip_in_femur_transformer"
  453. ]
  454. },
  455. {
  456. "type": "scalarxyz_obj_watcher",
  457. "name": "picked_point_watcher_for_femur",
  458. "start_config": {
  459. "variable_name": "picked_point_in_femur"
  460. }
  461. },
  462. {
  463. "type": "empty_object",
  464. "name": "tracker_all",
  465. "dependencies": [
  466. "transform_tree",
  467. "ndi",
  468. "probe_visibility_watcher",
  469. "camera_visibility_watcher",
  470. "femur_visibility_watcher",
  471. "tibia_visibility_watcher"
  472. ]
  473. },
  474. {
  475. "type": "empty_object",
  476. "name": "femur_landmark_all",
  477. "dependencies": [
  478. "tracker_all",
  479. "femur_landmark",
  480. "picked_point_watcher_for_femur_ref",
  481. "femur_registration_result_watcher",
  482. "femur_registration_error_watcher"
  483. ]
  484. },
  485. {
  486. "type": "empty_object",
  487. "name": "femur_icp_all",
  488. "dependencies": [
  489. "tracker_all",
  490. "point_picker_in_femur",
  491. "picked_point_watcher_for_femur"
  492. ]
  493. }
  494. ]
  495. }