Ruby 3D Depth Camera

Ruby 3D Depth Camera
User Manual
(v1.0) Setyembre 28, 2022
MGA TEKNOLOHIYA NG VISION
Nerian Vision GmbH Zettachring 2
70567 Stuttgart Germany
Email: service@nerian.com www.nerian.com

Mga nilalaman

1 Tapos na ang Functionalityview

4

2 Kasamang Mga Bahagi

4

3 Pangkalahatang Pagtutukoy

4

3.1 Mga Detalye ng Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.2 Pagtutugma ng Stereo . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.3 Mga Rate at Resolusyon ng Frame . . . . . . . . . . . . . . . . . . . 5

4 Kaligtasan ng Laser

5

5 Mga Detalye ng Mekanikal

6

5.1 Mga Dimensyon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

5.2 Pag-mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

5.3 Temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

6 Pisikal na Interface

9

6.1 Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . 9

6.2 Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6.3 GPIO Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6.3.1 Trigger Output . . . . . . . . . . . . . . . . . . . . . . . 11

6.3.2 Trigger Input . . . . . . . . . . . . . . . . . . . . . . . . 11

6.3.3 Synchronization pulse (PPS) . . . . . . . . . . . . . . . . 11

6.4 Pindutan ng I-reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

6.5 Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

7 Mga Resulta sa Pagproseso

13

7.1 Mga Inayos na Larawan . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

7.2 Disparity Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

7.3 Projection ng Imahe ng Kulay . . . . . . . . . . . . . . . . . . . . . . . 16

7.4 Orasamps at Sequence Numbers . . . . . . . . . . . . . . . . 16

8 Networking Configuration

17

8.1 IP Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 17

8.2 Jumbo Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

9 Configuration

19

9.1 Katayuan ng System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

9.2 Preset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

9.3 Preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

9.4 Mga Setting ng Pagkuha . . . . . . . . . . . . . . . . . . . . . . . . . 23

9.4.1 Mga Setting ng Format . . . . . . . . . . . . . . . . . . . . . . . 23

9.4.2 Frame Rate . . . . . . . . . . . . . . . . . . . . . . . . . 24

1

9.4.3 Kontrol sa Exposure . . . . . . . . . . . . . . . . . . . . . . 24 9.4.4 Kontrol ng White Balance . . . . . . . . . . . . . . . . . . . 24 9.5 Mga Setting ng Network . . . . . . . . . . . . . . . . . . . . . . . . . . 25 9.6 Mga Output Channel . . . . . . . . . . . . . . . . . . . . . . . . . . 26 9.7 Pagpapanatili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 9.8 Pag-calibrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 9.8.1 Calibration Board . . . . . . . . . . . . . . . . . . . . . . 29 9.8.2 Pinipigilan ang laki ng imahe para sa pagkakalibrate . . . . . . . . 30 9.8.3 Pagre-record ng Calibration Frame . . . . . . . . . . . . . . . 31 9.8.4 Pagsasagawa ng Calibration . . . . . . . . . . . . . . . . . . . 31 9.9 Mga Setting ng Pagproseso . . . . . . . . . . . . . . . . . . . . . . . . . 32 9.9.1 Operation Mode . . . . . . . . . . . . . . . . . . . . . . 32 9.9.2 Mga Setting ng Disparity . . . . . . . . . . . . . . . . . . . . . . 33 9.9.3 Mga Setting ng Algorithm . . . . . . . . . . . . . . . . . . . . . 33 9.10 Advanced na Auto Exposure at Mga Setting ng Gain . . . . . . . . . . . 35 9.10.1 Exposure at Gain . . . . . . . . . . . . . . . . . . . . . 35 9.10.2 Mga Manu-manong Setting . . . . . . . . . . . . . . . . . . . . . . . 36 9.10.3 Mga Setting ng ROI . . . . . . . . . . . . . . . . . . . . . . . . 37 9.11 Mga Setting ng Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 9.12 Pag-synchronize ng Oras . . . . . . . . . . . . . . . . . . . . . . . 38 9.13 ReviewMga Resulta ng Pag-calibrate . . . . . . . . . . . . . . . . . . . 39 9.14 Auto Re-calibration . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.15 Rehiyon ng Interes . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.16 Inertial Measurement Unit . . . . . . . . . . . . . . . . . . . . . 43 9.16.1 Pag-calibrate ng inertial measurement unit . . . . . . . 44

10 Impormasyon sa Paggamit ng API

45

10.1 Pangkalahatang Impormasyon . . . . . . . . . . . . . . . . . . . . . . . . 45

10.2 ImageTransfer Halample . . . . . . . . . . . . . . . . . . . . . . 45

10.3 AsyncTransfer Halample . . . . . . . . . . . . . . . . . . . . . . 47

10.4 3D Reconstruction . . . . . . . . . . . . . . . . . . . . . . . . . 48

10.5 Mga Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

11 Ibinigay na Software

49

11.1 NVCom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

11.2 Producer ng GenICam GenTL . . . . . . . . . . . . . . . . . . . . 50

11.2.1 Pag-install . . . . . . . . . . . . . . . . . . . . . . . . . 50

11.2.2 Mga Virtual na Device . . . . . . . . . . . . . . . . . . . . . . . 51

11.2.3 Mga Device ID . . . . . . . . . . . . . . . . . . . . . . . . . . 52

11.3 ROS Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

12 Suporta

52

13 Impormasyon sa Warranty

53

2

14 Open Source na Impormasyon

53

3

3 PANGKALAHATANG ESPISIPIKASYON

1 Tapos na ang Functionalityview
Si Ruby ay isang stereo-vision-based na depth camera. Ang dalawang monochrome image sensor nito ay nagre-record ng eksena sa bahagyang naiiba viewmga posisyon. Sa pamamagitan ng pag-uugnay ng data ng imahe mula sa parehong mga sensor ng imahe, mahihinuha ni Ruby ang lalim ng bawat naobserbahang punto. Ang computed depth map ay ipinapadala sa pamamagitan ng 1G Ethernet sa isang konektadong computer o ibang naka-embed na system. Ang isang karagdagang sensor ng kulay ay ginagamit para sa pagkuha ng impormasyon ng kulay, at ang imahe ng kulay ay awtomatikong nakahanay sa data ng lalim.
Si Ruby ay maaaring magsagawa ng mga sukat nang aktibo o pasibo. Para sa mga aktibong sukat, ginagamit ang isang laser projector upang i-project ang isang pattern sa mga nakikitang ibabaw. Ito ay nagpapahintulot sa mga bagay na masukat kahit na sila ay may pare-pareho at walang texture na hitsura.
Sa mga sitwasyon kung saan hindi maobserbahan ang inaasahang pattern, dahil sa maliwanag na ilaw sa paligid, mahabang distansya ng pagsukat o dahil naka-disable ang projector, maaari pa ring makuha ang mga sukat nang walang pag-iingat. Sa kaso ng mga passive measurements, kinakailangan ang sapat na texture sa ibabaw para makakuha ng tumpak na mga resulta.

2 Kasamang Mga Bahagi
Dapat isama ang mga sumusunod na bahagi kapag nag-order ng bagong Ruby 3D depth camera mula sa Nerian Vision Technologies:
· Ruby 3D depth camera · 12 V DC power supply na may mga interchangeable mains connectors para sa Eu-
lubid, North America, United Kingdom at Australia · Naka-print na manwal ng gumagamit · Ethernet cable, 3 m
Kung nawawala ang alinman sa mga item na ito, mangyaring makipag-ugnayan sa suporta sa customer.

3 Pangkalahatang Pagtutukoy

3.1 Mga Detalye ng Hardware
Image sensor Image Resolution Sensor format Focal length Field ng View Projector ng Aperture Pattern

IMX296 1.5 MP 1/2.9″ 4.18 mm 62.2° × 48.8° (74.0° pahilis) 3.0 Random na tuldok na laser (klase 1)

4

3.2 Pagtutugma ng Stereo

4 LASER KALIGTASAN

Projector wavelength Inertial sensor (IMU) Max. Rate ng pagsukat ng IMU Power supply Mga Dimensyon ng Pagkonsumo ng kuryente Timbang I/O Operating temperature Conformity

830 nm BNO085 400 Hz (magnetometer: 100 Hz) 11.2 30 V DC 9W 130 × 92.5 × 34.5 mm ca. 450 g Gigabit Ethernet, GPIO 0 40°C CE, FCC, UKCA, RoHS, Laser class 1

3.2 Pagtutugma ng Stereo
Stereo algorithm Max na resolution Mga sinusuportahang pixel format Disparity range Frame rate Sub-pixel resolution Post-processing

Variation ng Semi-Global Matching (SGM) 1440 × 1056 pixels Mono8, Mono12, RGB8 32 to 256 pixels hanggang 60 fps 4 bits (1/16 pixel) Consistency check, uniqueness check, gap interpolation, noise reduction, speckle filtering

3.3 Mga Maaabot na Frame Rate at Mga Resolusyon ng Larawan
Ang maximum na rate ng frame na maaaring makamit ay depende sa na-configure na resolution ng imahe at hanay ng pagkakaiba. Ang talahanayan 1 ay nagbibigay ng isang listahan ng mga inirerekomendang pagsasaayos. Ito ay isang subset lamang ng magagamit na espasyo sa pagsasaayos. Maaaring gamitin ang magkakaibang mga resolution ng imahe at mga hanay ng pagkakaiba upang matugunan ang mga partikular na kinakailangan sa application.

Talahanayan 1: Pinakamataas na frame rate ayon sa resolution ng imahe at hanay ng pagkakaiba.

Disparity Range
128 pixels 256 pixels

Resolusyon ng Larawan 720×512 1024×768 1440×1026

60 fps n/a

30 fps 17 fps

15 fps 8 fps

4 Kaligtasan ng Laser
Ang Ruby ay naglalaman ng infrared laser projector na hindi nakikita ng mata ng tao. Sumusunod ang laser sa mga internasyonal na pamantayan na IEC 60825-1:2014 at DIN EN 60825-1:2015 para sa Class 1. Samakatuwid, ang laser ay itinuturing na ligtas sa mata at hindi kinakailangan ang mga pag-iingat sa kaligtasan.
5

5 MEKANIKAL NA ESPISIPIKASYON
Figure 1: Laser label sa ibabang bahagi ni Ruby.
Ang Class 1 laser notice ay makikita sa label ng produkto sa ibabang bahagi ng device. Ang label na ito ay inilalarawan sa Figure 1.
Ang anumang mga pagbabago o pagbabago na ginawa sa system na hindi hayagang inaprubahan ng tagagawa ay maaaring magpawalang-bisa sa awtoridad ng gumagamit na patakbuhin ang kagamitan.
5 Mga Detalye ng Mekanikal
5.1 Mga Dimensyon
Ipinapakita ng Figures 2 at 3 si Ruby na nakikita mula sa iba't ibang direksyon. Ang mga ibinigay na sukat ay sinusukat sa millimeters.
5.2 Pag-mount
Nagtatampok ang housing ng Ruby ng dalawang mounting bracket sa mga gilid ng device. Ang bawat mounting bracket ay may dalawang slotted na butas, na nagpapahintulot kay Ruby na mai-mount sa isang patag na ibabaw. Ang mga sukat at pagkakalagay ng mga slotted hole ay ibinibigay sa Figure 2b.
Bilang karagdagan, nagtatampok si Ruby ng 1/4″ UNC threaded hole sa ibabang bahagi. Nagbibigay-daan ito kay Ruby na mai-mount sa isang karaniwang tripod ng camera.
5.3 Temperatura
Maaaring patakbuhin ang Ruby nang walang karagdagang mga hakbang sa ambient na temperatura sa pagitan ng 0°C at 40°C. Kung ang operasyon sa isang mas mataas na temperatura ng kapaligiran ay kinakailangan, ang mga karagdagang hakbang sa paglamig ay dapat gawin. Ang mga naturang hakbang ay maaaring binubuo ng pag-mount ng Ruby sa isang thermally conductive na ibabaw at/o paggamit ng fan para mapataas ang airflow. Mangyaring subaybayan ang mga sensor ng temperatura ng device (tingnan ang Seksyon 9.1) kapag pinapatakbo ang Ruby sa ganoong mataas na temperatura sa paligid.
6

5.3 Temperatura

5 MEKANIKAL NA ESPISIPIKASYON

(a) Harap view

(b) Nangunguna view
Larawan 2: (a) Harap at (b) itaas view ng Ruby na may mga sukat sa millimeters.
7

5.3 Temperatura

5 MEKANIKAL NA ESPISIPIKASYON

(a) Bumalik view

(b) Ibaba view
Larawan 3: (a) Likod at (b) ibaba view ng Ruby na may mga sukat sa millimeters.
8

6 PISIKAL NA INTERFACES
Figure 4: Magagamit na mga interface sa likod.
6 Pisikal na Interface
6.1 Interface Overview
Ipinapakita ng Figure 4 ang magagamit na mga pisikal na interface sa likuran ni Ruby. Ang mga interface na ito ay: DC power connector: Kumokonekta sa isang power supply sa loob ng pinapayagan
voltage saklaw (tingnan ang Seksyon 6.2). GPIO port: Naglalabas ng trigger signal o nagsi-synchronize ng Ruby sa isang external
pinagmulan ng trigger. Gumagana rin bilang input para sa pulso ng pag-synchronize ng oras (tingnan ang Seksyon 6.3). Ethernet port: Port para sa pagkonekta kay Ruby sa isang client computer o isa pang naka-embed na system sa pamamagitan ng 1G Ethernet. Ginagamit ang port na ito para sa paghahatid ng mga resulta ng pagproseso at para sa pagbibigay ng access sa interface ng pagsasaayos. Button sa pag-reset: Button para sa pag-reset ng firmware ng device pabalik sa factory state (tingnan ang Seksyon 6.4). Power LED: Isang berdeng LED na nagsasaad na naka-on ang device. LED status ng link (berde): Isinasaad kung matagumpay na naitatag ang isang Ethernet link (tingnan ang Seksyon 6.5) LED status ng pagkuha (orange): Isinasaad ang estado ng pagkuha ng imahe at nag-uulat ng mga potensyal na pagkabigo ng laser (tingnan ang Seksyon 6.5).
9

6.2 Power Supply

6 PISIKAL NA INTERFACES

1 6

Pin Assignment 1 Trigger input (opto-isolated) 2 Sync input (opto-isolated) 3 Trigger output (opto-isolated) 4 Opto GND 5 +5V 6 GND

Figure 5: Pin na pagtatalaga ng GPIO connector.

6.2 Power Supply
Ang power connector ay kailangang konektado sa ibinigay na power adapter o isa pang angkop na voltage pinagmulan. Kapag gumagamit ng alternatibong supply ng kuryente, pakitiyak na ang voltage ay nasa pinahihintulutang hanay na 11.2 – 30 V DC. Mas mataas na voltagay maaaring makapinsala sa device. Ang isang power supply ay dapat na na-rate para sa hindi bababa sa 10 W.
Ang power connector ay gumagamit ng female barrel jack na may panloob na diameter na 6.5 mm at isang pin diameter na 2 mm. Ang mating connector ay dapat magkaroon ng panlabas na diameter na 5.5 mm. Ang polarity ay dapat na center positive.

