{"id":86,"date":"2024-04-04T08:01:29","date_gmt":"2024-04-04T05:01:29","guid":{"rendered":"https:\/\/sisu.ut.ee\/rosak\/ratasroboti-parameeriline-kirjeldus\/"},"modified":"2024-04-05T11:56:23","modified_gmt":"2024-04-05T08:56:23","slug":"ratasroboti-parameeriline-kirjeldus","status":"publish","type":"page","link":"https:\/\/sisu.ut.ee\/rosak\/ratasroboti-parameeriline-kirjeldus\/","title":{"rendered":"7. Ratasroboti parameetriline kirjeldus"},"content":{"rendered":"<blockquote>\r\n\t<p>\r\n\t\t<strong><span id=\"docs-internal-guid-1d5beb3d-7fff-096c-8518-d6453dc52586\">Selles \u00f5ppet\u00fckis vaatame, kuidas saab URDF mudelist luua paindliku ja kergesti muudetava XACRO mudeli. Loome XACRO formaadis kirjelduse eelnevas peat\u00fckis loodud robotimudelist.<\/span><\/strong>\r\n\t<\/p>\r\n\r\n\t<p>\r\n\t\t<em>Samm-sammulise juhendi vaatamiseks klikka harjutuse vahepealkirjadele.<\/em>\r\n\t<\/p>\r\n<\/blockquote>\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e4a-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e4a-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e4a-collapse\"><strong>1. Mis on XACRO?<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e4a-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e4a-heading\">\n            <div class=\"accordion-body\"><span id=\"docs-internal-guid-9e184a0a-7fff-db04-ce36-3b66a95833f6\">XACRO on <strong>XML-p\u00f5hine makrokeel<\/strong>, millega saab ROSi robotitele luua <strong>parametriseeritud mudeleid<\/strong>. H\u00e4sti organiseeritud XACRO olemasolu korral on roboti mudeli muutmine v\u00e4ga lihtne. URDF mudeli muutmine on t\u00fclikam, sest muudatusi peab tegema palju rohkemates kohtades.<\/span>\r\n\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-608d022f-7fff-33f4-18c7-f133e5d56184\">Kuna XACRO fail on k\u00f5rgema tasemega kui URDF, on roboti mudeli ROS-is kasutamiseks vaja XACRO teisendada klassikalisse URDF formaati. Selle jaoks saab kasutada <\/span><span style=\"font-family:Courier New,Courier,monospace\">xacro<\/span><span> k\u00e4sku, mis on ROSis algusest peale olemas.<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e51-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e51-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e51-collapse\"><strong>2. Ettevalmistused<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e51-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e51-heading\">\n            <div class=\"accordion-body\"><span id=\"docs-internal-guid-51032d3b-7fff-4b51-875e-d398efb8d953\">V\u00f5tame aluseks eelnevas peat\u00fckis loodud <\/span><span style=\"font-family:Courier New,Courier,monospace\">fourwheeler.urdf<\/span><span> faili. Liigume <\/span><span style=\"font-family:Courier New,Courier,monospace\">urdf<\/span><span> kausta ja teeme URDF failist koopia nimega <\/span><span><span style=\"font-family:Courier New,Courier,monospace\">fourwheeler.urdf.xacro<\/span>.<\/span>\r\n\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e55-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e55-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e55-collapse\"><strong>3. XACRO faili k\u00e4ivitamine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e55-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e55-heading\">\n            <div class=\"accordion-body\">XACRO formaadis kirjeldatud mudelit saame visualiseerida sama <span style=\"font-family:Courier New,Courier,monospace\">display.launch<\/span> faili abil, mille l\u00f5ime eelmisel sammul.\r\n\r\n\r\n<p>\r\n\tLeia \u00fcles eelnevalt loodud <span style=\"font-family:Courier New,Courier,monospace\">display.launch<\/span> fail ja muuda seda n\u00f5nda, et mudeli <span style=\"font-family:Courier New,Courier,monospace\">fourwheeler.urdf<\/span> asemel kasutataks mudelit <span style=\"font-family:Courier New,Courier,monospace\">fourwheeler.urdf.xacro<\/span>.\r\n<\/p>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-7fe90599-7fff-fdf9-0031-b2c74e692fa7\">K\u00e4ivita n\u00fc\u00fcd k\u00e4ivitusfail. <\/span><span>Avaneb RVizi aken, kus n\u00e4eme eelnevalt loodud robotimudelit.<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e58-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e58-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e58-collapse\"><strong>4. XACRO kirjutamine: eelt\u00f6\u00f6<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e58-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e58-heading\">\n            <div class=\"accordion-body\">Avame <span style=\"font-family:Courier New,Courier,monospace\">fourwheeler.urdf.xacro<\/span> faili endale meelep\u00e4rases tekstiredaktoris.\r\n\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-4efe5f5f-7fff-aeaa-8146-80c6a5710f97\">Selleks, et saaksime XACRO keelt oma failis kasutada, peame m\u00e4rgendile <\/span><span style=\"font-family:Courier New,Courier,monospace\">robot<\/span><span> lisama XACRO XML nimeruumi (<\/span><span style=\"font-family:Courier New,Courier,monospace\">xmlns<\/span><span>).<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\tNimeruumi lisamise koodijupp, mis tuleb paigutada \u00f5igesse kohta (vt allolevalt animatsioonilt):\r\n<\/p>\r\n\r\n<pre>xmlns:xacro=\"http:\/\/www.ros.org\/wiki\/xacro\"<\/pre>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e5b-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e5b-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e5b-collapse\"><strong>5. XACRO kirjutamine: miks?<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e5b-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e5b-heading\">\n            <div class=\"accordion-body\"><span>Roboti kirjeldus algab <\/span><span style=\"font-family:Courier New,Courier,monospace\">base_link<\/span><span> definitsiooniga. N\u00e4eme, et l\u00fcli geomeetria m\u00e4\u00e4ravad kolm arvu, mis on konstantsed (m\u00e4rgendiga <\/span><span style=\"font-family:Courier New,Courier,monospace\">box size<\/span><span>). Oletame, et oleme oma f\u00fc\u00fcsilise roboti kere suurust muutnud, ja robot on n\u00fc\u00fcd 20 cm laiem. Mudeli muutmiseks peame muutma roboti kere suuruse teist v\u00e4\u00e4rtust (suurus y-teljes). <strong>Anname sellele v\u00e4\u00e4rtuse <span style=\"font-family:Courier New,Courier,monospace\">0.320<\/span> asemel uue v\u00e4\u00e4rtuse <span style=\"font-family:Courier New,Courier,monospace\">0.520<\/span>.<\/strong><\/span>\r\n\r\n\r\n<p>\r\n\t<span>Kui aga vaatame n\u00fc\u00fcd uuendatud mudelit, n\u00e4eme, et rattad asuvad n\u00fc\u00fcd roboti kere sees. Oleks mugav, kui saaksime muuta roboti suurust selliselt, et rattad p\u00fcsiksid alati kere k\u00f5rval.<\/span><br><\/p><div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e5e-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e5e-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e5e-collapse\"><strong>6. XACRO muutujate loomine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e5e-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e5e-heading\">\n            <div class=\"accordion-body\"><img loading=\"lazy\" decoding=\"async\" width=\"873\" height=\"291\" class=\"alignnone wp-image-209\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/4wheeler_drawings.png\" title=\"4wheeler_drawings.png\" alt=\".\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/4wheeler_drawings.png 873w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/4wheeler_drawings-300x100.png 300w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/4wheeler_drawings-768x256.png 768w\" sizes=\"auto, (max-width: 873px) 100vw, 873px\">\r\n\r\n\r\n<p>\r\n\t<span>Selleks, et saavutada mudel, kus kere suuruse muutumisel paigutuvad ka rattad \u00fcmber, saame kasutada <strong>XACRO<\/strong> <strong>muutujaid<\/strong> (ingl k. <\/span><em><span>property<\/span><\/em><span>).<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-5501a1db-7fff-37d0-a605-2c23049bba59\">Kui oleme korra muutuja v\u00e4\u00e4rtuse m\u00e4\u00e4ranud, saame edaspidi lasta XACRO-l kasutada mitmes kohas sama muutujat. Kui hiljem on vaja muutuja v\u00e4\u00e4rtust korrigeerida, peame seda tegema ainult seal, kus muutuja on defineeritud.<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-7850822e-7fff-649d-b1ab-2e8965203195\">Teeme muutuja kere laiuse (<\/span><span style=\"font-family:Courier New,Courier,monospace\">base_width<\/span><span>) jaoks. Saame seda teha m\u00e4rgendiga <\/span><span style=\"font-family:Courier New,Courier,monospace\">xacro:property<\/span><span>, millele j\u00e4rgnevad nimi (<\/span><span style=\"font-family:Courier New,Courier,monospace\">name<\/span><span>) ja v\u00e4\u00e4rtus (<\/span><span style=\"font-family:Courier New,Courier,monospace\">value<\/span><span>).<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-a51dfef8-7fff-0924-c6f0-941508d8ea9f\">Lisame muutujad ka rataste raadiuse ja laiuse jaoks.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e62-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e62-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e62-collapse\"><strong>7. Ettevalmistus aritmeetikaks<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e62-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e62-heading\">\n            <div class=\"accordion-body\"><span id=\"docs-internal-guid-1c17e83d-7fff-8b57-9e5a-9d025e028dd0\">Vahepeal on kasulik teha ka muutujaid, mis ei ole tingimata ise otseselt m\u00f5ne dimensiooni suurus. Vaatame \u00fcht sellist.<\/span>\r\n\r\n\r\n<p>\r\n\t<span>Lisame veel \u00fche muutuja, millele paneme nimeks <\/span><span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span><span> \u2013 see muutub meile hiljem kasulikuks.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e67-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e67-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e67-collapse\"><strong>8. XACRO muutujad aritmeetikaga ja muutujate kasutamine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e67-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e67-heading\">\n            <div class=\"accordion-body\"><span><span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span> muutuja n\u00e4itab kaugust y-teljes kere keskkoha ja ratta keskkoha vahel. Tahame, et rattad paikneksid t\u00e4pselt kere vasaku ja parema k\u00fclje vastas. Sel juhul on peab <\/span><span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span><span> muutuja v\u00e4\u00e4rtus olema poole kere laiuse ja poole ratta laiuse summa. Saame selle arvutuse jaoks kasutada juba loodud muutujaid.<\/span>\r\n\r\n\r\n<p>\r\n\t<span>XACRO muutujate ja aritmeetika kasutamiseks pannakse muutujanimed ja nendega sooritatavad tehted loogeliste sulgude vahele ning k\u00f5ige ette sisestatakse <span style=\"font-family:Courier New,Courier,monospace\">$<\/span>-s\u00fcmbol. Nt muutuja kasutamisel <span style=\"font-family:Courier New,Courier,monospace\">${muutujanimi}<\/span> v\u00f5i aritmeetilise tehte korral <span style=\"font-family:Courier New,Courier,monospace\">${muutuja1 + muutuja2}<\/span>.<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<span>N\u00fc\u00fcd saame m\u00e4\u00e4rata <span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span> v\u00e4\u00e4rtuse kui poole kere laiuse ja poole ratta laiuse summa.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-1a86c1e4-7fff-39b9-8360-797505d09f45\">Kuna kere laius on n\u00fc\u00fcd muutuja (<\/span><span style=\"font-family:Courier New,Courier,monospace\">base_width<\/span><span>), saame seni konstandina m\u00e4\u00e4ratud laiuse asendada vastava muutuja nimega.<\/span>\r\n<\/p>\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e6c-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e6c-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e6c-collapse\"><strong>9. Rattad muutujatega<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e6c-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e6c-heading\">\n            <div class=\"accordion-body\"><span id=\"docs-internal-guid-f1422c8c-7fff-f333-2bf6-7bbb1692849f\">J\u00e4tame praegu alles eesmise vasakpoolse ratta (<\/span><span style=\"font-family:Courier New,Courier,monospace\">front_left_wheel<\/span><span>), ja kustutame k\u00f5igi muude rataste l\u00fclid ja liigendid.<\/span>\r\n\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-26c2a6c9-7fff-43ba-ba36-7a720079d1cc\">N\u00fc\u00fcd saame kasutada <\/span><span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span><span> muutujat, et joondada ratas kere vasaku k\u00fcljega. Selleks tuleb vasakut ratast kerega \u00fchendavas liigendis asendada y-koordinaat <\/span><span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span><span> muutujaga. Lisaks kasutame ratta laiuse ja raadiuse m\u00e4\u00e4ramiseks muutujaid <\/span><span style=\"font-family:Courier New,Courier,monospace\">wheel_width<\/span><span> ja <\/span><span style=\"font-family:Courier New,Courier,monospace\">wheel_radius<\/span><span>.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-f0d502e8-7fff-8d1b-6b93-ede0605ad518\">N\u00fc\u00fcd tasub kontrollida, kas roboti vasak esiratas on kerega korrektselt joondatud ja kas selle suurus on \u00f5ige. Tulemus v\u00f5iks olla n\u00e4iteks selline:<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"640\" class=\"alignnone wp-image-218\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/7_2_result.png\" title=\"7_2_result.png\" alt=\".\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/7_2_result.png 855w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/7_2_result-300x225.png 300w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/560\/7_2_result-768x575.png 768w\" sizes=\"auto, (max-width: 855px) 100vw, 855px\">\r\n<\/p>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-25d8a41c-7fff-2b8f-d07d-f9fa21c3ae4e\">Kui muudame roboti kere laiust v\u00f5i ratta m\u00f5\u00f5tmeid, n\u00e4eme, et mudel on juba paindlikum kui enne. Aga mis saab teistest ratastest?<\/span>\r\n<\/p>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e70-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e70-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e70-collapse\"><strong>10. XACRO makrode loomine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e70-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e70-heading\">\n            <div class=\"accordion-body\"><span id=\"docs-internal-guid-943c79d7-7fff-9ee9-d8ea-19f38d33aa49\">Meie roboti rattad on k\u00f5ik \u00fchesugused. Ning URDFi korral pidime iga ratta eraldi kirjeldama ja seej\u00e4rel iga ratta eraldi liigendiga roboti kerega siduma. XACRO abil saame seda protsessi automatiseerida. Selleks defineerime makro, mida saame korduvalt v\u00e4lja kutsuda. Makro toimib samamoodi nagu programmeerimises funktsioon (v\u00f5i meetod). Igal makrol on teatud sisendparameetrid, mille v\u00e4\u00e4rtus antakse makro v\u00e4ljakutsel.<\/span>\r\n\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-26335c3f-7fff-ee04-515a-49eae522ab09\">Loome siinkohal makro, mis kirjeldab ratta ja selle liigendi, mille abil ratas kere k\u00fclge kinnitub. Selleks \u00fcmbritseme ratta ja seotud liigendi kirjelduse <\/span><span style=\"font-family:Courier New,Courier,monospace\">macro<\/span><span> m\u00e4rgenditega. Anname makrole unikaalse nime <span style=\"font-family:Courier New,Courier,monospace\">wheel<\/span> ja m\u00e4\u00e4rame sisendparameetriks ratta nime (<span style=\"font-family:Courier New,Courier,monospace\">wheel_name<\/span>). Kuna l\u00fcli ja liigendi nimed on iga ratta puhul erinevad, m\u00e4\u00e4rame esimeseks parameetriks ratta nime (<\/span><span style=\"font-family:Courier New,Courier,monospace\">wheel_name<\/span><span>). Kohtades, kus ratta kirjelduses esineb ratta nimi, asendame ratta nime parameetri nimega. Selleks kasutame sama <span style=\"font-family:Courier New,Courier,monospace\">${parameetri_nimi}<\/span> s\u00fcntaksit nagu muutujate puhul.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e77-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e77-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e77-collapse\"><strong>11. XACRO makrode kasutamine<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e77-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e77-heading\">\n            <div class=\"accordion-body\"><span id=\"docs-internal-guid-6c35a0af-7fff-4fb0-785c-aa561fd58799\">Makro v\u00e4ljakutsumiseks kasutame m\u00e4rgendit <\/span><span style=\"font-family:Courier New,Courier,monospace\">xacro:&lt;makro nimi&gt;<\/span><span>, millele j\u00e4rgnevad makro nimi ja vajalikud parameetrid, nt <span style=\"font-family:Courier New,Courier,monospace\">&lt;<\/span><\/span><span><span style=\"font-family:Courier New,Courier,monospace\">xacro:wheel wheel_name=\u201dfront_left_wheel\u201d\/&gt;<\/span>.<\/span>\r\n\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-10e3ebbb-7fff-a997-90b4-e13829e040d8\">Selleks, et ratta makroga loodavad rattad asuksid kummalgi pool kere, piisab kui vahetame ratta asukoha y-koordinaadil m\u00e4rgi. See animatsioon n\u00e4itab, kuidas rataste asukohtade koordinaadid omavahel seotud on:<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<span>Lisame ratta ehk <span style=\"font-family:Courier New,Courier,monospace\">wheel<\/span>-makro p\u00e4isesse uue parameetri nimega <span style=\"font-family:Courier New,Courier,monospace\">reflect_y<\/span>, mida kasutame nii, et vasakpoolsete rataste jaoks korrutame <\/span><span style=\"font-family:Courier New,Courier,monospace\">half_track<\/span><span> muutujaga m\u00e4\u00e4ratud koordinaadi <span style=\"font-family:Courier New,Courier,monospace\">1<\/span>-ga ja parempoolsete rataste jaoks <span style=\"font-family:Courier New,Courier,monospace\">-1<\/span>-ga. Makro sees muudame liigendi y-koordinaadi arvutustehteks <\/span><span style=\"font-family:Courier New,Courier,monospace\">half_track * reflect_y<\/span><span>. Kuna muutsime makro kirjelduse p\u00e4ist, siis tuleb muuta ka neid ridu, kus makrot v\u00e4lja kutsutakse.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<span id=\"docs-internal-guid-fc87e1cc-7fff-2e33-f942-e24ac2b04fe3\">Mudeli visualiseerimisel n\u00e4eme, et m\u00f5lemad esirattad on n\u00fc\u00fcd joondatud kere k\u00fclgedega. Nende k\u00f5igi suurust on v\u00f5imalik muuta korraga, asendades <\/span><span style=\"font-family:Courier New,Courier,monospace\">wheel_width<\/span><span> v\u00f5i <\/span><span style=\"font-family:Courier New,Courier,monospace\">wheel_radius<\/span><span> muutuja v\u00e4\u00e4rtuse uue v\u00e4\u00e4rtusega.<\/span>\r\n<\/p>\r\n\r\n<div class=\"h5p-iframe-wrapper\"><div class=\"video-placeholder-wrapper video-placeholder-wrapper--fixed\" style=\"height: 366px;\">\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>\r\n\r\n<p>\r\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n\r\n<p>\r\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69db8a9f60e7c-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69db8a9f60e7c-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69db8a9f60e7c-collapse\"><strong>12. Neli ratast<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69db8a9f60e7c-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69db8a9f60e7c-heading\">\n            <div class=\"accordion-body\">Tekita robotile ka tagumised rattad, lisades makrole veel \u00fche parameetri <span style=\"font-family:Courier New,Courier,monospace\">reflect_x<\/span>.<\/div>\n        <\/div>\n        <\/div>\n    <\/div>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Selles \u00f5ppet\u00fckis vaatame, kuidas saab URDF mudelist luua paindliku ja kergesti muudetava XACRO mudeli. Loome XACRO formaadis kirjelduse eelnevas peat\u00fckis loodud robotimudelist. Samm-sammulise juhendi vaatamiseks klikka harjutuse vahepealkirjadele. 1. Mis on XACRO? XACRO on XML-p\u00f5hine makrokeel, millega saab ROSi robotitele &#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-86","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/86","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=86"}],"version-history":[{"count":14,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/86\/revisions"}],"predecessor-version":[{"id":421,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/86\/revisions\/421"}],"wp:attachment":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/media?parent=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}