ndi_registration_config_kuka.json 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. {
  2. "controller_port": 5277,
  3. "variable_list": [
  4. {
  5. "name": "probe_in_tracker",
  6. "type": "transform_obj"
  7. },
  8. {
  9. "name": "model_ref_in_tracker",
  10. "type": "transform_obj"
  11. },
  12. {
  13. "name": "model_in_model_ref",
  14. "type": "transform_obj",
  15. "value": [
  16. 135.945,
  17. 39.1189,
  18. -267.07,
  19. 0.536927,
  20. 0.60565,
  21. -0.471815,
  22. -0.349698
  23. ]
  24. },
  25. {
  26. "name": "probe_in_model_ref",
  27. "type": "transform_obj"
  28. },
  29. {
  30. "name": "probe_in_model",
  31. "type": "transform_obj"
  32. },
  33. {
  34. "name": "tip_in_model_ref",
  35. "type": "scalarxyz_obj"
  36. },
  37. {
  38. "name": "picked_point_in_model_ref",
  39. "type": "scalarxyz_obj"
  40. },
  41. {
  42. "name": "model_in_model_ref_error",
  43. "type": "double_obj"
  44. },
  45. {
  46. "name": "tip_in_model",
  47. "type": "scalarxyz_obj"
  48. },
  49. {
  50. "name": "picked_point_in_model",
  51. "type": "scalarxyz_obj"
  52. }
  53. ],
  54. "object_list": [
  55. {
  56. "type": "transform_tree",
  57. "name": "transform_tree",
  58. "init_config": {
  59. "node_list": [
  60. {
  61. "name": "tracker"
  62. },
  63. {
  64. "name": "probe",
  65. "parent": "tracker",
  66. "transform_var_name": "probe_in_tracker"
  67. },
  68. {
  69. "name": "model_ref",
  70. "parent": "tracker",
  71. "transform_var_name": "model_ref_in_tracker"
  72. },
  73. {
  74. "name": "model",
  75. "parent": "model_ref",
  76. "transform_var_name": "model_in_model_ref"
  77. }
  78. ]
  79. },
  80. "start_config": {
  81. "watch_list": [
  82. {
  83. "target": "probe",
  84. "observer": "model_ref",
  85. "transform_var_name": "probe_in_model_ref"
  86. },
  87. {
  88. "target": "probe",
  89. "observer": "model",
  90. "transform_var_name": "probe_in_model"
  91. }
  92. ]
  93. }
  94. },
  95. {
  96. "type": "ndi_interface",
  97. "name": "ndi",
  98. "init_config": {
  99. "address_type": "ethernet",
  100. "ip": "10.0.0.5",
  101. "tcp_port": 8765,
  102. "com_port": "COM3",
  103. "tool_list": [
  104. {
  105. "rom_path": "/home/tpx/data/roms/Drill_3Ball.rom",
  106. "outputs": {
  107. "transform": "model_ref_in_tracker"
  108. }
  109. },
  110. {
  111. "rom_path": "/home/tpx/data/roms/Probe_Small_3Ball.rom",
  112. "outputs": {
  113. "transform": "probe_in_tracker"
  114. }
  115. }
  116. ]
  117. },
  118. "start_config": {
  119. "allow_unreliable": false,
  120. "prefer_stream_tracking": false
  121. }
  122. },
  123. {
  124. "type": "transform_obj_validity_watcher",
  125. "name": "probe_visibility_watcher",
  126. "start_config": {
  127. "variable_name": "probe_in_tracker"
  128. }
  129. },
  130. {
  131. "type": "transform_obj_validity_watcher",
  132. "name": "model_ref_visibility_watcher",
  133. "start_config": {
  134. "variable_name": "model_ref_in_tracker"
  135. }
  136. },
  137. {
  138. "type": "scalarxyz_transformer",
  139. "name": "probe_tip_transformer_for_model_ref",
  140. "start_config": {
  141. "transform_type": "point",
  142. "transform_var_name": "probe_in_model_ref",
  143. "target_value": [
  144. 0,
  145. 0,
  146. 0
  147. ],
  148. "output_var_name": "tip_in_model_ref"
  149. },
  150. "dependencies": [
  151. "ndi",
  152. "transform_tree"
  153. ]
  154. },
  155. {
  156. "type": "transform_stabilizer",
  157. "name": "point_picker_for_model_ref",
  158. "start_config": {
  159. "stable_type": "point",
  160. "input_var_name": "tip_in_model_ref",
  161. "output_var_name": "picked_point_in_model_ref",
  162. "linear_tolerance_mm": 0.05,
  163. "angular_tolerance_deg": 0.01,
  164. "temporal_interval_s": 3,
  165. "counting_interval": 150
  166. },
  167. "dependencies": [
  168. "probe_tip_transformer_for_model_ref"
  169. ]
  170. },
  171. {
  172. "type": "scalarxyz_obj_watcher",
  173. "name": "picked_point_watcher_for_model_ref",
  174. "start_config": {
  175. "variable_name": "picked_point_in_model_ref"
  176. }
  177. },
  178. {
  179. "type": "landmark_registration",
  180. "name": "model_registrator",
  181. "start_config": {
  182. "fiducial_points": [
  183. [
  184. 9.16363,
  185. 245.77,
  186. -35.5363
  187. ],
  188. [
  189. -38.2517,
  190. 238.265,
  191. 15.8886
  192. ],
  193. [
  194. -18.4721,
  195. 228.506,
  196. -24.2903
  197. ]
  198. ],
  199. "point_var_name": "picked_point_in_model_ref",
  200. "transform_var_name": "model_in_model_ref",
  201. "error_var_name": "model_in_model_ref_error"
  202. },
  203. "dependencies": [
  204. "point_picker_for_model_ref"
  205. ]
  206. },
  207. {
  208. "type": "transform_obj_watcher",
  209. "name": "registration_result_watcher",
  210. "start_config": {
  211. "variable_name": "model_in_model_ref"
  212. }
  213. },
  214. {
  215. "type": "double_obj_watcher",
  216. "name": "registration_error_watcher",
  217. "start_config": {
  218. "variable_name": "model_in_model_ref_error"
  219. }
  220. },
  221. {
  222. "type": "scalarxyz_transformer",
  223. "name": "probe_tip_transformer_for_model",
  224. "start_config": {
  225. "transform_type": "point",
  226. "transform_var_name": "probe_in_model",
  227. "target_value": [
  228. 0,
  229. 0,
  230. 0
  231. ],
  232. "output_var_name": "tip_in_model"
  233. },
  234. "dependencies": [
  235. "ndi",
  236. "transform_tree"
  237. ]
  238. },
  239. {
  240. "type": "transform_stabilizer",
  241. "name": "point_picker_for_model",
  242. "start_config": {
  243. "stable_type": "point",
  244. "input_var_name": "tip_in_model",
  245. "output_var_name": "picked_point_in_model",
  246. "linear_tolerance_mm": 0.05,
  247. "angular_tolerance_deg": 0.01,
  248. "temporal_interval_s": 3,
  249. "counting_interval": 150
  250. },
  251. "dependencies": [
  252. "probe_tip_transformer_for_model"
  253. ]
  254. },
  255. {
  256. "type": "scalarxyz_obj_watcher",
  257. "name": "picked_point_watcher_for_model",
  258. "start_config": {
  259. "variable_name": "picked_point_in_model"
  260. }
  261. },
  262. {
  263. "type": "empty_object",
  264. "name": "reg_model",
  265. "dependencies": [
  266. "probe_visibility_watcher",
  267. "model_ref_visibility_watcher",
  268. "picked_point_watcher_for_model_ref",
  269. "registration_result_watcher",
  270. "registration_error_watcher",
  271. "model_registrator"
  272. ]
  273. },
  274. {
  275. "type": "empty_object",
  276. "name": "icp_model",
  277. "dependencies": [
  278. "probe_visibility_watcher",
  279. "model_ref_visibility_watcher",
  280. "picked_point_watcher_for_model",
  281. "point_picker_for_model",
  282. "registration_result_watcher"
  283. ]
  284. }
  285. ]
  286. }