6.3 GPIO Port
Ang GPIO port ay nagbibigay ng access sa mga sumusunod na signal:
· Mag-trigger ng output
· Mag-trigger ng input
· Synchronization pulse (PPS)
· +5V DC na output
Ang lahat ng data input at output signal ay konektado sa pamamagitan ng opto-coupler. Samakatuwid, ang Opto GND pin ay dapat gamitin bilang ground reference para sa lahat ng signal.
Bilang karagdagan sa mga signal ng I/O, nagbibigay si Ruby ng 5V DC output, na maaaring maghatid ng kasalukuyang hanggang 100 mA. Kung lumampas sa kasalukuyang limitasyon, ang power output ay i-switch off.
Gumagamit ang GPIO connector ng female Molex Micro-Lock Plus 505567 series connector. Ang pagtatalaga ng pin ay ipinapakita sa Figure 5. Ang mga sumusunod na numero ng bahagi ng tagagawa ay tumutugma sa mga tumutugmang konektor, at dapat gamitin para sa interfacing:

45111-0606 204532-0601

Katugmang connector na may 600 mm cable Pagtutugma ng connector na walang mga cable

Ang mga katangian ng bawat indibidwal na signal ng I/O ay inilalarawan sa mga sumusunod na subsection.

10

6.3 GPIO Port

6 PISIKAL NA INTERFACES

Trigger Output 6

1

Opto GND

4

3

TLP293

GND

Figure 6: Schematics ng trigger output circuit

6.3.1 Trigger Output
Sa isang application ng machine vision, maaaring kailanganin na i-synchronize ang iba pang mga sensor o ilaw (hal. isang pattern projector) sa pagkuha ng imahe ni Ruby. Para sa layuning ito, maaaring mag-output si Ruby ng open collector trigger signal sa GPIO pin 3. Ang signal ay nakahiwalay sa pamamagitan ng opto-coupler gaya ng ipinapakita sa circuit diagram ng Figure 6.
Ang ganap na pinakamataas na rating ng opto-coupler ay:

Collector-emitter voltage: max. 80 V

Emitter-collector voltage: max. 7 V

Kasalukuyang kolektor:

max. 50 mA

Pagwawaldas ng kapangyarihan ng kolektor: max. 100 mW

Pakitingnan ang Seksyon 9.11 para sa karagdagang mga detalye kung paano i-configure ang trigger output.

6.3.2 Trigger Input
Sa halip na i-synchronize ang iba pang kagamitan sa pagkuha ng imahe ni Ruby, maaari ding i-synchronize ni Ruby ang pagkuha ng imahe nito sa isang external na pinagmumulan ng trigger, gamit ang trigger input signal sa pin 1. Ang voltage level ng isang input trigger signal ay dapat nasa pagitan ng 3.3 V at 24 V. Si Ruby ay gumagamit ng 2 mA ng current sa signal na ito. Pakitingnan ang Seksyon 9.11 para sa karagdagang mga detalye kung paano i-configure ang trigger input.

6.3.3 Synchronization pulse (PPS)
Ang pulso ng pag-synchronize mula sa mga pin 2 ay isang input signal na maaaring gamitin para sa pag-synchronize ng panloob na orasan ni Ruby na may mataas na katumpakan. Sa tuwing may matatanggap na gilid ng positibong signal, maaaring i-reset ni Ruby ang panloob na oras nito sa 0 o i-save ang kasalukuyang oras ng system at ipadala ito sa susunod na frame. Ang voltage ng pulso na ito ay dapat nasa pagitan ng 3.3 at 24 V. Sa isang karaniwang aplikasyon, ang pulso ay nabuo mula sa isang Pulse Per Second (PPS) na pinagmulan.
Pakitingnan ang Seksyon 9.12 para sa mga detalye kung paano i-configure ang synchronization pulse at iba pang paraan ng synchronization gaya ng PTP o NTP.

11

6.4 Pindutan ng I-reset

6 PISIKAL NA INTERFACES

6.4 Pindutan ng I-reset
Sa likod ng device ay mayroong recessed reset button. Ginagamit ang button para sa pag-reset ng firmware ni Ruby sa factory state. Dapat magsagawa ng pag-reset kung ang device ay naging hindi tumutugon dahil sa isang maling configuration o pagkasira ng firmware. Kapag sinimulan ang pamamaraan ng pag-reset, mawawala ang lahat ng mga pagsasaayos, pagkakalibrate at naka-install na mga update sa firmware.
Upang simulan ang pag-reset, dahan-dahang pindutin ang button gamit ang isang pin, habang naka-off ang device. Pagkatapos ay ikonekta ang power habang pinanatili ang pagpindot sa button, at bitawan ang button sa ilang sandali pagkatapos.
Ang pamamaraan ng pag-reset ay mangangailangan ng ilang minuto upang makumpleto. Kapag natapos na ang pag-reset, magsisimula nang normal ang device at matutuklasan sa network na may default na IP address. Maaari mong gamitin ang NVCom application (tingnan ang Seksyon: 11.1) upang subaybayan kung kailan natutuklasan ang device pagkatapos makumpleto ang pag-reset.
6.5 Mga Status ng LED
Naglalaman ang device ng tatlong status LED, gaya ng inilalarawan sa Figure 4:
Power LED (berde): Ang power LED ay umiilaw na berde kapag naka-on ang device.
LED status ng link (berde): Isinasaad kung matagumpay na naitatag ang isang Ethernet link. Kung ang LED ay hindi umiilaw pagkatapos ikonekta ang isang Ethernet cable, mangyaring suriin ang cable para sa mga pinsala at siguraduhin na ang remote system (switch o host PC) ay gumagana.
Acquisition status LED (orange): Iniuulat ng LED na ito ang estado ng pagkuha ng imahe at posibleng mga pagkabigo ng laser:
Naka-off: Hindi pa nagsisimula ang pagkuha ng larawan. Ito ang kaso kung ang aparato ay nagbo-boot pa rin. Mangyaring suriin ang web interface para sa mga error (tingnan ang Seksyon 9.1), kung mananatiling naka-off ang LED nang higit sa ilang minuto pagkatapos ng power-up.
Blinking: Matagumpay na nasimulan ang pagkuha ng larawan at gumagana ang device ayon sa nilalayon.
Constant on: May nakitang laser failure at ang laser projector ay naka-off. Mangyaring makipag-ugnayan sa suporta para sa paglutas ng kabiguan na ito.

12

7 MGA RESULTA NG PAGPROSESO

(a)

(b)

Larawan 7: Halample para sa (a) hindi naayos at (b) naayos na larawan ng camera.

7 Mga Resulta sa Pagproseso
7.1 Mga Inayos na Larawan
Kahit na may tumpak na nakahanay na mga sensor ng imahe ni Ruby, malamang na hindi ka makakatanggap ng mga larawang tumutugma sa inaasahang resulta mula sa perpektong stereo camera. Ang mga imahe ay apektado ng iba't ibang mga distortion na nagreresulta mula sa mga error sa optika at paglalagay ng sensor. Samakatuwid, ang unang hakbang sa pagpoproseso na isinagawa ay isang operasyon ng hindi pagbaluktot ng imahe, na kilala bilang pagwawasto ng imahe.
Ang pagwawasto ng larawan ay nangangailangan ng tumpak na kaalaman sa mga projective parameter ng setup ng camera. Maaaring matukoy ang mga ito sa pamamagitan ng pagkakalibrate ng camera. Mangyaring sumangguni sa Seksyon 9.8 para sa isang detalyadong paliwanag ng pamamaraan ng pagkakalibrate ng camera. Ang Ruby ay ipapadala nang paunang naka-calibrate at ang isang muling pagkakalibrate ay karaniwang hindi kinakailangan sa habang-buhay ng device.
Ang Figure 7a ay nagpapakita ng isang examplarawan ng camera, kung saan itinuro ang camera patungo sa isang calibration board. Ang mga gilid ng board ay lumilitaw na bahagyang kurbado, dahil sa mga radial distortion na dulot ng optika ng camera. Ipinapakita ng Figure 7b ang parehong imahe pagkatapos ng pagwawasto ng imahe. Sa pagkakataong ito, ang lahat ng mga gilid ng calibration board ay lalabas nang tuwid.

7.2 Disparity Maps
Ang mga resulta ng pagtutugma ng stereo ay inihahatid sa anyo ng isang mapa ng pagkakaiba mula sa pananaw ng kaliwang monochrome camera. Iniuugnay ng disparity map ang bawat pixel sa kaliwang larawan ng camera sa isang katumbas na pixel sa kanang larawan ng camera. Dahil ang parehong mga imahe ay dati nang itinama upang tumugma sa isang perpektong stereo camera geometry, ang mga katumbas na pixel ay dapat lamang na mag-iba sa kanilang mga pahalang na coordinate. Ang disparity map ay nag-e-encode lamang ng pahalang na coordinate difference.

13

7.2 Disparity Maps

7 MGA RESULTA NG PAGPROSESO

(a)

(b)

Larawan 8: Halample para sa (a) kaliwang larawan ng camera at kaukulang disparity map.

Examples para sa isang kaliwang larawan ng camera at ang kaukulang mapa ng pagkakaiba ay ipinapakita sa Mga Figure 8a at 8b. Dito na-color code ang disparity map, na may mga asul na kulay na nagpapakita ng maliliit na pagkakaiba, at ang mga pulang kulay ay nagpapakita ng malalaking pagkakaiba. Tulad ng makikita, ang disparity ay proporsyonal sa kabaligtaran na lalim ng kaukulang punto ng eksena.
Tinutukoy ng hanay ng pagkakaiba ang rehiyon ng larawan na hinahanap para sa paghahanap ng mga pagsusulatan ng pixel. Ang isang malaking hanay ng pagkakaiba ay nagbibigay-daan para sa napakatumpak na mga sukat, ngunit nagdudulot ng mataas na pag-load ng computational, at sa gayon ay nagpapababa sa maaabot na frame rate. Sinusuportahan ni Ruby ang isang nako-configure na hanay ng pagkakaiba (tingnan ang Seksyon 9.9), na nagbibigay-daan sa user na pumili sa pagitan ng high-precision o high-speed na mga sukat.
Posibleng ibahin ang anyo ng disparity map sa isang hanay ng mga 3D point. Magagawa ito sa tamang sukatan ng sukatan kung na-calibrate nang maayos ang system. Ang pagbabago ng isang disparity map sa isang hanay ng mga 3D point ay nangangailangan ng kaalaman sa disparity-to-depth na mapping matrix Q, na kino-compute sa panahon ng pagkakalibrate ng camera at ipinadala ni Ruby kasama ng bawat disparity map. Ang 3D na lokasyong xyz T ng isang punto na may mga coordinate ng larawan (u, v) at disparity d ay maaaring buuin tulad ng sumusunod:

xy =

z

1 w

x · y ,

z

kasama

x

u

y

z

=

Q

·

v

d

w

1

Kapag ginagamit ang Q matrix na ibinigay ni Ruby, ang natanggap na mga coordinate ay susukatin sa metro na may kinalaman sa coordinate system na inilalarawan sa Fig-

14

7.2 Disparity Maps
z (optical axis)

7 MGA RESULTA NG PAGPROSESO
x

y
Figure 9: Coordinate system na ginagamit para sa 3D reconstruction.
ure 9. Dito, tumutugma ang pinagmulan sa sentro ng projection ng lens (ang lokasyon ng aperture sa modelo ng pinhole camera) para sa kaliwang monochrome camera. Ang isang mahusay na pagpapatupad ng pagbabagong ito ay ibinibigay kasama ng magagamit na API (tingnan ang Seksyon 10.4).
Kinakalkula ni Ruby ang mga disparity na mapa na may disparity resolution na mas mababa sa isang pixel. Ang mga mapa ng pagkakaiba ay may bit-depth na 12 bit, na ang mas mababang 4 na bit ng bawat halaga ay kumakatawan sa bahagi ng fractional disparity. Kaya kinakailangan na hatiin ang bawat halaga sa disparity map sa 16, upang matanggap ang tamang disparity magnitude.
Naglalapat si Ruby ng ilang mga diskarte sa post-processing upang mapabuti ang kalidad ng mga mapa ng pagkakaiba. Nakikita ng ilan sa mga pamamaraang ito ang mga maling pagkakaiba at markahan ang mga ito bilang hindi wasto. Ang mga di-wastong pagkakaiba ay nakatakda sa 0xFFF, na siyang pinakamataas na halaga na maaaring maimbak sa isang 12-bit na disparity map. Sa exampAng disparity map mula sa Figure 8b, ang mga invalid na disparity ay inilalarawan bilang grey.
Pakitandaan na karaniwang may guhit ng mga di-wastong pagkakaiba sa kaliwang hangganan ng larawan ng isang disparity map. Inaasahan ang pag-uugaling ito habang ang mapa ng pagkakaiba ay nakalkula mula sa pananaw ng kaliwang camera. Ang mga rehiyon ng larawan sa kaliwang gilid ng kaliwang larawan ng camera ay hindi maaaring obserbahan ng kanang camera, at samakatuwid ay walang wastong pagkakaiba ang maaaring makalkula. Ang mas malayong kaliwa ang isang bagay ay matatagpuan, mas malayo ito ay dapat na, upang makita din ng kanang camera. Kaya, ang buong hanay ng lalim ay maaari lamang maobserbahan para sa mga kaliwang pixel ng imahe na may pahalang na coordinate ng imahe u dmax.
Gayundin, ang mga di-wastong pagkakaiba ay maaaring asahan na mangyari sa kaliwa sa anumang bagay sa harapan. Ang parang anino na di-wastong rehiyon na ito ay sanhi ng nakikitang background na nakakulong sa kanang larawan ng camera ngunit hindi sa kaliwang larawan ng camera. Ang epektong ito ay kilala bilang anino ng occlusion at malinaw na nakikita sa ibinigay na exampang imahe.
15

7.3 Projection ng Imahe ng Kulay

7 MGA RESULTA NG PAGPROSESO

(a)

(b)

Larawan 10: Halample para sa (a) disparity map at (b) projected color image na may artifact.

7.3 Projection ng Imahe ng Kulay
Ang kaliwang monochrome sensor ay ginagamit bilang reference camera para sa depth computation. Kahit na nakalagay ang color sensor sa tabi mismo nito, magkakaroon ng parallax (isang maliwanag na optical shift) sa pagitan ng color image at ng disparity map / left monochrome na imahe.
Maaaring mabayaran ang shift na ito sa pamamagitan ng pag-project ng kulay na imahe pabalik sa view ng reference camera. Kapag naisagawa na ang projection na ito, ang mga katumbas na punto ng larawan sa pagitan ng kaliwang monochrome na imahe, disparity map at color image ay magkakaroon ng magkaparehong mga coordinate ng imahe, at lahat ng tatlong larawan ay maaaring direktang ma-overlay.
Si Ruby ay may kakayahang awtomatikong gawin ang projection na ito. Ang projection ay nakasalalay sa mga sukat ng lalim at sa kasamaang palad ay hindi perpekto. Nangangahulugan ito na aasahan ang ilang visual artifact. Ang dami ng mga artifact ay lubos na nakadepende sa kalidad ng pagsukat ng lalim. Lalo na ang mga gilid ng object ay maaaring maapektuhan ng mga artifact.
Isang pinalaking subsection ng isang exampAng imahe ng kulay at depth na mapa na nagpapakita ng epektong ito ay makikita sa Figure 10. Sa mga kaso kung saan ang isang paralaks sa pagitan ng mga sukat ng lalim at larawan ng kulay ay katanggap-tanggap, maiiwasan ang mga artifact sa pamamagitan ng pag-disable sa projection na ito. Para sa higit pang mga detalye, mangyaring sumangguni sa Seksyon 9.6.

