{"id":63,"date":"2024-04-04T08:01:26","date_gmt":"2024-04-04T05:01:26","guid":{"rendered":"https:\/\/sisu.ut.ee\/rosak\/robotont-ja-porgandid\/"},"modified":"2024-04-04T08:03:56","modified_gmt":"2024-04-04T05:03:56","slug":"robotont-ja-porgandid","status":"publish","type":"page","link":"https:\/\/sisu.ut.ee\/rosak\/robotont-ja-porgandid\/","title":{"rendered":"Kodut\u00f6\u00f6. Robotont ja porgandid"},"content":{"rendered":"<blockquote>\n<p>\n\t\t<strong>Selles harjutuses paneme robotondi iseseisvalt s\u00f5itma \u00fche oran\u017ei porgandi juurest teise juurde, siis kolmanda juurde ja n\u00f5nda edasi.<\/strong>\n\t<\/p>\n<p>\n\t\tSelleks uurime kolme erinevat ROSi kimpu ja paneme nad k\u00f5ik koos t\u00f6\u00f6tama.\n\t<\/p>\n<p>\n\t\t<strong>Selle harjutuse sooritamiseks on vaja:<\/strong>\n\t<\/p>\n<ul>\n<li>\n\t\t\t<strong>T\u00f6\u00f6tavat robotondi robotit<\/strong>\n\t\t<\/li>\n<li>\n\t\t\t<strong>Oran\u017eide porganditega keskkonda, kus ei ole muid oran\u017ee objekte<\/strong>\n\t\t<\/li>\n<\/ul>\n<p>\n\t\t<em><span>Samm-sammulise juhendi vaatamiseks klikka harjutuse vahepealkirjadele.<\/span><\/em>\n\t<\/p>\n<\/blockquote>\n<ul>\n<\/ul>\n<p>\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db882eb7208-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db882eb7208-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db882eb7208-collapse\"><strong>1. Mida me teha tahame?<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db882eb7208-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db882eb7208-heading\">\n            <div class=\"accordion-body\">Harjutuse l\u00f5puks tahame saavutada j\u00e4rgmist: tahame, et robotont otsiks enda \u00fcmbruskonnast \u00fcles oran\u017ei porgandi ja s\u00f5idaks selle juurde. Kui ta on porgandi juurde j\u00f5udnud, siis tahame, et ta otsiks m\u00f5ne teise porgandi ning s\u00f5idaks selle juurde. Niimoodi j\u00e4tkab ta seni, kuni programm peatatakse.\n\n<p>\n\tVaata l\u00f5pptulemust sellest videost:\n<\/p>\n<p>\n\t<\/p><div class=\"ratio ratio-16x9 mb-3\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--16x9\">\n\t\t\t    <div class=\"video-placeholder d-flex justify-content-center align-items-center\">\n\t\t\t        <div class=\"overlay text-white p-2 w-100 text-center d-block justify-content-center align-items-center\">\n\t\t\t            <div>Kolmandate osapoolte sisu n\u00e4gemiseks palun n\u00f5ustu k\u00fcpsistega.<\/div>\n\t\t\t            <button class=\"btn btn-secondary btn-sm mt-1 consent-change\">Muuda n\u00f5usolekut<\/button>\n\t\t\t        <\/div>\n\t\t\t    <\/div>\n\t\t\t<\/div>\n<\/div>\n\n<p>\n\tSelle tulemuse saavutamiseks paneme omavahel koos t\u00f6\u00f6tama <strong>kolm s\u00f5lme<\/strong>:\n<\/p>\n<ol>\n<li>\n\t\tS\u00f5lm, mis v\u00f5tab kaamerast pildi ja kuulutab saadud pilti m\u00f5nes rubriigis.\n\t<\/li>\n<li>\n\t\tS\u00f5lm, mis kuulab rubriiki, kus on kaamera pildid, ja leiab neilt oran\u017eid porgandid.\n\t<\/li>\n<li>\n\t\tS\u00f5lm, mis v\u00f5tab tuvastatud porgandite asukohad ja paneb roboti nende j\u00e4rgi s\u00f5itma.\n\t<\/li>\n<\/ol>\n<p>\n\tVaatame neid \u00fckshaaval.\n<\/p>\n<p>\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\n\n<p>\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db882eb7210-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db882eb7210-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db882eb7210-collapse\"><strong>2. Kaamera pilt<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db882eb7210-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db882eb7210-heading\">\n            <div class=\"accordion-body\">Robotondi robotil t\u00f6\u00f6tab s\u00f5lm, mis kuulutab kindlasse rubriiki kaamerast tulnud v\u00e4rvilist pilti.\n\n<p>\n\tKasutame ROSi t\u00f6\u00f6riistu, et leida sobiv rubriik:\n<\/p>\n<pre>rostopic list<\/pre>\n<p>\n\tN\u00e4eme rubriikide hulgas rubriiki nimega <span style=\"font-family:Courier New,Courier,monospace\">\/camera\/color\/image_raw_throttled<\/span>. Kasutame seda, et saada k\u00e4tte soovitud pilt.\n<\/p>\n<blockquote class=\"os-punane\">\n<h4>\n\t\tEttevaatust!<br>\n\t<\/h4>\n<p>\n\t\t\u00c4ra kasuta rubriiki <span style=\"font-family:Courier New,Courier,monospace\">\/camera\/color\/image_raw<\/span>. See jooksutab suure andmemahu t\u00f5ttu s\u00fcsteemi kokku.\n\t<\/p>\n<\/blockquote>\n<p>\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\n\n<p>\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db882eb7215-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db882eb7215-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db882eb7215-collapse\"><strong>3. Laigutuvastaja paigaldamine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db882eb7215-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db882eb7215-heading\">\n            <div class=\"accordion-body\">Porgandeid on k\u00f5ige lihtsam tuvastada v\u00e4rvi j\u00e4rgi: kui porgandid on oran\u017eid ja \u00fcmbruskonnas teisi sama v\u00e4rvi objekte ei ole, siis v\u00f5ib robot lihtsalt leida k\u00f5ik oran\u017ei v\u00e4rvi objektid ja need ongi otsitavad porgandid.\n\n<p>\n\tSelleks kasutame <strong>laigutuvastajat (<em>blob detector<\/em>)<\/strong>.\n<\/p>\n<p>\n\tLaigutuvastaja kasutamiseks kasutame ROSi kimpu nimega <strong>opencv_apps<\/strong>. T\u00e4psemini soovime kasutada versiooni, milles sisaldub laigutuvastaja: seet\u00f5ttu ei saa me seda installida k\u00e4sureat\u00f6\u00f6riistaga <span style=\"font-family:Courier New,Courier,monospace\">apt<\/span>, vaid <strong>kompileerime selle l\u00e4htekoodist<\/strong>.\n<\/p>\n<p>\n\t<strong>Navigeeri terminaliga catkini t\u00f6\u00f6ruumis kausta <\/strong><span style=\"font-family:Courier New,Courier,monospace\">src<\/span><strong>, kuhu paigutatakse ROSi kimpude l\u00e4htekood.<\/strong> Vajadusel kontrolli k\u00e4suga <span style=\"font-family:Courier New,Courier,monospace\">pwd<\/span>, et oled \u00f5iges asukohas.\n<\/p>\n<p>\n\t<strong>Klooni endale laigutuvastajat sisaldava kimbu l\u00e4htekood <\/strong><strong>j\u00e4rgmiste k\u00e4skudega:<\/strong>\n<\/p>\n<pre>git clone https:\/\/github.com\/ut-ims-robotics\/opencv_apps.git\r\ncd opencv_apps\r\ngit checkout blob_detection_nodelet<\/pre>\n<p>\n\t<strong>Kompileeri catkini t\u00f6\u00f6ruum ja laadi see.<\/strong>\n<\/p>\n<p>\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\n\n<p>\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db882eb721e-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db882eb721e-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db882eb721e-collapse\"><strong>4. Laigutuvastaja kasutamine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db882eb721e-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db882eb721e-heading\">\n            <div class=\"accordion-body\">Kimp <span style=\"font-family:Courier New,Courier,monospace\">opencv_apps<\/span> ei ole m\u00f5eldud vaid porgandite tuvastamiseks. Selleks, et laigutuvastaja leiaks \u00fcles just porgandid, on meil vaja programmile \u00f6elda, et ta otsiks justnimelt oran\u017ei v\u00e4rvi. Selleks ava tekstiredaktoriga kimbu <span style=\"font-family:Courier New,Courier,monospace\">opencv_apps<\/span> alamkaustas <span style=\"font-family:Courier New,Courier,monospace\">config<\/span> tekstifail nimega <span style=\"font-family:Courier New,Courier,monospace\">blob_detection_config.yaml<\/span>.\n\n<p>\n\tFailis n\u00e4ed mitmeid parameetreid. Porgandite tuvastamiseks leia neist j\u00e4rgmised viis ja anna neile j\u00e4rgmised v\u00e4\u00e4rtused:\n<\/p>\n<pre>hue_lower_limit: 5\r\nhue_upper_limit: 20\r\n...\r\nmin_area: 20\r\n...\r\nsat_lower_limit: 160\r\n...\r\nval_lower_limit: 100\r\n<\/pre>\n<p>\n\tNeed v\u00e4\u00e4rtused t\u00e4hendavad, et tuvastatakse objekte, mis <strong>HSV v\u00e4rviruumis<\/strong> j\u00e4\u00e4vad vahemikku, mis vastab oran\u017eile toonile, ning otsime oran\u017ei ala, mis ei ole v\u00e4ga v\u00e4ike.\n<\/p>\n<p>\n\t\u00c4ra unusta faili p\u00e4rast muudatuste tegemist salvestada.\n<\/p>\n<p>\n\t<strong>Katseta tulemust<\/strong>, k\u00e4ivitades <span style=\"font-family:Courier New,Courier,monospace\">opencv_apps<\/span>-nimelise kimbu k\u00e4ivitusfaili nimega <span style=\"font-family:Courier New,Courier,monospace\">blob_detection.launch<\/span> n\u00f5nda, et argumendi <span style=\"font-family:Courier New,Courier,monospace\">debug_mode<\/span> v\u00e4\u00e4rtuseks on antud <span style=\"font-family:Courier New,Courier,monospace\">deploy<\/span> ning argumendi <span style=\"font-family:Courier New,Courier,monospace\">image<\/span> v\u00e4\u00e4rtuseks antud <strong>varasemalt leitud kaamera pildi rubriik<\/strong> (asenda <span style=\"font-family:Courier New,Courier,monospace\">kirjuta_siia_kaamera_pildi_rubriik<\/span> sellega):\n<\/p>\n<pre>roslaunch opencv_apps blob_detection.launch debug_mode:=deploy image:=kirjuta_siia_kaamera_pildi_rubriik<\/pre>\n<p>\n\tArgumendi <span style=\"font-family:Courier New,Courier,monospace\">debug_mode<\/span> v\u00e4\u00e4rtus <span style=\"font-family:Courier New,Courier,monospace\">deploy<\/span> paneb selle k\u00e4ivitusfaili kasutama yaml-faili, millesse lisasime eelnevalt oran\u017ei v\u00e4rvi tuvastamiseks vajaliku info. Argumendi <span style=\"font-family:Courier New,Courier,monospace\">image<\/span> v\u00e4\u00e4rtus aga m\u00e4\u00e4rab, missugust rubriiki kasutatakse pildi allikana.\n<\/p>\n<blockquote class=\"os-kollane\">\n<h4>\n\t\tAga kui mul ei t\u00f6\u00f6ta?<br>\n\t<\/h4>\n<p>\n\t\tKas <strong>kompileerisid<\/strong> ja seej\u00e4rel ka <strong>laadisid<\/strong> catkini t\u00f6\u00f6ruumi?\n\t<\/p>\n<\/blockquote>\n<p>\n\tKui k\u00f5ik on l\u00e4inud h\u00e4sti, siis saad n\u00fc\u00fcd ROSi t\u00f6\u00f6riistu kasutades leida, et on tekkinud rubriik nimega <span style=\"font-family:Courier New,Courier,monospace\">\/blob_detection\/blobs<\/span>, kuhu kuulutab s\u00f5lm nimega <span style=\"font-family:Courier New,Courier,monospace\">blob_detection<\/span>. <strong>Kasuta ROSi t\u00f6\u00f6riistu, et pealt kuulata selles rubriigis kuulutatud s\u00f5numeid.<\/strong> Kui roboti vaatev\u00e4ljas on oran\u017e porgand, siis peaks k\u00e4ivitatud s\u00f5lm tuvastama selle asukoha.\n<\/p>\n<p>\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\n\n<p>\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db882eb7227-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db882eb7227-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db882eb7227-collapse\"><strong>5. Liikumise kontroll<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db882eb7227-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db882eb7227-heading\">\n            <div class=\"accordion-body\">Viimase asjana on meil vaja midagi, mis paneks roboti liikuma tuvastatud porgandite juurde.\n\n<p>\n\tSelleks kasutame <a data-url=\"https:\/\/github.com\/unitartu-edu\/carrot_follower\" href=\"https:\/\/github.com\/unitartu-edu\/carrot_follower\" target=\"_blank\" title=\"https:\/\/github.com\/unitartu-edu\/carrot_follower\" rel=\"noopener\">v\u00e4ga v\u00e4ikest ROSi kimpu<\/a>, mis sisaldab sisuliselt vaid \u00fcht Pythoni faili. Selle k\u00e4ivitamisel tellib s\u00f5lm \u00fcht rubriiki, v\u00f5tab sealt oran\u017ei laigu asukoha ja liigub selle juurde. Siis keerab robot end vastup\u00e4eva, leiab j\u00e4rgmise laigu ning s\u00f5idab selle juurde.\n<\/p>\n<p>\n\t<strong>Navigeeri terminaliga j\u00e4lle catkini t\u00f6\u00f6ruumis kausta <\/strong><span style=\"font-family:Courier New,Courier,monospace\">src<\/span><strong>, kuhu paigutatakse ROSi kimpude l\u00e4htekood.<\/strong> Vajadusel kontrolli k\u00e4suga <span style=\"font-family:Courier New,Courier,monospace\">pwd<\/span>, et oled \u00f5iges asukohas. Sisesta j\u00e4rgmine k\u00e4sk kimbu l\u00e4htekoodi allalaadimiseks:\n<\/p>\n<pre>git clone https:\/\/github.com\/unitartu-edu\/carrot_follower.git<\/pre>\n<p>\n\t<strong>Kompileeri catkini t\u00f6\u00f6ruum ja laadi see.<\/strong>\n<\/p>\n<p>\n\t<strong>Leia, mis on uues kimbus asuva k\u00e4ivitatava Pythoni-faili nimi <\/strong>(see l\u00f5ppeb faililaiendiga <span style=\"font-family:Courier New,Courier,monospace\">.py<\/span>)<strong>. K\u00e4ivita see s\u00f5lm \u00f5ige ROSi k\u00e4suga (lisaks peab kusagil jooksma laigutuvastaja s\u00f5lm).<\/strong>\n<\/p>\n<p>\n\t<strong>Kasuta ROSi vahendeid, et leida, mis rubriiki tellib \u00e4sja k\u00e4ivitatud s\u00f5lm.<\/strong> N\u00e4ed, et see ei ole t\u00e4pselt sama, mis rubriik, kuhu kuulutatakse tuvastatud laikude asukohti.\n<\/p>\n<p>\n\tPeata s\u00f5lm ja <strong>k\u00e4ivita see uuesti<\/strong>, aga seekord nii, et <strong>s\u00f5lm telliks rubriiki, kus on p\u00e4riselt oran\u017eide laikude asukohad<\/strong>.\n<\/p>\n<p>\n\tKui k\u00f5ik l\u00e4ks \u00f5igesti, siis s\u00f5idab robot n\u00fc\u00fcd porgandite vahet.\n<\/p>\n<blockquote class=\"os-kollane\">\n<h4>\n\t\tMidagi on valesti! Mis teha?<br>\n\t<\/h4>\n<p>\n\t\tKui midagi on valesti, siis v\u00f5id <strong>kasutada ROSi k\u00e4sureat\u00f6\u00f6riistu<\/strong>, et leida:\n\t<\/p>\n<ul>\n<li>\n\t\t\tKas k\u00f5ik vajalikud s\u00f5lmed on k\u00e4ivitatud?\n\t\t<\/li>\n<li>\n\t\t\tKas iga s\u00f5lm kuulutab sellesse rubriiki, kuhu peaks, ja tellib seda rubriiki, mida peaks?\n\t\t<\/li>\n<li>\n\t\t\tKas olulistesse rubriikidesse j\u00f5uavad s\u00f5numid?\n\t\t<\/li>\n<li>\n\t\t\tKas nendes s\u00f5numites sisaldub soovitud info?\n\t\t<\/li>\n<\/ul>\n<\/blockquote>\n<p>\n\tKui soovid n\u00e4ha, mida robotont n\u00e4eb, siis k\u00e4ivita<strong> <\/strong>j\u00e4rgmine k\u00e4sk:\n<\/p>\n<pre>rviz -d ~\/catkin_ws\/src\/carrot_follower\/config\/watch_carrots.rviz<\/pre>\n<p>\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Selles harjutuses paneme robotondi iseseisvalt s\u00f5itma \u00fche oran\u017ei porgandi juurest teise juurde, siis kolmanda juurde ja n\u00f5nda edasi. Selleks uurime kolme erinevat ROSi kimpu ja paneme nad k\u00f5ik koos t\u00f6\u00f6tama. Selle harjutuse sooritamiseks on vaja: T\u00f6\u00f6tavat robotondi robotit Oran\u017eide porganditega &#8230;<\/p>\n","protected":false},"author":98,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-63","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/users\/98"}],"replies":[{"embeddable":true,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/comments?post=63"}],"version-history":[{"count":1,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/63\/revisions"}],"predecessor-version":[{"id":338,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/63\/revisions\/338"}],"wp:attachment":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/media?parent=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}