sophiar_config_endo_guide.json 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  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. "value": [
  19. 233.96470027218044,
  20. 42.187788316685904,
  21. 306.58865752584546,
  22. 0.8190555328954703,
  23. -0.26342165437712295,
  24. 0.24510986086006864,
  25. -0.4468536921048027
  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. 117.21224919149104,
  37. 38.32624851921699,
  38. -72.90989200004259,
  39. -0.19759914802407674,
  40. 0.6557689584549056,
  41. -0.28931051779904626,
  42. 0.6687458965242118
  43. ]
  44. },
  45. {
  46. "name": "camera_ref_in_tracker",
  47. "type": "transform_obj"
  48. },
  49. {
  50. "name": "camera_ref_in_tracker_error",
  51. "type": "double_obj"
  52. },
  53. {
  54. "name": "len_ref_in_camera_ref",
  55. "type": "transform_obj"
  56. },
  57. {
  58. "name": "camera_in_len_ref",
  59. "type": "transform_obj"
  60. },
  61. {
  62. "name": "len_ref_in_tracker",
  63. "type": "transform_obj"
  64. },
  65. {
  66. "name": "camera_in_tracker",
  67. "type": "transform_obj"
  68. },
  69. {
  70. "name": "mvs_ref_in_tracker",
  71. "type": "transform_obj"
  72. },
  73. {
  74. "name": "left_camera_in_tracker",
  75. "type": "transform_obj"
  76. },
  77. {
  78. "name": "right_camera_in_tracker",
  79. "type": "transform_obj"
  80. },
  81. {
  82. "name": "drill_ref_in_tracker",
  83. "type": "transform_obj"
  84. },
  85. {
  86. "name": "drill_in_tracker",
  87. "type": "transform_obj"
  88. },
  89. {
  90. "name": "femur_in_tracker",
  91. "type": "transform_obj"
  92. },
  93. {
  94. "name": "tibia_in_tracker",
  95. "type": "transform_obj"
  96. },
  97. {
  98. "name": "probe_in_femur_ref",
  99. "type": "transform_obj"
  100. },
  101. {
  102. "name": "probe_in_tibia_ref",
  103. "type": "transform_obj"
  104. },
  105. {
  106. "name": "probe_in_femur",
  107. "type": "transform_obj"
  108. },
  109. {
  110. "name": "probe_in_tibia",
  111. "type": "transform_obj"
  112. },
  113. {
  114. "name": "femur_in_camera_ref",
  115. "type": "transform_obj"
  116. },
  117. {
  118. "name": "tibia_in_camera_ref",
  119. "type": "transform_obj"
  120. },
  121. {
  122. "name": "probe_tip_in_femur_ref",
  123. "type": "scalarxyz_obj"
  124. },
  125. {
  126. "name": "probe_tip_in_tibia_ref",
  127. "type": "scalarxyz_obj"
  128. },
  129. {
  130. "name": "picked_point_in_femur_ref",
  131. "type": "scalarxyz_obj"
  132. },
  133. {
  134. "name": "picked_point_in_tibia_ref",
  135. "type": "scalarxyz_obj"
  136. },
  137. {
  138. "name": "probe_tip_in_femur",
  139. "type": "scalarxyz_obj"
  140. },
  141. {
  142. "name": "probe_tip_in_tibia",
  143. "type": "scalarxyz_obj"
  144. },
  145. {
  146. "name": "picked_point_in_femur",
  147. "type": "scalarxyz_obj"
  148. },
  149. {
  150. "name": "picked_point_in_tibia",
  151. "type": "scalarxyz_obj"
  152. },
  153. {
  154. "name": "camera_in_tracker_denoised",
  155. "type": "transform_obj"
  156. },
  157. {
  158. "name": "left_camera_in_tracker_denoised",
  159. "type": "transform_obj"
  160. },
  161. {
  162. "name": "right_camera_in_tracker_denoised",
  163. "type": "transform_obj"
  164. },
  165. {
  166. "name": "femur_in_tracker_denoised",
  167. "type": "transform_obj"
  168. },
  169. {
  170. "name": "tibia_in_tracker_denoised",
  171. "type": "transform_obj"
  172. }
  173. ],
  174. "object_list": [
  175. {
  176. "type": "transform_tree",
  177. "name": "transform_tree",
  178. "init_config": {
  179. "node_list": [
  180. {
  181. "name": "tracker"
  182. },
  183. {
  184. "name": "probe_ref",
  185. "parent": "tracker",
  186. "transform_var_name": "probe_ref_in_tracker"
  187. },
  188. {
  189. "name": "probe",
  190. "parent": "probe_ref",
  191. "transform": [
  192. 0,
  193. 0,
  194. 0,
  195. 1,
  196. 0,
  197. 0,
  198. 0
  199. ]
  200. },
  201. {
  202. "name": "femur_ref",
  203. "parent": "tracker",
  204. "transform_var_name": "femur_ref_in_tracker"
  205. },
  206. {
  207. "name": "femur",
  208. "parent": "femur_ref",
  209. "transform_var_name": "femur_in_femur_ref"
  210. },
  211. {
  212. "name": "tibia_ref",
  213. "parent": "tracker",
  214. "transform_var_name": "tibia_ref_in_tracker"
  215. },
  216. {
  217. "name": "tibia",
  218. "parent": "tibia_ref",
  219. "transform_var_name": "tibia_in_tibia_ref"
  220. },
  221. {
  222. "name": "camera_ref",
  223. "parent": "tracker",
  224. "transform_var_name": "camera_ref_in_tracker"
  225. },
  226. {
  227. "name": "len_ref",
  228. "parent": "camera_ref",
  229. "transform_var_name": "len_ref_in_camera_ref"
  230. },
  231. {
  232. "name": "camera",
  233. "parent": "len_ref",
  234. "transform_var_name": "camera_in_len_ref"
  235. },
  236. {
  237. "name": "mvs_ref",
  238. "parent": "tracker",
  239. "transform_var_name": "mvs_ref_in_tracker"
  240. },
  241. {
  242. "name": "left_camera",
  243. "parent": "mvs_ref",
  244. "transform": [
  245. 1.69529294997093,
  246. -40.8504461910221,
  247. -38.4356249156025,
  248. 0.328217190586743,
  249. 0.623382258094322,
  250. 0.318037852337519,
  251. -0.634444607965983
  252. ]
  253. },
  254. {
  255. "name": "right_camera",
  256. "parent": "mvs_ref",
  257. "transform": [
  258. 0.0941597771490770,
  259. -41.0431819166041,
  260. -105.682270133671,
  261. 0.329203554783163,
  262. 0.626106195513828,
  263. 0.316605284270741,
  264. -0.631962930423275
  265. ]
  266. },
  267. {
  268. "name": "drill_ref",
  269. "parent": "tracker",
  270. "transform_var_name": "drill_ref_in_tracker"
  271. },
  272. {
  273. "name": "drill",
  274. "parent": "drill_ref",
  275. "transform": [
  276. -134.93834363508242,
  277. -38.64937251450866,
  278. 76.05756748057985,
  279. 0.5651659820674402,
  280. 0.4249557773624757,
  281. -0.4256067427602504,
  282. -0.5646759252146404
  283. ]
  284. }
  285. ]
  286. },
  287. "start_config": {
  288. "watch_list": [
  289. {
  290. "target": "len_ref",
  291. "observer": "tracker",
  292. "transform_var_name": "len_ref_in_tracker"
  293. },
  294. {
  295. "target": "camera",
  296. "observer": "tracker",
  297. "transform_var_name": "camera_in_tracker"
  298. },
  299. {
  300. "target": "left_camera",
  301. "observer": "tracker",
  302. "transform_var_name": "left_camera_in_tracker"
  303. },
  304. {
  305. "target": "right_camera",
  306. "observer": "tracker",
  307. "transform_var_name": "right_camera_in_tracker"
  308. },
  309. {
  310. "target": "drill",
  311. "observer": "tracker",
  312. "transform_var_name": "drill_in_tracker"
  313. },
  314. {
  315. "target": "femur",
  316. "observer": "tracker",
  317. "transform_var_name": "femur_in_tracker"
  318. },
  319. {
  320. "target": "tibia",
  321. "observer": "tracker",
  322. "transform_var_name": "tibia_in_tracker"
  323. },
  324. {
  325. "target": "probe",
  326. "observer": "tracker",
  327. "transform_var_name": "probe_in_tracker"
  328. },
  329. {
  330. "target": "probe",
  331. "observer": "femur_ref",
  332. "transform_var_name": "probe_in_femur_ref"
  333. },
  334. {
  335. "target": "probe",
  336. "observer": "tibia_ref",
  337. "transform_var_name": "probe_in_tibia_ref"
  338. },
  339. {
  340. "target": "probe",
  341. "observer": "femur",
  342. "transform_var_name": "probe_in_femur"
  343. },
  344. {
  345. "target": "probe",
  346. "observer": "tibia",
  347. "transform_var_name": "probe_in_tibia"
  348. },
  349. {
  350. "target": "femur",
  351. "observer": "camera_ref",
  352. "transform_var_name": "femur_in_camera_ref"
  353. },
  354. {
  355. "target": "tibia",
  356. "observer": "camera_ref",
  357. "transform_var_name": "tibia_in_camera_ref"
  358. }
  359. ]
  360. }
  361. },
  362. {
  363. "type": "ndi_interface",
  364. "name": "ndi",
  365. "init_config": {
  366. "address_type": "ethernet",
  367. "ip": "192.168.1.202",
  368. "tcp_port": 8765,
  369. "com_port": "/dev/ttyUSB0",
  370. "tool_list": [
  371. {
  372. "rom_path": "/home/tpx/data/roms/Probe_Small_4Ball.rom",
  373. "serial_number": "3DD50000",
  374. "outputs": {
  375. "transform": "probe_ref_in_tracker"
  376. }
  377. },
  378. {
  379. "rom_path": "/home/tpx/data/roms/Glass_4Ball_2.rom",
  380. "outputs": {
  381. "transform": "camera_ref_in_tracker",
  382. "marker_uncertainty": "camera_ref_in_tracker_error"
  383. }
  384. },
  385. {
  386. "rom_path": "/home/tpx/data/roms/NR_1_STCAM_20241115.rom",
  387. "outputs": {
  388. "transform": "mvs_ref_in_tracker"
  389. }
  390. },
  391. {
  392. "rom_path": "/home/tpx/data/roms/Glass_3Ball_7_Drill.rom",
  393. "outputs": {
  394. "transform": "drill_ref_in_tracker"
  395. }
  396. },
  397. {
  398. "rom_path": "/home/tpx/data/roms/Glass_3Ball_5.rom",
  399. "serial_number": "39B33001",
  400. "outputs": {
  401. "transform": "femur_ref_in_tracker"
  402. }
  403. },
  404. {
  405. "rom_path": "/home/tpx/data/roms/Glass_3Ball_6.rom",
  406. "outputs": {
  407. "transform": "tibia_ref_in_tracker"
  408. }
  409. }
  410. ]
  411. },
  412. "start_config": {
  413. "allow_unreliable": true,
  414. "prefer_stream_tracking": false
  415. }
  416. },
  417. {
  418. "type": "variable_validity_watcher",
  419. "name": "probe_visibility_watcher",
  420. "start_config": {
  421. "variable_name": "probe_in_tracker"
  422. }
  423. },
  424. {
  425. "type": "transform_obj_validity_watcher",
  426. "name": "camera_visibility_watcher",
  427. "start_config": {
  428. "variable_name": "camera_ref_in_tracker"
  429. }
  430. },
  431. {
  432. "type": "transform_obj_validity_watcher",
  433. "name": "femur_visibility_watcher",
  434. "start_config": {
  435. "variable_name": "femur_ref_in_tracker"
  436. }
  437. },
  438. {
  439. "type": "transform_obj_validity_watcher",
  440. "name": "tibia_visibility_watcher",
  441. "start_config": {
  442. "variable_name": "tibia_ref_in_tracker"
  443. }
  444. },
  445. {
  446. "type": "scalarxyz_transformer",
  447. "name": "probe_tip_in_femur_ref_transformer",
  448. "start_config": {
  449. "transform_type": "point",
  450. "transform_var_name": "probe_in_femur_ref",
  451. "target_value": [
  452. 0,
  453. 0,
  454. 0
  455. ],
  456. "output_var_name": "probe_tip_in_femur_ref"
  457. },
  458. "dependencies": [
  459. "ndi",
  460. "transform_tree"
  461. ]
  462. },
  463. {
  464. "type": "scalarxyz_transformer",
  465. "name": "probe_tip_in_tibia_ref_transformer",
  466. "start_config": {
  467. "transform_type": "point",
  468. "transform_var_name": "probe_in_tibia_ref",
  469. "target_value": [
  470. 0,
  471. 0,
  472. 0
  473. ],
  474. "output_var_name": "probe_tip_in_tibia_ref"
  475. },
  476. "dependencies": [
  477. "ndi",
  478. "transform_tree"
  479. ]
  480. },
  481. {
  482. "type": "transform_stabilizer",
  483. "name": "point_picker_in_femur_ref",
  484. "start_config": {
  485. "stable_type": "point",
  486. "input_var_name": "probe_tip_in_femur_ref",
  487. "output_var_name": "picked_point_in_femur_ref",
  488. "linear_tolerance_mm": 0.05,
  489. "temporal_interval_s": 3
  490. },
  491. "dependencies": [
  492. "probe_tip_in_femur_ref_transformer"
  493. ]
  494. },
  495. {
  496. "type": "transform_stabilizer",
  497. "name": "point_picker_in_tibia_ref",
  498. "start_config": {
  499. "stable_type": "point",
  500. "input_var_name": "probe_tip_in_tibia_ref",
  501. "output_var_name": "picked_point_in_tibia_ref",
  502. "linear_tolerance_mm": 0.05,
  503. "temporal_interval_s": 3
  504. },
  505. "dependencies": [
  506. "probe_tip_in_tibia_ref_transformer"
  507. ]
  508. },
  509. {
  510. "type": "scalarxyz_obj_watcher",
  511. "name": "picked_point_watcher_for_femur_ref",
  512. "start_config": {
  513. "variable_name": "picked_point_in_femur_ref"
  514. }
  515. },
  516. {
  517. "type": "scalarxyz_obj_watcher",
  518. "name": "picked_point_watcher_for_tibia_ref",
  519. "start_config": {
  520. "variable_name": "picked_point_in_tibia_ref"
  521. }
  522. },
  523. {
  524. "type": "transform_obj_watcher",
  525. "name": "femur_registration_result_watcher",
  526. "start_config": {
  527. "variable_name": "femur_in_femur_ref"
  528. }
  529. },
  530. {
  531. "type": "transform_obj_watcher",
  532. "name": "tibia_registration_result_watcher",
  533. "start_config": {
  534. "variable_name": "tibia_in_tibia_ref"
  535. }
  536. },
  537. {
  538. "type": "kalman_denoiser",
  539. "name": "camera_denoiser",
  540. "init_config": {
  541. "variable_in": "camera_in_tracker",
  542. "variable_out": "camera_in_tracker_denoised"
  543. }
  544. },
  545. {
  546. "type": "kalman_denoiser",
  547. "name": "left_camera_denoiser",
  548. "init_config": {
  549. "variable_in": "left_camera_in_tracker",
  550. "variable_out": "left_camera_in_tracker_denoised"
  551. }
  552. },
  553. {
  554. "type": "kalman_denoiser",
  555. "name": "right_camera_denoiser",
  556. "init_config": {
  557. "variable_in": "right_camera_in_tracker",
  558. "variable_out": "right_camera_in_tracker_denoised"
  559. }
  560. },
  561. {
  562. "type": "kalman_denoiser",
  563. "name": "femur_denoiser",
  564. "init_config": {
  565. "variable_in": "femur_in_tracker",
  566. "variable_out": "femur_in_tracker_denoised"
  567. }
  568. },
  569. {
  570. "type": "kalman_denoiser",
  571. "name": "tibia_denoiser",
  572. "init_config": {
  573. "variable_in": "tibia_in_tracker",
  574. "variable_out": "tibia_in_tracker_denoised"
  575. }
  576. },
  577. {
  578. "type": "empty_object",
  579. "name": "tracker_all",
  580. "dependencies": [
  581. "transform_tree",
  582. "ndi",
  583. "probe_visibility_watcher",
  584. "camera_visibility_watcher",
  585. "femur_visibility_watcher",
  586. "tibia_visibility_watcher",
  587. "femur_denoiser",
  588. "tibia_denoiser",
  589. "camera_denoiser",
  590. "left_camera_denoiser",
  591. "right_camera_denoiser"
  592. ]
  593. }
  594. ]
  595. }