7.4 Orasamps at Sequence Numbers
Ang bawat hanay ng mga imahe na ipinadala ni Ruby, ay may kasamang timestamp at isang sequence number. Ang orasamp ay sinusukat nang may microsecond accuracy at nakatakda sa oras kung kailan nagsimulang maglantad ang mga sensor ng imahe ng isang frame.

16

8 NETWORKING CONFIGURATION
Kaya dapat palaging isaalang-alang ang oras ng pagkakalantad kapag sinusubukang sukatin ang pagkaantala ng sensor.
Gaya ng ipinaliwanag sa Seksyon 6.3.3 at 9.12, posibleng i-synchronize ang panloob na orasan ni Ruby sa isang panlabas na signal o isang server ng oras. Ito ay direktang nakakaapekto sa ginawang oras stamps. Kapag naka-synchronize sa isang time server, ang time stamps ay sinusukat sa microseconds mula noong 1 Enero 1970, 00:00:00 UTC. Kung walang isinagawang pag-synchronize, ang panloob na orasan ay nakatakda sa 0 sa powered up. Kapag nagsi-synchronize sa isang panlabas na signal ng PPS, tulad ng ipinaliwanag sa Seksyon 6.3.3, ang orasan ay nakatakda sa 0 sa papasok na tumataas na gilid ng signal.
Pakitandaan na ang pag-synchronize sa isang signal ng PPS ay nagdudulot din ng negatibong timestamps. Nangyayari ito kapag natanggap ang signal ng pag-synchronize habang pinoproseso ni Ruby ang nakuha nang pares ng larawan. Ang negatibong orasamp ay ang pagkakaiba ng oras sa pagitan ng pagtanggap ng signal ng pag-synchronize at ang oras ng pagkuha ng kasalukuyang pares ng imahe.
8 Networking Configuration
Inirerekomenda na direktang ikonekta si Ruby sa ethernet port ng host computer, nang walang anumang switch o hub sa pagitan. Ito ay dahil gumagawa si Ruby ng napakataas na throughput na data ng network, na maaaring humantong sa pagkawala ng packet kapag gumagamit ng mga switch ng network na hindi nakakatugon sa kinakailangang pagganap. Dapat itong tiyakin na ang interface ng network ng host computer ay maaaring humawak ng isang papasok na rate ng data na 900 MBit/s.
Ang mga kinakailangang setting ng configuration ng network para sa host computer ay inilalarawan sa mga sumusunod na subsection.
8.1 Pag-configure ng IP
Bilang default, gagamitin ni Ruby ang IP address na 192.168.10.10 na may subnet mask na 255.255.255.0. Kung mayroong DHCP server sa network, gayunpaman, maaari itong magtalaga ng ibang address kay Ruby. Sa kasong ito, mangyaring gamitin ang ibinigay na NVCom software para sa pagtuklas ng device (tingnan ang Seksyon 11.1).
Kung walang ibang DHCP server na naroroon sa network, sisimulan ni Ruby ang sarili nitong DHCP server. Nangangahulugan ito na kung ang iyong computer ay na-configure na gumamit ng isang dynamic na IP address ang computer ay awtomatikong makakatanggap ng isang IP address sa tamang subnet at walang karagdagang configuration ang kinakailangan.
Kung ang iyong computer ay hindi na-configure na gumamit ng isang dynamic na IP address o ang pinagsamang DHCP server ni Ruby ay hindi pinagana, pagkatapos ay kailangan mong i-configure nang manu-mano ang iyong IP address. Para sa Windows 10 mangyaring sundin ang mga hakbang na ito:
1. I-click ang Start Menu > Settings > Network & Internet > Ethernet > Change adapter options.
2. Mag-right-click sa gustong koneksyon sa Ethernet.
17

8.2 Jumbo Frame

8 NETWORKING CONFIGURATION

3. I-click ang `Properties'
4. Piliin ang `Internet Protocol Version 4 (TCP/IPv4)'.
5. I-click ang `Properties'.
6. Piliin ang `Gamitin ang sumusunod na IP address'.
7. Ipasok ang nais na IP address (192.168.10.xxx).
8. Ipasok ang subnet mask (255.255.255.0).
9. Pindutin ang OK.
Para sa Linux, mangyaring gamitin ang mga sumusunod na command upang pansamantalang itakda ang IP address 192.168.10.xxx sa interface ng network eth0: sudo ifconfig eth0 192.168.10.xxx netmask 255.255.255.0
8.2 Jumbo Frame
Para sa maximum na performance, dapat na i-configure si Ruby na gumamit ng Jumbo Frames (tingnan ang Seksyon 9.5). Bilang default, maaaring hindi paganahin ang suporta ng Jumbo Frame sa naipadalang configuration, dahil nangangailangan ito ng naaangkop na configuration ng network interface ng host computer.
Kung maa-access si Ruby sa pamamagitan ng web interface at natuklasan sa listahan ng mga device (hal. sa NVCom, tingnan ang Seksyon 11.1), ngunit walang natatanggap na data ng imahe (0 fps), maaaring ipahiwatig nito na ang Jumbo Frames ay naka-activate sa Ruby, ngunit ang koneksyon sa network ng kani-kanilang client computer ay hindi maayos na na-configure upang tanggapin ang mga ito.
Upang ma-activate ang suporta ng Jumbo Frame sa Windows 10, mangyaring sundin ang mga hakbang na ito:
1. Buksan ang `Network and Sharing Center'
2. Buksan ang dialog ng mga katangian ng nais na koneksyon sa network
3. Pindutin ang button na `I-configure…'
4. Buksan ang tab na `Advanced'
5. Piliin ang `Jumbo Packet' at piliin ang gustong laki ng packet (tingnan ang Figure 11)
Pakitandaan na hindi tulad ng para sa Linux, binibilang din ng ilang driver ng Windows network ang 14-byte na Ethernet header bilang bahagi ng laki ng packet. Kapag kino-configure si Ruby na gumamit ng 9000 bytes na MTU, maaaring mangailangan ng 9014 bytes na laki ng packet ang isang Windows computer.
Sa Linux, maaaring i-activate ang suporta ng Jumbo Frame sa pamamagitan ng pagtatakda ng sapat na malaking MTU, sa pamamagitan ng ifconfig command. Para sa pag-configure ng 9000 bytes MTU para sa interface eth0, mangyaring gamitin ang sumusunod na command line:
18

9 CONFIGURATION
Figure 11: Jumbo Frames configuration sa Windows > sudo ifconfig eth0 mtu 9000 Mangyaring magkaroon ng kamalayan na ang pangalan ng interface ay maaaring iba sa eth0, lalo na sa mga mas bagong release ng Linux. Awtomatikong itinatalaga ang MTU ayon sa mga setting ng Ruby Jumbo Frame tuwing tumatanggap ang isang Linux computer ng configuration mula sa isang aktibong Ruby DHCP server (tingnan ang Seksyon 9.5). Sa Windows, hindi gumagana ang awtomatikong pagtatalaga ng MTU, dahil hindi sinusuportahan ng Windows ang feature na ito.
9 Configuration
Ang Ruby ay na-configure sa pamamagitan ng a web interface, na maaaring maabot sa pamamagitan ng pagpasok ng IP address nito sa iyong browser. Ang default na address ay http://192.168.10.10 ngunit kung mayroong DHCP server sa network, maaari itong magtalaga ng ibang address kay Ruby (tingnan ang Seksyon 8.1). Sa kasong ito, mangyaring gamitin ang ibinigay na NVCom software para sa pagtuklas ng device (tingnan ang Seksyon 11.1).
Kung kaka-plug in lang ni Ruby, tatagal ito ng ilang segundo bago ang web naa-access ang interface. Para sa paggamit ng web interface, kailangan mo ng browser na may suporta para sa HTML 5. Mangyaring gumamit ng kamakailang bersyon ng isa sa mga pangunahing browser, gaya ng Chrome, Firefox, Safari, o Edge.
Ang web-interface ay nahahati sa dalawang seksyon: Mga Pangkalahatang Setting at Ad19

9.1 Katayuan ng System

9 CONFIGURATION

