sophiar_config_endo_guide.json 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  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": "femur_in_tracker",
  63. "type": "transform_obj"
  64. },
  65. {
  66. "name": "tibia_in_tracker",
  67. "type": "transform_obj"
  68. },
  69. {
  70. "name": "probe_in_femur_ref",
  71. "type": "transform_obj"
  72. },
  73. {
  74. "name": "probe_in_tibia_ref",
  75. "type": "transform_obj"
  76. },
  77. {
  78. "name": "probe_in_femur",
  79. "type": "transform_obj"
  80. },
  81. {
  82. "name": "probe_in_tibia",
  83. "type": "transform_obj"
  84. },
  85. {
  86. "name": "probe_tip_in_femur_ref",
  87. "type": "scalarxyz_obj"
  88. },
  89. {
  90. "name": "probe_tip_in_tibia_ref",
  91. "type": "scalarxyz_obj"
  92. },
  93. {
  94. "name": "picked_point_in_femur_ref",
  95. "type": "scalarxyz_obj"
  96. },
  97. {
  98. "name": "picked_point_in_tibia_ref",
  99. "type": "scalarxyz_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. "name": "femur_in_tracker_denoised",
  119. "type": "transform_obj"
  120. },
  121. {
  122. "name": "tibia_in_tracker_denoised",
  123. "type": "transform_obj"
  124. }
  125. ],
  126. "object_list": [
  127. {
  128. "type": "transform_tree",
  129. "name": "transform_tree",
  130. "init_config": {
  131. "node_list": [
  132. {
  133. "name": "tracker"
  134. },
  135. {
  136. "name": "probe_ref",
  137. "parent": "tracker",
  138. "transform_var_name": "probe_ref_in_tracker"
  139. },
  140. {
  141. "name": "probe",
  142. "parent": "probe_ref",
  143. "transform": [
  144. -0.23,
  145. -13.98,
  146. -119.65,
  147. 1,
  148. 0,
  149. 0,
  150. 0
  151. ]
  152. },
  153. {
  154. "name": "femur_ref",
  155. "parent": "tracker",
  156. "transform_var_name": "femur_ref_in_tracker"
  157. },
  158. {
  159. "name": "femur",
  160. "parent": "femur_ref",
  161. "transform_var_name": "femur_in_femur_ref"
  162. },
  163. {
  164. "name": "tibia_ref",
  165. "parent": "tracker",
  166. "transform_var_name": "tibia_ref_in_tracker"
  167. },
  168. {
  169. "name": "tibia",
  170. "parent": "tibia_ref",
  171. "transform_var_name": "tibia_in_tibia_ref"
  172. },
  173. {
  174. "name": "camera_ref",
  175. "parent": "tracker",
  176. "transform_var_name": "camera_ref_in_tracker"
  177. },
  178. {
  179. "name": "camera",
  180. "parent": "camera_ref",
  181. "transform_var_name": "camera_in_camera_ref"
  182. }
  183. ]
  184. },
  185. "start_config": {
  186. "watch_list": [
  187. {
  188. "target": "camera",
  189. "observer": "tracker",
  190. "transform_var_name": "camera_in_tracker"
  191. },
  192. {
  193. "target": "femur",
  194. "observer": "tracker",
  195. "transform_var_name": "femur_in_tracker"
  196. },
  197. {
  198. "target": "tibia",
  199. "observer": "tracker",
  200. "transform_var_name": "tibia_in_tracker"
  201. },
  202. {
  203. "target": "probe",
  204. "observer": "tracker",
  205. "transform_var_name": "probe_in_tracker"
  206. },
  207. {
  208. "target": "probe",
  209. "observer": "femur_ref",
  210. "transform_var_name": "probe_in_femur_ref"
  211. },
  212. {
  213. "target": "probe",
  214. "observer": "tibia_ref",
  215. "transform_var_name": "probe_in_tibia_ref"
  216. },
  217. {
  218. "target": "probe",
  219. "observer": "femur",
  220. "transform_var_name": "probe_in_femur"
  221. },
  222. {
  223. "target": "probe",
  224. "observer": "tibia",
  225. "transform_var_name": "probe_in_tibia"
  226. }
  227. ]
  228. }
  229. },
  230. {
  231. "type": "ndi_interface",
  232. "name": "ndi",
  233. "init_config": {
  234. "address_type": "ethernet",
  235. "ip": "10.0.0.5",
  236. "tcp_port": 8765,
  237. "com_port": "/dev/ttyUSB0",
  238. "tool_list": [
  239. {
  240. "rom_path": "/home/tpx/data/roms/GlassProbe_4Ball_4.rom",
  241. "serial_number": "3DD50000",
  242. "outputs": {
  243. "transform": "probe_ref_in_tracker"
  244. }
  245. },
  246. {
  247. "rom_path": "/home/tpx/data/roms/Glass_4Ball_2.rom",
  248. "outputs": {
  249. "transform": "camera_ref_in_tracker",
  250. "marker_uncertainty": "camera_ref_in_tracker_error"
  251. }
  252. },
  253. {
  254. "rom_path": "/home/tpx/data/roms/Glass_3Ball_5.rom",
  255. "serial_number": "39B33001",
  256. "outputs": {
  257. "transform": "femur_ref_in_tracker"
  258. }
  259. },
  260. {
  261. "rom_path": "/home/tpx/data/roms/Glass_3Ball_6.rom",
  262. "outputs": {
  263. "transform": "tibia_ref_in_tracker"
  264. }
  265. }
  266. ]
  267. },
  268. "start_config": {
  269. "allow_unreliable": true,
  270. "prefer_stream_tracking": false
  271. }
  272. },
  273. {
  274. "type": "variable_validity_watcher",
  275. "name": "probe_visibility_watcher",
  276. "start_config": {
  277. "variable_name": "probe_in_tracker"
  278. }
  279. },
  280. {
  281. "type": "transform_obj_validity_watcher",
  282. "name": "camera_visibility_watcher",
  283. "start_config": {
  284. "variable_name": "camera_ref_in_tracker"
  285. }
  286. },
  287. {
  288. "type": "transform_obj_validity_watcher",
  289. "name": "femur_visibility_watcher",
  290. "start_config": {
  291. "variable_name": "femur_ref_in_tracker"
  292. }
  293. },
  294. {
  295. "type": "transform_obj_validity_watcher",
  296. "name": "tibia_visibility_watcher",
  297. "start_config": {
  298. "variable_name": "tibia_ref_in_tracker"
  299. }
  300. },
  301. {
  302. "type": "scalarxyz_transformer",
  303. "name": "probe_tip_in_femur_ref_transformer",
  304. "start_config": {
  305. "transform_type": "point",
  306. "transform_var_name": "probe_in_femur_ref",
  307. "target_value": [
  308. 0,
  309. 0,
  310. 0
  311. ],
  312. "output_var_name": "probe_tip_in_femur_ref"
  313. },
  314. "dependencies": [
  315. "ndi",
  316. "transform_tree"
  317. ]
  318. },
  319. {
  320. "type": "scalarxyz_transformer",
  321. "name": "probe_tip_in_tibia_ref_transformer",
  322. "start_config": {
  323. "transform_type": "point",
  324. "transform_var_name": "probe_in_tibia_ref",
  325. "target_value": [
  326. 0,
  327. 0,
  328. 0
  329. ],
  330. "output_var_name": "probe_tip_in_tibia_ref"
  331. },
  332. "dependencies": [
  333. "ndi",
  334. "transform_tree"
  335. ]
  336. },
  337. {
  338. "type": "transform_stabilizer",
  339. "name": "point_picker_in_femur_ref",
  340. "start_config": {
  341. "stable_type": "point",
  342. "input_var_name": "probe_tip_in_femur_ref",
  343. "output_var_name": "picked_point_in_femur_ref",
  344. "linear_tolerance_mm": 0.05,
  345. "temporal_interval_s": 3
  346. },
  347. "dependencies": [
  348. "probe_tip_in_femur_ref_transformer"
  349. ]
  350. },
  351. {
  352. "type": "transform_stabilizer",
  353. "name": "point_picker_in_tibia_ref",
  354. "start_config": {
  355. "stable_type": "point",
  356. "input_var_name": "probe_tip_in_tibia_ref",
  357. "output_var_name": "picked_point_in_tibia_ref",
  358. "linear_tolerance_mm": 0.05,
  359. "temporal_interval_s": 3
  360. },
  361. "dependencies": [
  362. "probe_tip_in_tibia_ref_transformer"
  363. ]
  364. },
  365. {
  366. "type": "scalarxyz_obj_watcher",
  367. "name": "picked_point_watcher_for_femur_ref",
  368. "start_config": {
  369. "variable_name": "picked_point_in_femur_ref"
  370. }
  371. },
  372. {
  373. "type": "scalarxyz_obj_watcher",
  374. "name": "picked_point_watcher_for_tibia_ref",
  375. "start_config": {
  376. "variable_name": "picked_point_in_tibia_ref"
  377. }
  378. },
  379. {
  380. "type": "transform_obj_watcher",
  381. "name": "femur_registration_result_watcher",
  382. "start_config": {
  383. "variable_name": "femur_in_femur_ref"
  384. }
  385. },
  386. {
  387. "type": "transform_obj_watcher",
  388. "name": "tibia_registration_result_watcher",
  389. "start_config": {
  390. "variable_name": "tibia_in_tibia_ref"
  391. }
  392. },
  393. {
  394. "type": "kalman_denoiser",
  395. "name": "femur_denoiser",
  396. "init_config": {
  397. "variable_in": "femur_in_tracker",
  398. "variable_out": "femur_in_tracker_denoised"
  399. }
  400. },
  401. {
  402. "type": "kalman_denoiser",
  403. "name": "tibia_denoiser",
  404. "init_config": {
  405. "variable_in": "tibia_in_tracker",
  406. "variable_out": "tibia_in_tracker_denoised"
  407. }
  408. },
  409. {
  410. "type": "empty_object",
  411. "name": "tracker_all",
  412. "dependencies": [
  413. "transform_tree",
  414. "ndi",
  415. "probe_visibility_watcher",
  416. "camera_visibility_watcher",
  417. "femur_visibility_watcher",
  418. "tibia_visibility_watcher",
  419. "femur_denoiser",
  420. "tibia_denoiser"
  421. ]
  422. }
  423. ]
  424. }