sophiar_config_endo_guide.json 12 KB

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