Figure 12: Screenshot ng page ng status ng configuration.
vanced na Mga Setting. Ang mga page ng pangkalahatang setting ay naglalaman ng mga pinakakaraniwang inaayos na parameter. Ang pagbabago lang sa mga parameter na ito ay dapat sapat para sa karamihan ng mga application. Ang mga hindi gaanong karaniwang inaayos na mga parameter na maaaring may-katuturan para sa mga napakatukoy na application ay makikita sa mga advanced na pahina ng mga setting.
9.1 Katayuan ng System
Ang unang pahina na makikita mo kapag binubuksan ang web interface ay ang pahina ng `system status' na ipinapakita sa Figure 12. Sa pahinang ito, makikita mo ang sumusunod na impormasyon:
Modelo: Ang pangalan ng modelo para sa iyong device.
Katayuan ng pagkakalibrate: Nagbibigay ng impormasyon kung ang sistema ay na-calibrate nang tama.
Katayuan ng pagpoproseso: Isinasaad kung nasimulan na ang sub-system sa pagproseso ng imahe. Kung hindi ito ang kaso, maaaring may problema sa pagsasaayos, o maaaring may naganap na error sa system. Mangyaring kumonsulta sa mga log ng system sa kasong ito. Ang sub-system sa pagpoproseso ng imahe ay magsisimula kaagad kapag nalutas na ang sanhi ng error.
Temperatura ng SOC: Ang temperatura ng gitnang System-on-Chip (SoC) na nagsasagawa ng lahat ng mga gawain sa pagproseso. Ang maximum na temperatura ng pagpapatakbo
20

9.2 Mga Preset

9 CONFIGURATION

Figure 13: Screenshot ng pahina ng mga preset ng configuration.
para sa nagtatrabaho na SoC ay nasa 100 C. Ang isang green-orange-red color-coding ay inilalapat upang magsenyas ng mabuti, nakakaalarma at kritikal na temperatura.
Kaliwa/kanan/kulay na sensor ng imahe: Mga temperatura ng chip para sa kaliwa, kanan at color image sensor. Ang pinakamataas na temperatura ng pagpapatakbo para sa mga sensor ng imahe ay 75 C. Tulad ng temperatura ng SOC, inilalapat ang green-orange-red color coding.
Mga log ng system: Listahan ng mga mensahe ng log ng system na pinagsunod-sunod ayon sa oras. Sa regular na operasyon, makakahanap ka ng impormasyon sa kasalukuyang pagganap ng system. Sa kaso ng mga error, ang mga log ng system ay naglalaman ng kaukulang mga mensahe ng error.
9.2 Mga Preset
Available ang iba't ibang mga preset ng configuration para sa mga piling kumbinasyon ng resolution ng imahe at frame rate. Ang paggamit ng preset ay lubos na inirerekomenda, dahil ginagarantiyahan nito ang pinakamainam na paggamit ng pagganap ni Ruby.
Ipinapakita ng Figure 13 ang mga preset web-interface na pahina. Ang paglo-load ng preset ay babaguhin lamang ang mga parameter na nauugnay para sa isang partikular na configuration. Ang iba pang mga parameter ay hindi mababago. Kung ang lahat ng mga parameter ay dapat itakda sa ginustong default na halaga, inirerekomenda na magsagawa muna ng pag-reset ng pagsasaayos (tingnan ang Seksyon 9.7) at pagkatapos ay i-load ang gustong preset pagkatapos.
21

9.3 Preview

9 CONFIGURATION

Figure 14: Screenshot ng configuration preview pahina.
9.3 Preview
Ang preview page, na ipinapakita sa Figure 14, ay nagbibigay ng live preview ng kasalukuyang nakalkulang disparity map. Pakitiyak na sinusuportahan ng iyong koneksyon sa network ang mataas na bandwidth na kinakailangan para sa pag-stream ng data ng video (tingnan ang Seksyon 8.2). Para sa paggamit ng preview page, kailangan mo ng direktang koneksyon sa network kay Ruby. Ang isang in-between proxy server o isang router na nagsasagawa ng network address translation (NAT) ay hindi maaaring gamitin.
Pagbukas ng preview page, huminto si Ruby sa paglilipat ng data ng imahe sa anumang iba pang host. Ipinagpatuloy ang paglipat sa sandaling isara ang window ng browser, pinindot ng user ang pindutan ng pause sa ibaba ng preview lugar, o kung nag-navigate ang user sa ibang page. Isang open instance lang ng preview page, o anumang iba pang page na nagsi-stream ng data ng video sa browser, ay pinapayagan sa isang pagkakataon. Kung sinubukang buksan nang higit sa isang beses, isang instance lang ang makakatanggap ng data.
Ang preview na ipinapakita sa browser ay hindi sumasalamin sa buong kalidad ng computed disparity map. Sa partikular, limitado ang frame rate sa 20 fps at hindi available ang katumpakan ng sub-pixel. Upang makatanggap ng ganap na kalidad na preview, mangyaring gamitin ang NVCom application, na inilalarawan sa Seksyon 11.1.
Maaaring pumili ng iba't ibang color-coding scheme sa pamamagitan ng drop-down list sa ibaba ng preview lugar. Ang isang sukat ng kulay ay ipinapakita sa kanan, na nagbibigay ng impormasyon sa pagmamapa sa pagitan ng mga kulay at mga halaga ng pagkakaiba. Ang posible
22

9.4 Mga Setting ng Pagkuha

9 CONFIGURATION

Figure 15: Screenshot ng configuration page para sa mga setting ng acquisition.
Ang mga scheme ng kulay ay:
Rainbow: Isang scheme ng kulay ng bahaghari na may mababang wavelength na tumutugma sa mataas na pagkakaiba at mataas na wavelength na tumutugma sa mababang disparidad. Ang mga di-wastong pagkakaiba ay inilalarawan sa kulay abo.
Pula / asul: Isang gradient mula pula hanggang asul, na may mga pulang kulay na tumutugma sa mataas na pagkakaiba at asul na kulay na tumutugma sa mababang pagkakaiba. Ang mga di-wastong pagkakaiba ay inilalarawan sa itim.
Raw data: Ang raw disparity data na walang color-coding. Ang intensity ng pixel ay tumutugma sa integer na bahagi ng sinusukat na pagkakaiba. Ang mga di-wastong pagkakaiba ay ipinapakita sa puti.
9.4 Mga Setting ng Pagkuha
Ang pinaka-kaugnay na mga parameter para sa pagkuha ng imahe ay nakalista sa pahina ng mga setting ng pagkuha na ipinapakita sa Figure 15. Ang pahinang ito ay nahahati sa tatlong natatanging lugar.
9.4.1 Mga Setting ng Format Sinasaklaw ng seksyong ito ang lahat ng mga setting na nauugnay sa format ng imahe. Sa halip na baguhin ang mga setting ng format nang paisa-isa, inirerekomenda naming gumamit ng preset
23

9.4 Mga Setting ng Pagkuha

9 CONFIGURATION

(tingnan ang Seksyon 9.2), at baguhin lamang ang mga indibidwal na setting kung kinakailangan. Titiyakin nito na ang mga kakayahan sa imaging at pagproseso ni Ruby ay magagamit nang mahusay.
Pakitandaan na dapat na pindutin ang button na mag-apply para maging epektibo ang anumang pagbabago sa configuration. Ang mga available na setting ay:

Lapad:
Taas: Format ng Pixel:
Binning Pahalang:
Binning Vertical:
Liwanag ng Pattern ng Projector:

Lapad sa pixel ng napiling Region-Of-Interest (ROI). Tingnan din ang Seksyon 9.15 para sa higit pang mga opsyon sa ROI. Taas sa mga pixel ng napiling ROI. Ninanais na pixel encoding mode. Ang mga available na setting ay 8-bit mono (Mono8) o 12-bit mono (Mono12P). Bilang ng mga pahalang na photosensitive na cell na pinagsama para sa isang pixel ng imahe. Bilang ng mga vertical na photosensitive na cell na pinagsama para sa isang pixel ng imahe. Ang liwanag ng pattern na projector na tinukoy sa porsyento. Ang 100% ay nagpapahiwatig ng buong liwanag, samantalang ang 0% ay ganap na pinapatay ang projector.

9.4.2 Frame Rate
Maaaring malayang i-configure ang frame rate kung saan nagre-record si Ruby ng mga larawan. Ang maximum na rate ng frame na maaaring makamit ay depende sa napiling resolution ng imahe, hanay ng pagkakaiba, format ng pixel at interface ng network. Kung magtatakda ka ng frame rate na mas mataas kaysa sa maaabot na maximum, maaari itong magresulta sa isang hindi regular na pagkuha ng larawan o walang mga frame na nakuha. Inirerekomenda na pumili muna ng isang preset (tingnan ang Seksyon 9.2) na may nais na resolution, at pagkatapos ay babaan lamang ang frame rate kung kinakailangan.
9.4.3 Kontrol sa Exposure
Awtomatikong kokontrolin ni Ruby ang pagkakalantad ng sensor at makakuha upang tumugma sa isang naibigay na average na intensity, na maaaring mapili sa lugar na `kontrol sa pagkakalantad'. Kung ang isang awtomatikong pagsasaayos ay hindi ninanais, kung gayon ang user ay maaaring magtakda ng isang manu-manong oras ng pagkakalantad at makakuha ng setting. Available ang mga mas advanced na opsyon sa exposure at gain sa pahina ng `advanced na auto exposure at gain settings' (tingnan ang Seksyon 9.10).
9.4.4 Kontrol ng White Balance
Sinusuportahan ni Ruby ang awtomatiko o manu-manong white balancing; ang mga kadahilanan ng balanse ng pula at asul na kulay ay maaaring kontrolin. Maaaring i-configure ang functionality na ito sa lugar na `white balance control'. Sa default na white balance mode, `awtomatikong (gray na mundo)`, ang mga setting ng balanse ng channel ng kulay ay inaayos sa real time, batay sa isang heuristic na pagtatantya ng kulay ng pag-iilaw mula sa data ng larawan. Sa `manual` na white balance mode, ang algorithm ay hindi pinagana, at ang pula at

24

9.5 Mga Setting ng Network

9 CONFIGURATION

Larawan 16: Screenshot ng pahina ng pagsasaayos para sa mga setting ng network.
Ang mga kadahilanan ng asul na balanse ay maaaring i-adjust nang manu-mano. Ang kasalukuyang epektibong mga salik ng balanse ay ipinapakita din sa lugar.
9.5 Mga Setting ng Network
Ang pahina ng `network settings', na ipinapakita sa Figure 16, ay ginagamit para sa pag-configure ng lahat ng mga parameter na nauugnay sa network. Maaaring awtomatikong i-query ni Ruby ang configuration ng network sa pamamagitan ng mga kahilingan ng DHCP client, na pinapagana bilang default upang tumulong sa paglipat sa pagitan ng mga kasalukuyang setup ng network. Ang mga Ruby device sa isang network na nagtatalaga ng mga setting ng IP sa pamamagitan ng DHCP ay madaling matuklasan at ma-access sa pamamagitan ng device discovery API at gayundin ang NVCom utility (Seksyon 11.1). Kung walang mga DHCP server, ginagamit ni Ruby ang mga static na setting ng IP nito bilang isang fallback.
Maaaring hindi paganahin ang suporta sa kliyente ng DHCP kung ninanais ang mga nakapirming setting ng IP at hindi ililipat ang device sa pagitan ng iba't ibang network. Sa kasong ito, ang mga setting ng IP sa seksyong ito ay ginagamit bilang mga static na halaga.
Naglalaman din si Ruby ng fallback na DHCP server. Ito ay pinagana bilang default ngunit inilunsad lamang kapag nabigo ang isang naunang kahilingan ng kliyente ng DHCP. Nangangahulugan ito na walang DHCP server na ilulunsad kung naka-off ang suporta ng DHCP client, upang matiyak na hindi kailanman makikipagkumpitensya si Ruby sa isang umiiral nang DHCP server. Ginagamit ng Ruby DHCP server ang mga setting ng IP address bilang base; ang hanay ng lease ay palaging nasa /24 subnet ng IP address.
Sa seksyong `Mga setting ng IP', maaari mong huwag paganahin o paganahin ang komposisyon ng DHCP.
25

9.6 Mga Channel ng Output

9 CONFIGURATION

nents at tumukoy ng IP address, subnet mask at gateway address, na ginagamit bilang static na configuration o fallback na configuration depende sa mga setting ng DHCP. Kapag binabago ang mga setting ng IP, pakitiyak na ang iyong computer ay nasa parehong subnet, o mayroong isang gateway router kung saan maaaring ilipat ang data sa pagitan ng parehong mga subnet. Kung hindi, hindi mo maa-access ang web interface at maaaring mapilitan kang magsagawa ng pag-reset ng firmware (tingnan ang Seksyon 6.4).
Sa seksyong `network protocol', maaari mong piliin ang pinagbabatayan na network protocol na gagamitin para sa paghahatid ng mga resulta ng pagkalkula sa computer ng kliyente. Ang mga posibleng opsyon ay TCP at UDP. Dahil sa high-bandwidth na real time na data, inirerekomenda namin ang paggamit ng UDP.
Upang makuha ang pinakamahusay na posibleng pagganap, ang suporta sa mga jumbo frame ay dapat i-activate sa seksyong `jumbo frames'. Bago gawin ito, gayunpaman, dapat mong tiyakin na ang suporta ng mga jumbo frame ay pinagana din para sa interface ng network ng computer ng iyong kliyente. Ang mga detalye sa kung paano i-enable ang suporta sa jumbo frame sa iyong computer ay makikita sa Seksyon 8.2 sa pahina 18. Para sa mga Linux client computer, ang setting ng jumbo frames (MTU) ay awtomatikong inilalapat kapag tumatanggap ng configuration mula sa isang aktibong Ruby DHCP server. Pakitandaan na sa kasong ito, ang pagpapalit ng Ruby Jumbo Frames mode o MTU Size ay nangangailangan ng mga bagong DHCP leases upang maipalaganap ang setting (hal. sa pamamagitan ng pag-unplug at muling pagpasok ng network cable).
9.6 Mga Channel ng Output
Ang mga aktibong channel ng output ay maaaring i-configure sa pahina ng `mga channel ng output'. Ang output channel ay isang stream ng data ng imahe na ipinapadala sa network. Available ang mga sumusunod na channel ng output:
· Kaliwang output ng camera
· Disparity output
· Kanang output ng camera
· Kulay ng camera output
Kung ang mode ng pagpapatakbo (tingnan ang Seksyon 9.9) ay nakatakda sa pagtutugma ng stereo (ang default) o itinutuwid, ang data ng imahe ng lahat ng mga channel ng output ay itatama (tingnan ang Seksyon 7.1 para sa mga detalye). Kung nakatakdang dumaan ang mode ng pagpapatakbo, gayunpaman, ipapadala ang mga larawan ng camera nang walang pagbabago.
Gaya ng inilarawan sa seksyon 7.3, ang imahe ng color camera ay maaaring i-project sa view ng kaliwang camera. Maaaring i-activate ang projection na ito sa pamamagitan ng pagpili sa kaukulang opsyon para sa parameter na `color output mode'.
Pakitandaan na ang pagtaas ng bilang ng mga aktibong channel ng output ay nagpapataas din ng pag-load ng network at maaaring magresulta sa isang pinababang frame rate. Ang lahat ng mga detalye ng pagganap na ibinigay sa dokumentong ito ay tumutukoy sa isang pagsasaayos na ang kulay at disparity na channel ng output lamang ang naka-activate.
26

9.7 Pagpapanatili

9 CONFIGURATION

Larawan 17: Screenshot ng pahina ng pagsasaayos ng mga channel ng output.
9.7 Pagpapanatili
Sa pahina ng pagpapanatili na ipinapakita sa Figure 18, maaari mong i-download ang a file na naglalaman ng kasalukuyang configuration ng device at mga log ng system, sa pamamagitan ng pagpindot sa link sa pag-download. Sa kaso ng mga teknikal na problema mangyaring isama ito file sa iyong kahilingan sa suporta, upang ang configuration ng iyong device ay maaaring kopyahin at ang mga problema sa system ay maaaring maimbestigahan.
Isang na-download na configuration file maaaring muling i-upload sa ibang pagkakataon. Nagbibigay-daan ito para sa mabilis na paglipat sa pagitan ng iba't ibang configuration ng device. Upang mag-upload ng configuration, mangyaring piliin ang configuration file at pindutin ang upload button. Pakitandaan na ang pag-upload ng ibang configuration ay maaaring magbago sa IP address ng device. Upang maiwasan ang isang maling estado ng configuration, mangyaring mag-upload lamang ng mga configuration na dati nang na-download sa pamamagitan ng web interface.
Kung nakakaranas ka ng mga problema sa iyong kasalukuyang configuration ng device, maaari mong i-reset ang lahat ng mga setting ng configuration sa mga factory default, sa pamamagitan ng pagpindot sa reset button. Pakitandaan na ire-reset din nito ang configuration ng network, na maaaring humantong sa pagbabago ng IP address ni Ruby.
Kung nagpapakita si Ruby ng mga palatandaan ng maling pag-uugali, posibleng i-reboot ang device sa pamamagitan ng pagpindot sa button na `reboot now'. Aabutin ng ilang segundo hanggang sa makumpleto ang isang pag-reboot at muling ibibigay ni Ruby ang data ng pagsukat. Mangyaring gamitin ang function na ito bilang isang alternatibo sa isang ikot ng kuryente, kung ang aparato ay hindi maaaring
27

9.8 Pag-calibrate

9 CONFIGURATION

Figure 18: Screenshot ng pahina ng pagpapanatili ng configuration.
madaling ma-access. Ang pahina ng pagpapanatili ay nagbibigay-daan sa iyo upang magsagawa ng mga pag-update ng firmware. Gamitin
ang functionality na ito ay para lamang sa firmware files na opisyal na inilabas ng Nerian Vision Technologies. Upang magsagawa ng pag-update ng firmware, piliin ang nais na firmware file at pindutin ang pindutan ng pag-update. Ang proseso ng pag-update ay tatagal ng ilang segundo. Huwag i-unplug ang device, i-reload ang maintenance page o muling i-click ang update button habang nagsasagawa ng mga update sa firmware. Kung hindi, maaari itong humantong sa isang sira na estado ng firmware. Kapag nakumpleto na ang pag-update, awtomatikong magsasagawa ng pag-reboot ang device gamit ang bagong bersyon ng firmware. Pinapanatili ang configuration ng device sa panahon ng pag-update ng firmware, ngunit maaaring mangailangan ka ng ilang update na ayusin ang mga partikular na setting pagkatapos.
9.8 Pag-calibrate
Ang Ruby ay ipinadala nang paunang naka-calibrate at karaniwang hindi kinakailangan ang pag-calibrate ng user sa buong buhay ng device. Gayunpaman, kung makaranas ka ng pagbawas sa kalidad at density ng pagsukat, maaari mong iwasto ang mga potensyal na optical misalignment sa pamamagitan ng pagsasagawa ng muling pagkakalibrate. Sa kasong ito ang pahina ng pagkakalibrate, na ipinapakita sa Figure 19, ay dapat gamitin.
28

9.8 Pag-calibrate

9 CONFIGURATION

Figure 19: Screenshot ng configuration page para sa pagkakalibrate ng camera.
9.8.1 Lupon sa Pag-calibrate
Kailangan mo ng calibration board, na isang flat panel na may nakikitang pattern ng pagkakalibrate sa isang gilid. Ang pattern na ginagamit ni Ruby ay binubuo ng isang asymmetric na grid ng mga itim na bilog sa isang puting background, tulad ng ipinapakita sa Figure 20.
Kapag binubuksan ang pahina ng pagkakalibrate, kakailanganin mo munang tukuyin ang laki ng calibration board, na iyong gagamitin sa proseso ng pagkakalibrate. Pakitiyak na piliin ang tamang sukat, dahil kung hindi, ang mga resulta ng pagkakalibrate ay hindi magagamit para sa 3D reconstruction na may tamang sukatan ng sukatan (tingnan ang Seksyon 7.2).
Maaaring direktang ma-download ang pattern sa pahinang ito. Piliin lang ang gustong laki ng pattern sa drop-down na listahan ng `calibration board', at i-click ang link sa pag-download.
Kung kailangan mo ng calibration board na may custom na laki, maaari kang pumili ng custom mula sa `calibration board' na drop-down list. Ito ay nagpapahintulot sa iyo na ipasok ang mga detalye ng calibration board nang manu-mano. Ang unang dimensyon ng laki ng pattern ay ang bilang ng mga bilog sa isang hanay ng grid. Dapat na pantay ang numerong ito para sa lahat ng column ng circles grid.
Ang bilang ng mga bilog sa bawat row ay pinapayagang mag-iba ng 1 sa pagitan ng odd at even na mga row. Ang pangalawang dimensyon ay ang kabuuan ng mga bilog sa dalawang magkasunod na hanay. Ang lahat ng nada-download na default na mga pattern ng pagkakalibrate ay may sukat na 4 × 11.
Ang huling parameter na kailangan mong ilagay kapag gumagamit ng custom na pagkakalibrate
29

9.8 Pag-calibrate

9 CONFIGURATION

5 cm 2 sa

Sukat: 4 x 11; Puwang ng bilog: 2.0 cm; Diametro ng bilog: 1.5 cm; nerian.com

