sophiar_config.json 15 KB

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