czech english

RealSense

3D sensor

RealSense2 je 3D senzor, následník PrimeSense.

Oznámeno to bylo v lednu a k dispozici je to od března: https://newsroom.intel.com/news/intel-realsense-stand-alone-inside-out-tracking-camera/
Pavel J mě upozornil, že v tom bundle je depth kamera bez imu. Navíc rozdíl součtu cen kamer samostatně a v bundle je jen 35 (rozdíl D435i a D435 je 18). Tj. asi spíš koupím D435i + T265 samostatně (v bundle je D435).
1xD435i a 1xT265
Depth kamera má USB-C konektor, ale Tracking kamera má USB3-Micro konektor.

ZW 3/12

Chvilku jsem s tím zápasil, tak jsem si říkal, že dám dohromady pár linků:
Tam se používají nějaké věci, které se dají dohledat v dokumentaci, když člověk ví, kde ta dokumentace je. Vtipně na ni není link na pypi stránce příslušného balíčku: [[https://pypi.org/project/pyrealsense2/]
Příslušný odkaz na vygenerovanou dokumentaci k pythonu jsem našel až v nějakém pull requestu. Možná je to i někde jinde, ale je to fakt dobře schované: https://intelrealsense.github.io/librealsense/python_docs/_generated/pyrealsense2.html
Ale tam to není. Pro jednoduchost jsem si ještě vytáhl odkazy přímo na třídy, co se používají. Ono zase vtipně je tam napsané, co daná funkce vrací, ale není to odkaz, aby si na to člověk mohl kliknout, ne, to ne, to by bylo moc jednoduché (asi jak říká Jirka - Intel a psaní softwaru):
To API asi nakonec, zdá se, funguje. Odkaz na příklady, jsem už poslal, ale pro jistotu: https://gist.github.com/zwn/1891390e9adb62b183d3f97c953b2380 Integrace do osgara bude vcelku triviální.

MD 12/12

Včera jsme zkoušeli tracking camera na robotu Marie (pásák). Jendno z pozorování je, že defaultní framerate nelze změnit a pomocí konfigurace si pouze lze vybrat:
profile = pipeline.get_active_profile()
streams = profile.get_streams()
print(len(streams), streams)
s = streams[0]
print(f'{s.fps()} {s.stream_type()} {s.stream_index()} {s.format()}')

cfg.enable_stream(rs.stream.pose, rs.format.six_dof, 200)
s výstupem:
30 stream.fisheye 1 format.y8
30 stream.fisheye 2 format.y8
200 stream.gyro 0 format.motion_xyz32f
62 stream.accel 0 format.motion_xyz32f
200 stream.pose 0 format.six_dof
Další zjištění bylo, že senzor nemusí být až tak přesný — pro jízdu 1m dával na konci pozici:
x: -0.000112652, y: 0.000665553, z: 0.000796811
x: -0.000918607, y: 0.000974107, z: 0.000842689
x: -0.00144598, y: 9.29809e-05, z: 0.000445549
x: 0.0454335, y: -0.00345612, z: -0.179934
x: 0.0560145, y: -0.00484777, z: -0.252869
x: 0.0556041, y: -0.00675484, z: -0.301915
x: 0.0520737, y: -0.00632366, z: -0.595829
x: 0.0509343, y: -0.00152585, z: -0.683933
x: 0.050954, y: -0.00158044, z: -0.683181
… ale to si ještě vyžádá ověření. Robot přeci jenom byl na druhém straně Zeměkoule a neměli jsme vizuální kontrolu (ani měření s enkodéry). Ano, ten systém souřadnic je šílený viz T265 Tracking Camera.
Na závěr by zmínil, jak vypadá pozice, která chodí s frekvencí 200Hz:
Pose(acceleration=x: 0.0212798, y: 0.132573, z: 0.00962654,
angular_acceleration=x: 3.0012, y: 0.139082, z: -2.76879, angular_velocity=x:
-0.00197772, y: -0.000198901, z: -0.0124367, mapper_confidence=0, rotation=x:
-0.00644252, y: -3.79576e-05, z: 0.0120568, w: 0.999907, tracker_confidence=2,
translation=x: 0.000201426, y: 0.00156107, z: 0.00115836, velocity=x:
0.00350224, y: 0.0263764, z: 0.0171891)
Na Jetson Nano je třeba instalovat Python balíček pro ARM:
pip install pyrealsense2-aarch64
Pro ostatní stačí pyrealsense2.
Zatím není rozlousklý problém s chybějícím OpenCV, kde řešíme stejné věci co píšou na NVidia fóru.

PavelJ/S 5/2/2020