Figure 20: Calibration board na ginamit ni Ruby.
ang board ay ang puwang ng bilog. Ito ang distansya sa pagitan ng mga sentro ng dalawang magkalapit na bilog. Ang distansya ay dapat na pantay sa pahalang at patayong direksyon para sa lahat ng mga bilog.
Kapag natukoy na ang tamang sukat ng board, mangyaring mag-click sa pindutang magpatuloy upang magpatuloy sa proseso ng pagkakalibrate.
9.8.2 Pinipigilan ang laki ng imahe para sa pagkakalibrate
Bilang default, ang proseso ng pag-calibrate ay tatakbo sa buong sensor area, na may maximum na wastong laki ng imahe na magagamit para sa kasalukuyang aktibong format ng imahe at mga setting ng pagkuha. Inirerekomenda ito para sa karamihan ng mga setup, dahil ang isang mas maliit na Rehiyon ng Interes ay maaaring mapili anumang oras pagkatapos ng pagkakalibrate (tingnan ang Seksyon 9.15). Para sa mga espesyal na setup, para sa halampKung ang bilog ng imahe ng isang lens ay mas maliit kaysa sa lugar ng sensor ng imahe, kinakailangan na hadlangan ang nauugnay na rehiyon ng sensor bago ang paunang pagkakalibrate.
Sa pamamagitan ng pagpindot sa `constrain to a window' na button sa ibaba ng `camera preview` area, ipinapakita ang isang nakasentro na overlay na frame, na maaaring baguhin ang laki sa pamamagitan ng pag-drag. Kung inilapat, lilipat ang pagkakalibrate sa constrained-region mode. Maaaring ibalik ang pagkakalibrate sa default na operasyon sa pamamagitan ng pagpindot sa button na `reset to full-resolution'.
Kapag ang proseso ng pag-calibrate ay matagumpay na nakumpleto sa isang limitadong rehiyon, babawasan nito ang default na laki ng output (at maximum na available na laki ng Rehiyon ng Interes) mula sa maximum na wastong laki ng imahe hanggang sa napili, na epektibong hindi kasama ang anumang mga lugar na nasa labas ng naka-calibrate na rehiyon ng sensor.
30

9.8 Pag-calibrate

9 CONFIGURATION

9.8.3 Pagre-record ng Calibration Frame
Isang live preview sa lahat ng mga sensor ng imahe ay ipinapakita sa `camera preview'lugar. Maliban kung ang rehiyon ng pagkakalibrate ay napigilan gaya ng nakabalangkas sa itaas, ang resolution ng camera sa panahon ng pagkakalibrate ay nakatakda sa maximum na wastong laki ng imahe para sa kasalukuyang aktibong format ng imahe at mga setting ng pagkuha. Siguraduhin na ang calibration board ay ganap na nakikita sa lahat ng mga larawan ng camera at pagkatapos ay pindutin ang `capture single frame' na button sa control section. Ulitin ang prosesong ito nang maraming beses habang ginagalaw ang camera o ang calibration board.
Ang calibration board ay dapat na naitala sa maraming iba't ibang posisyon at oryentasyon. Isang berdeng overlay ang ipapakita sa preview window para sa lahat ng mga lokasyon, kung ang board ay dati nang nakita. Dapat mong pag-iba-ibahin ang distansya ng board at tiyaking sakop mo ang halos lahat ng field ng view sa lahat ng camera.
Kung mas maraming frame ang iyong naitala, mas magiging tumpak ang nakalkulang pagkakalibrate. Gayunpaman, ang mas maraming mga frame ay nagdudulot din ng pag-compute ng mga parameter ng pagkakalibrate na mas tumagal. Sinusuportahan ni Ruby ang pag-record ng hanggang 40 mga frame ng pagkakalibrate. Inirerekomenda namin ang paggamit ng hindi bababa sa 20 mga frame ng pagkakalibrate upang makatanggap ng mga tumpak na resulta.
Ang pag-record ng mga calibration frame ay maaaring gawing simple sa pamamagitan ng pag-activate ng `auto capture' mode. Sa mode na ito, isang bagong calibration frame ang naitala sa mga fix capture interval. Maaari mong ilagay ang gustong agwat sa seksyon ng auto capture at pagkatapos ay pindutin ang button na `start auto capture'. Kung ninanais, ang isang naririnig na tunog ay maaaring i-play upang ipahiwatig ang countdown at ang pag-record ng isang bagong frame. Maaaring ihinto ang mode ng auto capture sa pamamagitan ng pagpindot sa button na `stop auto capture'.
Isang maliit na preview ng bawat na-capture na frame ng pagkakalibrate ay idinaragdag sa seksyong `captured frames'. Ang mga frame ay na-overlay sa mga nakitang posisyon ng mga lupon ng calibration board. Maaari mong i-click ang alinman sa preview mga larawan upang makita ang calibration frame sa buong resolution nito. Isang example para sa calibration frame na may wastong natukoy na calibration board ay ipinapakita sa Figure 21. Kung ang calibration board ay hindi natukoy nang tama o kung hindi ka nasisiyahan sa kalidad ng isang calibration frame, maaari mo itong tanggalin sa pamamagitan ng pag-click sa ×-symbol .
9.8.4 Pagsasagawa ng Calibration
Kapag nakapagtala ka na ng sapat na bilang ng mga frame ng pagkakalibrate, maaari mong simulan ang proseso ng pagkakalibrate sa pamamagitan ng pagpindot sa pindutan ng pag-calibrate sa seksyon ng kontrol. Ang oras na kinakailangan para sa pagkakalibrate ng camera ay depende sa bilang ng mga frame ng pagkakalibrate na iyong naitala. Ang pagkakalibrate ay karaniwang tatagal ng ilang minuto upang makumpleto. Kung matagumpay ang pag-calibrate pagkatapos ay ire-redirect ka kaagad sa `review pahina ng pagkakalibrate.
Mabibigo ang pagkakalibrate kung ang nakalkulang patayo o pahalang na pixel displacement ay lumampas sa pinapayagang hanay para sa anumang punto ng larawan. Ang pinakakaraniwang sanhi ng mga pagkabigo sa pagkakalibrate ay:
· Hindi sapat na bilang ng mga frame ng pagkakalibrate.
31

9.9 Mga Setting ng Pagproseso

9 CONFIGURATION

Larawan 21: Halample calibration frame na may nakitang calibration board.
· Hindi magandang saklaw ng larangan ng view kasama ang calibration board.
· Mga lente na may malakas na geometric distortion.
· Mga lente na may hindi pantay na focal length.
· Mga frame na may mga maling pagtuklas ng calibration board.
Kung mabigo ang pagkakalibrate, mangyaring lutasin ang sanhi ng error at ulitin ang proseso ng pagkakalibrate. Kung ang sanhi ng error ay isa o higit pang maling mga frame ng pagkakalibrate, maaari mong tanggalin ang mga frame na iyon at muling pindutin ang pindutan ng pag-calibrate. Gayundin, sa kaso ng napakakaunting mga frame ng pagkakalibrate, maaari kang mag-record ng mga karagdagang frame at i-restart ang pagkalkula ng pagkakalibrate.
9.9 Mga Setting ng Pagproseso
9.9.1 Mode ng Operasyon
Ang mga pangunahing parameter sa pagpoproseso ay maaaring baguhin sa pahina ng `processing settings', na ipinapakita sa Figure 22. Ang pinakanauugnay na opsyon ay ang operation mode, na maaaring itakda sa isa sa mga sumusunod na value:
Dumaan: Sa mode na ito, ipinapasa ni Ruby ang koleksyon ng imahe ng lahat ng mga sensor ng imahe nang walang pagbabago. Ang mode na ito ay inilaan para sa mulingviewsa data ng imahe bago ilapat ang anumang pagproseso.
Ituwid: Sa mode na ito, ipinapadala ni Ruby ang mga naayos na larawan ng lahat ng mga sensor ng imahe. Ang mode na ito ay inilaan para sa pag-verify ng kawastuhan ng pagwawasto ng imahe.
Pagtutugma ng stereo: Ito ang default na mode, kung saan ginagawa ni Ruby ang aktwal na pagpoproseso ng stereo na imahe (pagtutugma ng stereo). Ipinapadala ni Ruby ang disparity map at, depende sa configuration ng mga channel ng output, ang mga naayos na imahe.
32

9.9 Mga Setting ng Pagproseso

9 CONFIGURATION

Larawan 22: Screenshot ng pahina ng pagsasaayos para sa mga setting ng pagproseso.
9.9.2 Mga Setting ng Disparity
Kung ang operation mode ay nakatakda sa stereo matching, ang `disparity settings' ay nagbibigay-daan para sa isang configuration ng disparity range na hinanap ni Ruby. Ang hanay ng pagkakaiba ay nakakaapekto sa frame rate na maaaring makamit. Dapat isaayos ang frame rate sa sandaling nabago ang disparity range (tingnan ang Seksyon 3.3 sa pahina 5 para sa mga rekomendasyon). Mangyaring magkaroon ng kamalayan na ang pagtaas ng disparity range ay magbabawas din sa maximum na laki ng larawan na maaaring i-configure.
Ang opsyon na `bilang ng mga pagkakaiba' ay tumutukoy sa kabuuang bilang ng mga pixel na hinanap para sa mga sulat. Ang opsyong ito ay may mataas na epekto sa depth resolution at sa sakop na hanay ng pagsukat (tingnan ang Seksyon 7.2). Maaaring piliin ang simula ng hanay ng pagkakaiba sa pamamagitan ng opsyong `disparity offset'. Karaniwan, ang isang halaga ng 0 ay ninanais para sa offset, na nagbibigay-daan para sa mga sukat ng hanay hanggang sa infinity. Kung ang nakikitang distansya ay tiyak na mapipilitan, kung gayon ang mababang halaga ng pagkakaiba ay hindi mangyayari. Sa kasong ito, posibleng dagdagan ang disparity offset, para hindi makalkula ang mga mababang disparidad na ito.
9.9.3 Mga Setting ng Algorithm
Ang pag-uugali ng mga algorithm sa pagpoproseso ng imahe ay maaaring kontrolin sa pamamagitan ng `algorithm settings'. Natukoy ang default na configuration gamit ang mga pamamaraan sa pag-aaral ng machine, at dapat ito ang pinakamahusay na pagpipilian para sa karamihan ng paggamit
33

9.9 Mga Setting ng Pagproseso

9 CONFIGURATION

kaso. Gayunpaman, ang lahat ng mga parameter ng algorithm ay maaaring iakma sa pamamagitan ng web interface. Kinokontrol ng mga sumusunod na parameter ang algorithm ng pagtutugma ng stereo:
Parusa para sa mga pagbabago sa pagkakaiba (P1): Isang parusa na inilalapat sa unti-unting pagbabago ng mga pagkakaiba. Ang isang malaking halaga ay nagiging sanhi ng unti-unting mga pagbabago sa pagkakaiba upang maganap ang mas madalas, habang ang isang maliit na halaga ay nagiging sanhi ng mga unti-unting pagbabago na mangyari nang mas madalas. Maaaring i-configure ang iba't ibang value para sa mga pixel na nasa mga gilid ng larawan (P1-edge) at mga pixel na wala sa mga gilid (P1-no-edge). Ang mga halagang ito ay dapat na mas maliit kaysa sa mga halaga para sa P2.
Parusa para sa disparity discontinuities (P2): Isang parusa na inilalapat sa biglang pagbabago ng mga pagkakaiba. Ang isang malaking halaga ay nagiging sanhi ng mga disparity na hindi nagpapatuloy na mangyari nang mas madalas, habang ang isang maliit na halaga ay nagiging sanhi ng mga discontinuities na mangyari nang mas madalas. Maaaring i-configure ang iba't ibang mga halaga para sa mga pixel na nasa mga gilid ng larawan (P2-edge) at mga pixel na wala sa mga gilid (P2-no-edge). Ang mga halagang ito ay dapat na mas malaki kaysa sa mga halaga para sa P1.
Gumagamit si Ruby ng algorithm sa pag-optimize para mapahusay ang katumpakan ng nakalkulang disparity map sa sub-pixel na resolution. Kung maliit lang na rehiyon ng interes (ROI) ng input na imahe / mapa ng pagkakaiba ang may kaugnayan, kung gayon ang proseso ng autotuning na ito ay maaaring limitado sa ROI na ito lamang. Sa kasong ito, dapat asahan ng isa ang mas tumpak na mga sub-pixel na sukat sa loob ng ROI. Ang mga nauugnay na parameter para sa pagpigil sa sub-pixel tuning ROI ay:
I-tune ang sub-pixel optimization sa ROI: Kung naka-enable, ang sub-pixel optimization ay nakatutok sa rehiyong tinukoy ng mga kasunod na parameter, sa halip na ang buong larawan.
Lapad: Lapad sa mga pixel ng napiling Rehiyon ng Interes (ROI).
Taas: Taas sa mga pixel ng napiling ROI.
Offset X: Pahalang na offset ng ROI na nauugnay sa image center.
Offset Y: Vertical offset ng ROI na nauugnay sa image center.
Nagpapatupad si Ruby ng ilang paraan para sa post-processing ng computed disparity map. Ang bawat pamamaraan ng post-processing ay maaaring isaaktibo o i-deactivate nang isa-isa. Ang mga magagamit na pamamaraan ay:
Mask border pixels: Kung naka-enable, minamarkahan ng opsyong ito ang lahat ng disparity na malapit sa hangganan ng nakikitang lugar ng larawan bilang hindi wasto, dahil mayroon silang mataas na kawalan ng katiyakan. Kasama rin dito ang lahat ng mga pixel kung saan walang aktwal na data ng imahe ang magagamit, dahil sa warping na inilapat ng pagwawasto ng imahe (tingnan ang Seksyon 7.1).

34

9.10 Advanced na Auto Exposure at Mga Setting ng Gain 9 CONFIGURATION
Pagsusuri ng pagkakapare-pareho: Kung naka-enable, isasagawa ang pagtutugma ng stereo sa magkatugmang direksyon, kaliwa-pakanan at kanan-pakaliwa. Ang mga pixel kung saan hindi pare-pareho ang pagkakaiba ay minarkahan bilang invalid. Ang sensitivity ng consistency check ay maaaring kontrolin sa pamamagitan ng `consistency check sensitivity' slider.
Pagsusuri sa pagiging natatangi: Kung pinagana, ang mga pixel sa mapa ng pagkakaiba ay minarkahan bilang di-wasto kung walang sapat na natatanging solusyon (ibig sabihin, ang function ng gastos ay walang pandaigdigang minimum na mas mababa kaysa sa lahat ng iba pang lokal na minimum). Ang sensitivity ng uniqueness check ay maaaring kontrolin sa pamamagitan ng `uniqueness check sensitivity' slider.
Texture filter: Kung naka-enable, ang mga pixel na kabilang sa mga rehiyon ng larawan na may maliit na texture ay mamarkahan bilang invalid sa disparity map, dahil malaki ang posibilidad na ang mga pixel na ito ay hindi magkatugma. Ang sensitivity ng filter na ito ay maaaring iakma sa pamamagitan ng `texture filter sensitivity' slider.
Gap interpolation: Kung pinagana, ang maliliit na patch ng mga di-wastong disparity, na sanhi ng isa sa mga naunang filter, ay pinupunan sa pamamagitan ng interpolation.
Pagbabawas ng ingay: Kung naka-enable, ilalapat ang isang filter ng imahe sa mapa ng pagkakaiba, na nagpapababa ng ingay at nag-aalis ng mga outlier.
Mga pag-ulit ng speckle filter: Minamarkahan ang maliliit na nakahiwalay na mga patch na may katulad na pagkakaiba bilang hindi wasto. Ang ganitong mga batik ay kadalasang resulta ng mga maling tugma. Tinutukoy ng bilang ng mga pag-ulit kung gaano magiging agresibo ang filter sa pag-alis ng mga batik. Hindi pinapagana ng value na 0 ang filter.
9.10 Advanced na Auto Exposure at Mga Setting ng Gain
Upang matiyak ang pinakamahusay na posibleng kalidad ng imahe, nagbibigay si Ruby ng ganap na awtomatikong oras ng pagkakalantad at nakakakuha ng adaptasyon para sa mabilis na pagbabago ng mga kondisyon ng pag-iilaw, na kadalasang nangyayari sa mga panlabas na senaryo. Maaari mong i-activate at i-deactivate ang parehong mga auto function nang nakapag-iisa sa pahina ng auto exposure, na ipinapakita sa Figure 23.
9.10.1 Exposure at Gain
Mode: Pinipili kung ang oras ng pagkakalantad at/o pakinabang ay awtomatikong isinasaayos. Sa ilalim ng normal na mga pangyayari, dapat piliin ang `auto exposure and gain' para sa awtomatikong pagsasaayos ng parehong mga parameter.
Target na intensity: Pumipili ng average na halaga ng intensity para sa mga stereo na imahe, na tina-target ng awtomatikong pagsasaayos. Ang mga halaga ng intensity ay nakasulat sa porsyentotage numero na may 0 na kumakatawan sa itim at 100 puti. Maaaring magbigay ng iba't ibang mga halaga para sa mga sensor ng kulay at monochrome.
35

9.10 Advanced na Auto Exposure at Mga Setting ng Gain 9 CONFIGURATION
Figure 23: Screenshot ng page ng configuration para sa awtomatikong pagkakalantad at mga setting ng pagsasaayos ng gain. Target na frame: Pinipili kung ang intensity ng kaliwang frame, ang intensity ng
kanang frame o ang average na intensity ng parehong frame ay dapat iakma sa target na intensity. Pinakamataas na oras ng pagkakalantad: Maaaring tukuyin ang maximum na halaga para sa oras ng pagkakalantad upang limitahan ang paglalabo ng paggalaw. Ang halaga para sa maximum na oras ng pagkakalantad ay dapat palaging mas maliit kaysa sa oras sa pagitan ng dalawang frame. Maaaring magbigay ng iba't ibang mga halaga para sa mga sensor ng kulay at monochrome. Pinakamataas na pakinabang: Tulad ng para sa oras ng pagkakalantad, posible ring hadlangan ang maximum na pinapayagang makuha. Ang pagpigil sa pakinabang ay maaaring mapabuti ang mga resulta ng pagpoproseso ng imahe para sa mga sitwasyong may mataas na ingay ng sensor. Maaaring magbigay ng iba't ibang mga halaga para sa mga sensor ng kulay at monochrome. 9.10.2 Mga Manu-manong Setting Kung ang awtomatikong pagsasaayos ay na-deactivate sa pagpili ng mode, ang oras ng pagkakalantad at/o nakuha ay maaaring manu-manong itakda sa mga nakapirming halaga sa seksyong ito.
36

9.11 Mga Setting ng Trigger

9 CONFIGURATION

Figure 24: Screenshot ng configuration page para sa mga setting ng trigger.
9.10.3 Mga Setting ng ROI
Sa halip na isagawa ang pagsasaayos na may paggalang sa average na intensity ng kumpletong larawan, maaari mong kalkulahin ang average na intensity sa isang rehiyon ng interes lamang. Paganahin ang `gamitin ang ROI para sa pagsasaayos' sa kasong iyon. Inilalarawan ng `Offset X' at `Offset Y' ang posisyon ng sentro ng rehiyon na may kaugnayan sa sentro ng imahe. Hinahayaan ka ng `Width ROI' at `Height ROI' na ayusin ang spatial extension ng ROI. Ang ROI ay dapat na ganap na nakapaloob sa larawan. Kung hindi ito ang kaso, awtomatikong i-crop ang ROI.
9.11 Mga Setting ng Trigger
Ang pahina ng `trigger settings' na ipinapakita sa Figure 24 ay nagbibigay-daan para sa isang configuration ng trigger input at output. Nagtatampok si Ruby ng GPIO port na nagbibigay ng access sa isang trigger output at isang trigger input signal. Para sa mga de-koryenteng detalye ng mga signal na ito mangyaring sumangguni sa Seksyon 6.3.
Kapag naka-enable ang trigger input, kukunan lang ni Ruby ang isang frame kapag may dumating na signal pulse sa trigger input pin, o kung may software trigger na inilabas sa pamamagitan ng API. Para sa signal ng pag-trigger ng hardware, ang pagkakalantad ng sensor ng imahe ay nagsisimula sa nangungunang gilid ng papasok na signal. Kapag pinagana ang trigger input, hindi available ang trigger output.
Kapag hindi pinagana ang output ng trigger, maaari itong tukuyin kung ang
37

9.12 Pag-synchronize ng Oras

9 CONFIGURATION

Figure 25: Screenshot ng configuration page para sa time synchronization.
output ay dapat na nakatali sa isang pare-pareho sa (lohikal 1) o pare-pareho off (lohikal 0). Kung pinagana, ang polarity ng nabuong signal ay maaaring maging active-high o activelow. Ang lapad ng pulso ay maaaring pare-pareho o umiikot sa pagitan ng isang listahan ng mga paunang na-configure na halaga.
Ang dalas ng output ng trigger ay palaging tutugma sa kasalukuyang frame rate ni Ruby. Gayunpaman, posibleng tumukoy ng time offset, na ang pagkaantala mula sa simula ng pagkakalantad ng sensor hanggang sa nangungunang gilid ng output ng trigger.
9.12 Pag-synchronize ng Oras
Ang pahina ng `time synchronization', na ipinapakita sa Figure 25, ay maaaring gamitin upang i-configure ang tatlong posibleng paraan para sa pag-synchronize ng panloob na orasan ni Ruby. Tulad ng ipinaliwanag sa Seksyon 7.4, ang panloob na orasan ay ginagamit para sa timestamppagkuha ng mga frame.
Ang unang opsyon ay ang pag-synchronize sa isang server ng oras, gamit ang Network Time Protocol (NTP) hanggang sa bersyon 4. Sa kasong ito, sini-synchronize ni Ruby ang panloob na orasan nito sa ibinigay na server ng oras, gamit ang Coordinated Universal Time (UTC). Ang katumpakan ng pag-synchronize ng oras ay depende sa latency ng iyong network at time server. Kung aktibo ang pag-synchronize ng oras ng NTP, ang mga istatistika ng pag-synchronize ay ipinapakita sa isang nakalaang lugar ng katayuan.
Bilang kahalili sa NTP, ang Precision Time Protocol (PTP) ay maaaring gamitin para sa pag-synchronize. Nagbibigay ang PTP ng mas mataas na katumpakan kapag kino-
38

