RealSense
3D sensor
RealSense2 je 3D senzor, následník PrimeSense.
- https://store.intelrealsense.com/
- https://www.intelrealsense.com/depth-camera-d435i/
- https://www.intelrealsense.com/tracking-camera-t265/
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ů:
Nejlepší je začít nahlédnutím do příkladů:
https://github.com/IntelRealSense/librealsense/tree/master/wrappers/python/examples
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
Snažil jsem se jít z rozcestníku
https://github.com/IntelRealSense/librealsense/tree/master/doc
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):
- pyrealsense2.pipeline
- pyrealsense2.config
- pyrealsense2.composite_frame
- pyrealsense2.video_frame
- pyrealsense2.pose_frame
- pyrealsense2.pose
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
- https://github.com/JetsonHacksNano/installLibrealsense
- https://github.com/IntelRealSense/librealsense/blob/master/examples/trajectory/readme.md — quaternions