9.13 ReviewMga Resulta ng Pag-calibrate

9 CONFIGURATION

Figure 26: Screenshot ng configuration page para sa reviewpag-calibrate ng camera.
ipinapares sa NTP, at dapat samakatuwid ay mas gusto kung magagamit. Tulad ng para sa NTP, itatakda din ang orasan sa UTC at ipapakita ang impormasyon ng katayuan ng pag-synchronize.
Kapag gumagamit ng signal ng Pulse Per Second (PPS), ang panloob na orasan ay maaaring i-reset sa 0 tuwing may natatanggap na signal ng pag-synchronize. Bilang kahalili, ang system time stamp para sa huling natanggap na signal ng PPS ay maaaring maipadala gamit ang isang nakunan na frame. Mangyaring sumangguni sa Seksyon 6.3.3 sa pahina 11 para sa mga detalye sa PPS synchronization.
9.13 ReviewMga Resulta ng Pag-calibrate
Kapag naisagawa na ang pagkakalibrate, maaari mong suriin ang mga resulta ng pagkakalibrate sa `review calibration' page, na ipinapakita sa Figure 26. Sa tuktok ng page na ito makikita mo ang isang live na preview ng lahat ng mga sensor ng imahe habang inaayos ang mga ito gamit ang kasalukuyang mga parameter ng pagkakalibrate. Pakitiyak na ang mga kaukulang punto sa mga larawan ng lahat ng mga sensor ng imahe ay may magkaparehong vertical coordinate.
Sa pamamagitan ng pag-activate ng opsyong `display epipolar lines', maaari kang mag-overlay ng set ng mga pahalang na linya sa mga larawan. Nagbibigay-daan ito para sa isang madaling pagsusuri kung natutugunan ang pantay na pamantayan ng vertical coordinates. Isang example para sa kaliwa at kanang input na imahe na may naka-overlay na mga linya ng epipolar ay ipinapakita sa Figure 27.
Sa seksyong `kalidad na impormasyon' makikita mo ang average na reprojection error. Ito ay isang sukatan para sa kalidad ng iyong pagkakalibrate, na may mas mababang
39

9.13 ReviewMga Resulta ng Pag-calibrate

9 CONFIGURATION

Larawan 27: Halample para sa pagsusuri ng patayong mga coordinate ng imahe.

ues na nagpapahiwatig ng mas mahusay na mga resulta ng pagkakalibrate. Pakitiyak na ang average na error sa reprojection ay mas mababa sa 1 pixel.
Ang lahat ng nakalkulang parameter ng pagkakalibrate ay ipinapakita sa seksyong `data ng pagkakalibrate'. Ang mga parameter na ito ay:

M1, M2 at M3: mga matrice ng camera para sa kaliwa, kanan at kulay na camera.
D1, D2 at D3: mga distortion coefficient para sa kaliwa, kanan at kulay ng camera.
R1, R2 at R3: mga rotation matrice para sa mga pag-ikot sa pagitan ng orihinal at naayos na mga larawan ng camera.
P1, P2 at P3: projection matrice sa bagong (naituwid) na mga coordinate system.
Q12: ang disparity-to-depth na mapping matrix para sa kaliwang camera. Tingnan ang Seksyon 7.2 para sa paggamit nito.
Q13: ang disparity-to-depth na mapping matrix para sa color camera (karaniwang hindi kailangan).
T12, T13: vector ng pagsasalin sa pagitan ng mga coordinate system ng kaliwa at kanan, at kaliwa at kulay na mga camera.
R12, R13: rotation matrix sa pagitan ng mga coordinate system ng kaliwa at kanan, at kaliwa at kulay na mga camera.

Ang mga camera matrice na Mi ay nakaayos tulad ng sumusunod:

fx 0 cx

Mi

=

0

fy

cy

,

(1)

001

40

9.14 Auto Re-calibration

9 CONFIGURATION

Figure 28: Screenshot ng mga setting ng auto re-calibration.

kung saan ang fx at fy ay ang mga focal length ng lens sa pahalang at patayong direksyon (sinusukat sa mga pixel), at ang cx at cy ay ang mga coordinate ng imahe ng projection center.
Ang distortion coefficient vectors D1 at D2 ay may sumusunod na istraktura:

Di = k1 k2 p1 p2 k3 ,

(2)

kung saan ang k1, k2 at k3 ay mga radial distortion coefficient, at ang p1 at p2 ay tangential distortion coefficients.
Maaari mong i-download ang lahat ng impormasyon sa pagkakalibrate bilang isang YAML na nababasa ng makina file, sa pamamagitan ng pag-click sa link sa pag-download sa ibaba ng seksyong `calibration data'. Binibigyang-daan ka nitong madaling i-import ang data ng pagkakalibrate sa sarili mong mga application. Higit pa rito, maaari mong i-save ang data ng pagkakalibrate sa iyong PC at i-reload ito sa ibang pagkakataon, sa pamamagitan ng paggamit sa seksyong `mag-upload ng data ng pagkakalibrate'.

9.14 Auto Re-calibration
Sa pahina ng `auto re-calibration', na ipinapakita sa Figure 28, maaari mong paganahin ang isang awtomatikong pagtatantya ng mga parameter ng pagkakalibrate. Sa kasong ito, ang system ay nananatiling naka-calibrate kahit na ang optical alignment ay napapailalim sa mga pagkakaiba-iba.
Ang mga parameter ng pagkakalibrate ay karaniwang nahahati sa mga intrinsic na parameter (focal length, projection center at distortion coefficients) at mga extrinsic na parameter (transformation sa pagitan ng mga poses ng lahat ng camera). Auto re-calibration lang
41

9.15 Rehiyon ng Interes

9 CONFIGURATION

nagsasagawa ng pag-update ng mga extrinsic na parameter, dahil mas madaling kapitan ang mga ito sa mga pagkakaiba-iba. Mas partikular, ang pag-ikot lamang sa pagitan ng mga camera ang tinatantya. Ito ay karaniwang ang pinaka-marupok na parameter, na maaaring maapektuhan nang malaki sa pamamagitan ng kahit menor deformation.
Maaaring i-activate ang auto re-calibration sa pamamagitan ng pagpili sa opsyong `enable auto re-calibration'. Si Ruby ay patuloy na magko-compute ng mga samples para sa tinantyang pag-ikot ng inter-camera. Ang isang mahusay na paraan ng pagtatantya ay inilapat para sa pagpili ng panghuling pagtatantya ng pag-ikot mula sa hanay ng mga pag-ikot samples. Ang bilang ng samples na ginagamit para sa proseso ng pagtatantya ay maaaring i-configure. Maliit na sampAng mga laki ay nagbibigay-daan para sa isang mabilis na reaksyon sa mga pagkakaiba-iba ng pagkakahanay, habang ang malalaking sampAng mga laki ay nagbibigay-daan para sa napakatumpak na mga pagtatantya. Kung napili ang opsyong `permanenteng i-save ang naitama na pagkakalibrate', ang na-update na pagkakalibrate ay isusulat sa hindi pabagu-bagong memorya at mananatiling naroroon kahit na pagkatapos ng isang ikot ng kuryente.
Para gumana ang auto-calibration, dapat obserbahan ng mga camera ang isang eksena na may sapat na visual na impormasyon. Tutukuyin ni Ruby ang mga kapansin-pansing feature ng larawan at itugma ang mga ito sa lahat ng larawan. Kung hindi sapat na mga feature ang matukoy, hindi gagana ang auto re-calibration. Ang isang tipikal na eksena ay dapat sapat para sa awtomatikong muling pag-calibrate sa kaliwa at kanang monochrome camera. Para sa pagpapatakbo ng auto re-calibraiton sa color camera, gayunpaman, inirerekomenda ang isang mayaman sa tampok na itim/puting pattern. Isang puting pahina na may naka-print na teksto, halimbawaample, nagsisilbing mabuti para sa layuning ito.
Sa lugar ng mga istatistika maaari kang makahanap ng iba't ibang impormasyon sa kasalukuyang pagganap ng proseso ng auto calibration. Kabilang dito ang katayuan ng pinakabagong muling pagtatangkang pag-calibrate, ang oras mula noong huling pag-update ng pagkakalibrate, ang rotational offset ng huling pag-update at ang bilang ng mga pag-ikotamples na nakolekta at itinapon mula noong huling update. Sa wakas, makakahanap ka ng listahan ng kamakailang nakalkulang mga pag-ikot ng inter-camera sa lugar ng kasaysayan. Ang mga nakalistang rotation ay kinakatawan bilang rotation quaternions.
9.15 Rehiyon ng Interes
Kung hindi kailangan ang buong sensor image ngunit isang subsection lang, maaari itong i-configure sa page na `rehiyon ng interes' (ROI). Ang pahinang ito ay magbubukas ng isang preview ng kaliwa at kanang mga imahe na may naka-overlay na mga frame na nagpapakita ng na-crop na rehiyon, na maaaring ilipat at baguhin ang laki nang sabay-sabay gamit ang mouse (tingnan ang Fig. 29). Babaguhin ng device ang hiniling na mga dimensyon ng ROI; sa kasong ito makikita mo ang rehiyon na awtomatikong pumutok sa pinakamalapit na wastong laki ng imahe.
Kung ang pag-calibrate ay isinagawa sa isang limitadong nakasentro na window sa halip na sa buong resolution ng sensor (tingnan ang Seksyon 9.8), ang mga limitadong lawak na ito ay hindi maaaring lampasan sa panahon ng pagpili ng ROI. Ang preview Ang laki ng larawan sa pahina ng pagpili ng ROI ay magpapakita ng limitadong resolusyon sa oras ng pag-calibrate.

42

9.16 Inertial Measurement Unit

9 CONFIGURATION

Figure 29: Screenshot ng pagpili sa Rehiyon ng Interes.
9.16 Inertial Measurement Unit
Ang inertial measurement unit (IMU) na naka-embed sa Ruby, na maaaring magbigay ng real-time na three-dimensional na mga sukat para sa accelerometer, gyroscope, linear acceleration at data ng magnetometer, pati na rin ang pinagsamang quaternion orientation reading, ay maaaring i-configure sa `inertial measurement unit' pahina, na ipinapakita sa Figure 30.
Sa seksyong `dalas ng packet ng network', maaari mong itakda ang rate ng packet bawat segundo para sa mga pagbabasa ng sensor. Maaaring dagdagan ang halaga para sa minimumlatency (real-time) na paggamit, o bawasan para sa purong pag-record ng serye ng oras, kung saan ang mas mahabang batch ng data ay pagsasama-samahin para sa bawat packet.
Ang sampAng mga ling frequency para sa mga indibidwal na sensor ay maaaring i-configure sa `sampseksyon ng ling frequency. Ang mga halaga ay nasa pagitan ng 0 Hz (na hindi pinapagana ang isang partikular na channel) at ang maximum na rate, na 100 Hz para sa data ng magnetometer at 400 Hz para sa iba pang mga channel. Ang channel na `rotation quaternion', na sumasalamin sa oryentasyon ng device na isinama mula sa mga indibidwal na channel ng sensor, ay may karagdagang mode toggle: sa `absolute (geomagnetic)' mode, isinasama ng device ang magnetometer upang magbigay ng mga pagbabasa para sa yaw angle (ibig sabihin, pag-ikot sa paligid ng gravity axis), kaya tinatantya ang absolute compass bearing. Sa `relative (non-geomagnetic)' mode, walang magnetometer data ang ginagamit, at ang yaw reading ay nakabatay lamang sa motion integration na nangangailangan ito ng simula sa zero yaw, anuman ang paunang oryentasyon ng device, at isang unti-unting divergent
43

9.16 Inertial Measurement Unit

9 CONFIGURATION

Figure 30: Screenshot ng pahina ng Mga Setting ng Inertial Measurement Unit.
drift ng naiulat na anggulo ng yaw na may paggalang sa ganap na direksyon ng compass.
9.16.1 Pag-calibrate ng inertial measurement unit
Isang live view ng mga pagbabasa ng oryentasyon ay maaaring obserbahan sa seksyong `calibration / device orientation'. Bukod sa mga anggulo ng roll, pitch, at yaw, ang kalidad ng pagkakalibrate ay iniuulat sa isang sukat mula sa zero hanggang tatlo (na sumasalamin sa mga antas ng BNO08X ng Hindi Mapagkakatiwalaan; Mababang Katumpakan; Katamtamang Katumpakan; at Mataas na Katumpakan). Ang tinantyang katumpakan para sa anggulo ng yaw (compass bearing) ay iniuulat kung ang `absolute (geomagnetic)' mode ay pinagana. Ang mga pagbabasa ng magnetometer ay ang hindi gaanong maaasahang bahagi, samakatuwid ang katayuan ng pagkakalibrate ay maaaring iulat na hindi gaanong tumpak sa mode na `absolute (geomagnetic)'.
Inilalagay ng button na `start calibration' ang IMU sa calibration mode. Ang inirerekomendang pamamaraan ay i-orient ang device sa lima hanggang anim na patayong direksyon (naaayon sa mga mukha ng kubo) na may iba't ibang pag-ikot, at pansamantalang panatilihing nakatutok ang device sa bawat isa sa mga oryentasyong iyon. Ang katayuan ng pagkakalibrate ay dapat na unti-unting umunlad sa antas 2 o 3. Ang `finish calibration' na button ay nagse-save ng bagong data ng pagkakalibrate at ang pag-reset ng mga IMU reading ay magpapatuloy pagkatapos ng maikling sandali gamit ang bagong base calibration, na pagkatapos ay magpapatuloy sa mga power cycle.
44

10 IMPORMASYON SA PAGGAMIT NG API
10 Impormasyon sa Paggamit ng API
10.1 Pangkalahatang Impormasyon
Ang cross-platform libvisiontransfer C++ at Python API ay magagamit para sa interfacing ng custom na software kay Ruby. Para sa Windows, available ang binary na bersyon ng library na magagamit sa Microsoft Visual Studio. Para sa Linux, mangyaring i-compile ang library mula sa available na source code. Ang API ay kasama bilang bahagi ng available na software release, na maaaring i-download mula sa aming suporta website1.
Ang libvisiontransfer API ay nagbibigay ng functionality para sa pagtanggap ng mga resulta ng pagproseso ng Ruby sa isang computer network. Higit pa rito, pinapayagan din ng API ang pagpapadala ng data ng imahe. Maaari itong magamit para sa pagtulad kay Ruby kapag nagsasagawa ng pag-develop ng mga system.
Ang ipinadalang mga resulta ng pagproseso ay binubuo ng isang hanay ng mga larawan. Kadalasan ito ay ang naayos na kaliwang larawan at ang nakalkulang disparity map. Kung na-configure, gayunpaman, maaari ring ibigay ni Ruby ang mga raw na na-record na mga larawan o lahat ng mga naayos na larawan (tingnan ang Seksyon 9.9).
Ang orihinal at naayos na mga larawan ng camera ay karaniwang ipinapadala na may monochrome bit-depth na 8 bits o 12 bits bawat pixel, o sa 8-bit RGB mode. Ang disparity map ay palaging ipinapadala na may kaunting lalim na 12 bits. Sa loob ng library, ang disparity map at anumang 12-bit na imahe ay pinalaki sa 16 bits, upang payagan ang mas mahusay na pagproseso.
Nagbibigay ang API ng tatlong klase na maaaring magamit para sa pagtanggap at pagpapadala ng data ng imahe:
· Ang ImageProtocol ay ang pinaka mababang antas ng interface. Ang klase na ito ay nagbibigay-daan para sa pag-encode at pag-decode ng mga set ng imahe sa / mula sa mga mensahe sa network. Kakailanganin mong pangasiwaan ang lahat ng komunikasyon sa network sa iyong sarili.
· Ang ImageTransfer ay nagbubukas ng isang network socket para sa pagpapadala at pagtanggap ng mga set ng imahe. Ang klase na ito ay single-threaded at sa gayon ay haharang kapag tumatanggap o nagpapadala ng data.
· Ang AsyncTransfer ay nagbibigay-daan para sa asynchronous na pagtanggap o pagpapadala ng mga set ng imahe. Lumilikha ang klase na ito ng isa o higit pang mga thread na humahawak sa lahat ng komunikasyon sa network.
Ang detalyadong impormasyon sa paggamit ng bawat klase ay makikita sa available na dokumentasyon ng API.
10.2 ImageTransfer Halample
Isang datingample para sa paggamit ng klase ng ImageTransfer sa C++ upang makatanggap ng mga resulta ng pagproseso sa network, at isulat ang mga ito sa imahe files, ay ipinapakita sa ibaba.
1https://nerian.com/support/software/
45

10.2 ImageTransfer Halample

10 IMPORMASYON SA PAGGAMIT NG API

Ang source code na ito file ay bahagi ng paglabas ng source code ng API. Mangyaring sumangguni sa dokumentasyon ng API para sa karagdagang impormasyon sa paggamit ng ImageTransfer at para sa halamples sa Python.

#include < visiontransfer / deviceenumeration . h> #include < visiontransfer / imagetransfer . h> #include < visiontransfer / imageset . h> #isama #isama #isama

#ifdef _MSC_VER // Visual studio #definesnprintf #endif

ay hindi dumating _snprintf_s

kasama

snprintf

gamit ang namespace visiontransfer ;

int main () { // Maghanap para sa Nerian stereo devices DeviceEnumeration deviceEnum ; DeviceEnumeration : : DeviceList devices = deviceEnum . discoverDevices ( ) ; i f ( d e v i c e s . s i z e ( ) == 0 ) { s t d : : c o u t << “No d e v i c e s d i s c o v e r e d ! ” << s t d : : e n d l ; return -1; }

// Print devices std : : cout << ” D iscovereddevices : ” << std : : endl ; para sa ( unsignedinti = 0 ; i < device . size ( ); i ++) {
std : : cout << device [ i ]. sa S tring ( ) << std : : endl ; } std : : cout << std : : endl ;

// Lumikha ng isang bagay sa paglilipat ng imahe na tumatanggap ng data mula sa // ang unang natukoy na device ImageTransfer imageTransfer ( mga device [ 0 ] ) ;

// Tumanggap ng 100 larawan para sa ( int imgNum=0; imgNum<100; imgNum++) {
std : : cout << ” R tumatanggap na set ng imahe ” << imgNum << std : : endl ;

// Receive image ImageSet imageSet ; habang (! imageTransfer . receiveImageSet ( imageSet )) {
// Ipagpatuloy ang pagsubok hanggang sa maging matagumpay ang pagtanggap }

// Isulat ang lahat ng kasamang larawan ng isa-isa para sa ( inti = 0 ; i < imageSet . getNumberOfImages ( ); i ++) {
// I-reate ang PGM file

46

10.3 AsyncTransfer Halample

10 IMPORMASYON SA PAGGAMIT NG API

char filePangalan [100]; snprintf ( filePangalan , laki ng ( file N ame ) , ” image%03d_%d . pgm", ako,
imgNum);
imageSet . isulatPgmFile (ako, filePangalan ); } }
bumalik 0; }

10.3 AsyncTransfer Halample
Isang datingample para sa paggamit ng klase na AsyncTransfer sa C++ upang makatanggap ng mga resulta sa pagproseso sa network, at isulat ang mga ito sa imahe files, ay ipinapakita sa ibaba. Ang source code na ito file ay bahagi ng paglabas ng source code ng API. Mangyaring sumangguni sa dokumentasyon ng API para sa karagdagang impormasyon sa paggamit ng AsyncTransfer at para sa halamples sa Python.

#include < visiontransfer / deviceenumeration . h> #include < visiontransfer / asynctransfer . h> #include < visiontransfer / imageset . h> #isama #isama #isama

#ifdef _MSC_VER // Visual studio #definesnprintf #endif

ay hindi dumating _snprintf_s

kasama

snprintf

gamit ang namespace visiontransfer ;

int main () { try { // Maghanap para sa Nerian stereo devices DeviceEnumeration deviceEnum ; DeviceEnumeration : : DeviceList devices = deviceEnum . discoverDevices ( ) ; i f ( d e v i c e s . s i z e ( ) == 0 ) { s t d : : c o u t << “No d e v i c e s d i s c o v e r e d ! ” << s t d : : e n d l ; return -1; }

// Print devices std : : cout << ” D iscovereddevices : ” << std : : endl ; para sa ( unsignedinti = 0 ; i < device . size ( ); i ++) {
std : : cout << device [ i ]. sa S tring ( ) << std : : endl ; } std : : cout << std : : endl ;

47

10.4 3D Reconstruction

10 IMPORMASYON SA PAGGAMIT NG API

// Lumikha ng isang bagay sa paglilipat ng imahe na tumatanggap ng data mula sa // ang unang natukoy na aparato AsyncTransfer asyncTransfer ( mga aparato [ 0 ] ) ;
// Tumanggap ng 100 larawan para sa ( int imgNum=0; imgNum<100; imgNum++) {
std : : cout << ” R tumatanggap na set ng imahe ” << imgNum << std : : endl ;
// Receive image ImageSet imageSet ; habang (! asyncTransfer . collectReceivedImageSet ( imageSet ,
0.1 / timeout / )) { // Patuloy na subukan hanggang sa matagumpay ang pagtanggap }
// Isulat ang lahat ng kasamang larawan ng isa-isa para sa ( inti = 0 ; i < imageSet . getNumberOfImages ( ); i ++) {
// C reate PGM file char filePangalan [100]; snprintf ( filePangalan , laki ng ( file N ame ) , ” image%03d_%d . pgm", ako,
imgNum);
imageSet . isulatPgmFile (ako, filePangalan ); } } } catch ( const std : : exception& ex ) { std : : cerr << ” E xceptionoccurred : ” << ex . ano ( ) << std : : endl ; }
bumalik 0; }
10.4 3D Reconstruction
Gaya ng inilarawan sa Seksyon 7.2, ang mapa ng pagkakaiba ay maaaring gawing set ng mga 3D na puntos. Nangangailangan ito ng kaalaman sa disparity-to-depth mapping matrix Q (tingnan ang Seksyon 7.2), na ipinadala ni Ruby kasama ng bawat disparity map.
Ang isang na-optimize na pagpapatupad ng kinakailangang pagbabago, na gumagamit ng mga set ng pagtuturo ng SSE o AVX, ay ibinibigay ng API sa pamamagitan ng klase na Reconstruct3D. Ang klase na ito ay nagko-convert ng disparity map sa isang mapa ng 3D point coordinates. Pakitingnan ang dokumentasyon ng API para sa karagdagang detalye.
10.5 Parameter
Ang isang hiwalay na network protocol ay ginagamit para sa pagbabasa at pagsusulat ng mga parameter ng device. Ang protocol na ito ay ipinatupad ng DeviceParameters. Ang anumang mga parameter na binago sa pamamagitan ng protocol na ito ay ire-reset kung ang device ay na-reboot o kung ang user ay gagawa ng isang pagbabago ng parameter sa pamamagitan ng web interface.
48

11 IBINIGAY NA SOFTWARE
Larawan 31: Screenshot ng NVCom application.
11 Ibinigay na Software
11.1 NVCom
Kasama rin sa available na source code o binary software release ang NVCom client application, na ipinapakita sa Figure 31. Kapag ikaw mismo ang nag-compile ng application na ito, pakitiyak na mayroon kang mga library na OpenCV at Qt na naka-install. Nagbibigay ang NVCom ng mga sumusunod na tampok:
· Tuklasin ang mga Ruby device, view kanilang katayuan, at i-access ang kanilang setup. · Tumanggap at magpakita ng mga larawan at mga mapa ng pagkakaiba mula kay Ruby. · Magsagawa ng color-coding ng mga disparity na mapa. · Magbigay ng live na 3D pointcloud visualization. · Isulat ang natanggap na data sa files bilang mga imahe o 3D point cloud. Ang NVCom ay may kasamang GUI na nagbibigay ng access sa lahat ng mahahalagang function. Available ang mga mas advanced na feature sa pamamagitan ng mga opsyon sa command line, na nakalista sa Talahanayan 2. Ang mga opsyon sa command line ay maaari ding gamitin para sa pag-automate ng pag-record o pag-playback ng data. Maliban kung ang NVCom ay pinapatakbo sa non-graphical na mode, magbubukas ito ng GUI window na nagpapakita ng mga natanggap na larawan. Ang kasalukuyang ipinapakitang set ng imahe ay maaaring isulat sa disk sa pamamagitan ng pagpindot sa enter key o sa pamamagitan ng pag-click sa icon ng camera sa toolbar. Kapag pinindot ang space key o pag-click sa icon ng pag-record, ang lahat ng kasunod na mga imahe ay mase-save. Kapag isinara ang NVCom, ise-save nito ang kasalukuyang mga setting nito, na awtomatikong muling mai-load kapag ang NVCom ay inilunsad sa susunod na pagkakataon.
49

11.2 Producer ng GenICam GenTL

11 IBINIGAY NA SOFTWARE

Talahanayan 2: Magagamit na mga opsyon sa command line para sa NvCom.

-c VAL
-f FPS -w DIR -s DIR -n Non-graphical -p PORT -H HOST -t on/off -d -T -3 VAL
-z VAL -F -b on/off -h, tulong

Pumili ng scheme ng color coding (0 = walang kulay, 1 = pula / asul, 2 = bahaghari) Limitahan ang pagpapadala ng frame rate sa FPS Agad na isulat ang lahat ng larawan sa DIR Ipadala ang mga larawan mula sa ibinigay na direktoryo
Gamitin ang ibinigay na remote na port number para sa komunikasyon Gamitin ang ibinigay na remote hostname para sa komunikasyon I-activate / i-deactivate ang mga TCP transfers I-disable ang pagtanggap ng larawan Print frame timestamps Sumulat ng 3D point cloud na may mga distansyang hanggang VAL (0 = off) Itakda ang zoom factor sa VAL percent Tumakbo sa fullscreen mode Sumulat ng mga point cloud sa binary kaysa sa text na format Ipinapakita ang tulong na ito.

11.2 Producer ng GenICam GenTL
11.2.1 Pag-install
Ang magagamit na paglabas ng software ay karagdagang kasama ang isang software module na sumusunod sa pamantayan ng GenICam GenTL. Tinutukoy ng pamantayan ng GenTL ang isang generic na interface ng transport layer para sa pag-access ng mga camera at iba pang mga imaging device. Ayon sa kombensiyon ng pagbibigay ng pangalan ng GenICam, ang producer ng GenTL ay isang software driver na nagbibigay ng access sa isang imaging device sa pamamagitan ng interface ng GenTL. Ang consumer ng GenTL, sa kabilang banda, ay anumang software na gumagamit ng isa o higit pang mga producer ng GenTL sa pamamagitan ng interface na ito. Ang ibinigay na software module ay kumakatawan sa isang GenTL producer at maaaring gamitin sa anumang application software na gumaganap bilang isang consumer. Nagbibigay-daan ito para sa handa na pagsasama ng Ruby sa mga umiiral nang software suite ng machine vision tulad ng hal HALCON.
Depende sa bersyon na iyong na-download, ibinibigay ang producer bilang binary o bilang source code. Kung pipiliin mo ang paglabas ng source code, itatayo ang producer kasama ng iba pang bahagi ng software. Ang ginawa / na-download na binary ay pinangalanang nerian-gentl.cti. Upang matagpuan ng isang mamimili, ito file kailangang ilagay sa isang direktoryo na nasa path ng paghahanap ng GenTL. Tinukoy ang path ng paghahanap sa pamamagitan ng sumusunod na dalawang variable ng kapaligiran:
GENICAM_GENTL32_PATH: Paghahanap ng landas para sa 32-bit na mga producer ng GenTL. GENICAM_GENTL64_PATH: Paghahanap ng landas para sa 64-bit na mga producer ng GenTL.
Awtomatikong kino-configure ng binary Windows installer ang environment na ito

50

11.2 Producer ng GenICam GenTL

11 IBINIGAY NA SOFTWARE

mga variable. Kapag binubuo ang paglabas ng source code, mangyaring i-configure nang manu-mano ang mga variable ng kapaligiran.
11.2.2 Mga Virtual na Device
Kapag naitakda na ang path sa paghahanap, handa na ang producer na gamitin ng isang consumer. Para sa bawat Ruby ang producer ay nagbibigay ng limang virtual na device, na bawat isa ay naghahatid ng isang bahagi ng nakuhang data. Ang mga virtual na device na ito ay pinangalanan bilang mga sumusunod:
/color Nagbibigay ng kulay na imahe ng camera na ipinadala ni Ruby. Sa default na configuration, ito ang larawan pagkatapos mailapat ang pagwawasto at projection. Ang imahe ay naka-encode bilang isang RGB na imahe na may 8 bits bawat channel (RGB8).
/left Nagbibigay ng kaliwang larawan ng camera na ipinadala ni Ruby. Sa default na configuration, hindi available ang data stream na ito. Ang imahe ay naka-encode na may 8 o 12 bits bawat pixel (Mono8 o Mono12).
/right Nagbibigay ng tamang larawan ng camera. Sa default na configuration, hindi available ang data stream na ito. Ang larawan ay naka-encode sa Mono8 o Mono12 na format.
/disparity Nagbibigay ng disparity map na ipinadala ni Ruby. Hindi available ang data na ito kung naka-configure si Ruby sa pass through o rectify mode. Ang disparity map ay ipinapadala gamit ang isang hindi naka-pack na 12 bits per pixel encoding (Mono12).
/pointcloud Nagbibigay ng pagbabago ng disparity map sa isang 3D point cloud (tingnan ang Seksyon 7.2). Ang bawat punto ay kinakatawan ng tatlong 32-bit na floating point na mga numero na nag-encode ng x-, y- at z-coordinate (Coord3D_ABC32f).
/ Ang virtual na device na ito ay nagbibigay ng multi-part data stream na naglalaman ng lahat ng data na available sa pamamagitan ng iba pang mga device. Sa default na configuration, ibinibigay ng device na ito ang kaliwang larawan ng camera, ang disparity map at ang 3D point cloud.
Ang mga virtual na device /kulay, /kaliwa, /kanan at /disparity ay naghahatid ng hindi naprosesong data na natanggap mula kay Ruby. Ang data na nakuha sa pamamagitan ng /pointcloud device ay kinokwenta ng producer mula sa natanggap na disparity map. Ginagawa ito sa pamamagitan ng pagpaparami ng disparity map sa disparity-to-depth mapping matrix Q (tingnan ang Seksyon 7.2), na ipinadala ni Ruby kasama ng bawat pares ng imahe. Ang mga di-wastong pagkakaiba ay itinakda sa pinakamababang pagkakaiba at sa gayon ay nagreresulta sa mga puntong may napakalaking distansya.
Inirerekomenda na gamitin ang multi-part virtual device / kapag higit sa isang uri ng data ang kinakailangan. Ito ay magagarantiya na ang lahat ng data acquisition ay naka-synchronize. Kapag nangangailangan lamang ng isang uri ng data ng pag-input, ang paggamit ng nakalaang mga virtual na aparato ay ang pinaka mahusay na opsyon.
51

11.3 ROS Node

12 Suporta

11.2.3 Mga Device ID Lahat ng device ID na itinalaga ng producer ay URLs at binubuo ng mga sumusunod na sangkap:
protocol :// address / virtual device
Tinutukoy ng bahagi ng protocol ang pinagbabatayan na transport protocol na dapat gamitin para sa komunikasyon. Posible ang mga sumusunod na halaga:
udp: Gamitin ang walang koneksyon na UDP transport protocol para sa komunikasyon.
tcp: Gamitin ang connection oriented TCP transport protocol para sa komunikasyon.
Ang virtual na device ay dapat itakda sa isa sa mga pangalan ng device na nakalista sa nakaraang seksyon. Ilang examples para sa mga valid na device ID ay: udp://192.168.10.10/ pointcloud tcp://192.168.10.100/ left
11.3 ROS Node
Para sa pagsasama ni Ruby sa Robot Operating System (ROS), mayroong isang opisyal na ROS node. Ang node na ito ay tinatawag na nerian_stereo at makikita sa opisyal na ROS package repository. Ini-publish ng node ang computed disparity map at ang kaukulang 3D point cloud bilang mga paksa ng ROS. Higit pa rito, maaari itong mag-publish ng impormasyon sa pagkakalibrate ng camera at mga pagbabasa ng IMU.
Upang i-install ang node na ito mula sa mga ROS package server sa isang Ubuntu Linux system, mangyaring gamitin ang mga sumusunod na command: > sudo apt -get update > sudo apt -get install ros -`rosversion -d`-nerian -stereo
Ang detalyadong impormasyon sa node na ito ay matatagpuan sa kaukulang pahina ng ROS wiki2.
12 Suporta
Kung kailangan mo ng suporta sa paggamit ng Ruby, mangyaring gamitin ang aming forum ng suporta sa https://nerian.com/support/forum/ o makipag-ugnayan sa:
Nerian Vision GmbH Zettachring 2 70567 Stuttgart Germany
2http://wiki.ros.org/nerian_stereo
52

14 OPEN SOURCE IMPORMASYON
Telepono: +49 711 2195 9414 E-mail: service@nerian.com
Website: www.nerian.com
13 Impormasyon sa Warranty
Ang device ay binibigyan ng 2-taong warranty ayon sa German federal law (BGB). Mawawala ang warranty kung:
· Ang pabahay ay binuksan ng iba maliban sa opisyal na kawani ng serbisyo ng Nerian Vision Technologies.
· ang firmware ay binago o pinalitan, maliban sa mga opisyal na update ng firmware.
Sa kaso ng warranty mangyaring makipag-ugnay sa aming kawani ng suporta.
14 Open Source na Impormasyon
Ang firmware ni Ruby ay naglalaman ng code mula sa mga open source na aklatan at mga application na nakalista sa Talahanayan 3. Source code para sa mga bahagi ng software na ito at ang mga salita ng kaukulang mga lisensya ng software ay maaaring makuha mula sa open source na impormasyon website3. Ang ilan sa mga bahaging ito ay maaaring maglaman ng code mula sa iba pang open source na proyekto, na maaaring hindi nakalista dito. Para sa isang tiyak na listahan, mangyaring kumonsulta sa kaukulang mga pakete ng pinagmulan.
Ang mga sumusunod na organisasyon at indibidwal ay nag-ambag sa iba't ibang bahagi ng open source:
Free Software Foundation Inc., Emmanuel Pacaud, EMVA at mga kontribyutor, The Android Open Source Project, Red Hat Incorporated, University of California, Berkeley, David M. Gay, Christopher G. Demetriou, Royal Institute of Technology, Alexey Zelkin, Andrey A. Chernov, FreeBSD, SL Moshier, Citrus Project, Todd C. Miller, DJ Delorie, Intel Corporation, Henry Spencer, Mike Barcroft, Konstantin Chuguev, Artem Bityuckiy, IBM, Sony, Toshiba, Alex Tatmanjants, M. Warner Losh, Andrey A. Chernov, Daniel Eischen, Jon Beniston, ARM Ltd, CodeSourcery Inc, MIPS Technologies Inc, Intel Corporation, Willow Garage Inc., NVIDIA Corporation, Advanced Micro Devices Inc., OpenCV Foundation, Itseez Inc., The Independent JPEG Group, elibThomas G. Lane, Guido Vollbeding, SimonPierre Cadieux, Eric S. Raymond, Mans Rullgard, Cosmin Truta, Gilles Vollant, James Yu, Tom Lane, Glenn Randers-Pehrson, Willem van Schaik, John Bowler, Kevin Bracey, Sam Bushell, Magnus Holmgren, Greg Roelofs, Tom Tanner, Andreas Dilger, Dave Martindale, Guy Eric Schalnat, Paul Schmidt, Tim Wegner, Sam Leffler, Silicon Graphics, Inc. Industrial Light & Magic, University of Delaware, Martin Burnicki, Harlan Stenn, Danny Mayer, The PHP Group, OpenSSL Software Services, Inc., OpenSSL Software Foundation, Inc., Andy Polyakov, Ben Laurie, Ben Kaduk, Bernd Edlinger, Bodo Möller, David Benjamin, Emilia Käsper, Eric Young, Geoff Thorpe, Holger Reif, Kurt Roeckx, Lutz Jänicke, Mark J. Cox, Matt Caswell, Matthias St. Pierre, Nils Larsch, Paul Dale, Paul C. Sutton, Ralf S. Engelschall, Rich Salz, Richard Levitte, Stephen Henson, Steve Marquess, Tim Hudson, Ulf Möller, Viktor Dukhovni
3http://nerian.com/support/resources/scenescan-open-source/
53

14 OPEN SOURCE IMPORMASYON
Lahat ng mga may-akda na nag-aambag sa mga pakete na kasama sa PetaLinux. Mangyaring kunin ang buong listahan mula sa www.xilinx.com/petalinux.
Kung naniniwala kang dapat isama ang iyong pangalan sa listahang ito, mangyaring ipaalam sa amin.
54

14 OPEN SOURCE IMPORMASYON

Talahanayan 3: Mga bahagi ng open source.

Pangalan Aravis GenApi reference pagpapatupad libgpiod libwebmga socket ng Linux PTP ntp
OpenCV
OpenSSL PetaLinux PHP

Bersyon 0.6.4 patched 3.1.0 1.4 2.2 3.1 4.2.8p10
3.2.0
1.1.1d 2019.2 7.3.7

(mga) lisensya
GNU LGPL 2.0 GenICam License GNU LGPL 2.1 GNU LGPL 2.1 GNU GPL 2 BSD License MIT License BSD License libpng License JasPer License 2.0 BSD License Iba't ibang PHP License

55

Kasaysayan ng Pagbabago

14 OPEN SOURCE IMPORMASYON

Kasaysayan ng Pagbabago

Petsa ng Pagbabago

(Mga) May-akda Paglalarawan

v1.0

Setyembre 28, 2022 KS

v0.1

Agosto 23, 2022 KS

Paunang bersyon Preliminary draft

56

Mga Dokumento / Mga Mapagkukunan

nerian Ruby 3D Depth Camera [pdf] User Manual
Ruby 3D Depth Camera, Ruby 3D, Depth Camera, Camera
nerian Ruby 3D Depth Camera [pdf] User Manual
Ruby 3D Depth Camera, Ruby 3D, Depth Camera, Camera

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *