{"id":82,"date":"2024-04-04T08:01:29","date_gmt":"2024-04-04T05:01:29","guid":{"rendered":"https:\/\/sisu.ut.ee\/rosak\/kinemaatika-rosis\/"},"modified":"2024-04-04T08:03:55","modified_gmt":"2024-04-04T05:03:55","slug":"kinemaatika-rosis","status":"publish","type":"page","link":"https:\/\/sisu.ut.ee\/rosak\/kinemaatika-rosis\/","title":{"rendered":"3. Kinemaatika ROSis"},"content":{"rendered":"<blockquote>\n<p>\n\t\t<span id=\"docs-internal-guid-eddabd20-7fff-2cc2-4548-c8c1191d447e\">Nagu paljude muude robootika peamiste ehituskividega, pakub ROS meile ka robotite kinemaatika kirjeldamiseks standardiseeritud t\u00f6\u00f6vahendeid. Robotite kinemaatika kirjeldamiseks saame kasutada t\u00f6\u00f6vahendit nimega <strong>URDF (<em>Unified Robot Description Format<\/em><\/strong><\/span><span><strong>)<\/strong>.<\/span><span> URDF on keel, mille abil saame kirjeldada, <strong>millistest l\u00fclidest<\/strong> robot koosneb ning <strong>kuidas<\/strong> need l\u00fclid teineteise suhtes <strong>liiguvad<\/strong>. Kuna ROSi \u00fcks juhtm\u00f5te on maksimaalselt \u00e4ra kasutada olemasolevat, siis tugineb URDF \u00fclilevinud m\u00e4rgenduskeelele XML (eXtensible Markup Language).<\/span>\n\t<\/p>\n<p>\n\t\t<em>\u00d5ppematerjali vaatamiseks klikka vahepealkirjadele.<\/em>\n\t<\/p>\n<\/blockquote>\n<p dir=\"ltr\" id=\"docs-internal-guid-1d12f276-7fff-0f51-42cc-5bdd0fb1646a\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:12pt\">\n\t<\/p><div class=\"accordion mb-3\">\n        <div class=\"accordion-item accordion-item--white\">\n        <h2 class=\"accordion-header\" id=\"accordion-69d28005885db-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69d28005885db-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69d28005885db-collapse\"><strong>XMLi p\u00f5hit\u00f5ed<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69d28005885db-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69d28005885db-heading\">\n            <div class=\"accordion-body\"><span>ROSis on meie eesm\u00e4rk j\u00f5uda v\u00f5rdlemisi kiiresti XMLi kasutamiseni, seega ei pea me esialgu s\u00fc\u00fcbima v\u00e4ga s\u00fcgavale, et m\u00f5ista, mis on XML. Oluline on j\u00e4tta meelde, et t\u00e4nu XMLile saame arvutite jaoks info struktureerida ja anda sellele konteksti. Seda tehakse, kasutades infot ennast ning seda raamivat metainfot.<\/span>\n\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:12pt;margin-bottom:12pt\">\n\t<span>V\u00f5tame n\u00e4iteks \u00fche isiku Roberta, kes on 42 aastat vana. Mis infot ja ja metainfot saame sellest lausest v\u00e4lja v\u00f5tta? Teeme n\u00e4iteks sellise tabeli:<\/span>\n<\/p>\n<table class=\"table table-hover\" style=\"width: 500px\" cellspacing=\"1\" cellpadding=\"1\" border=\"1\">\n<thead>\n<tr>\n<th scope=\"col\">\n\t\t\t\tMetainfo\n\t\t\t<\/th>\n<th scope=\"col\">\n\t\t\t\tInfo\n\t\t\t<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n\t\t\t\tNimi\n\t\t\t<\/td>\n<td>\n\t\t\t\tRoberta\n\t\t\t<\/td>\n<\/tr>\n<tr>\n<td>\n\t\t\t\tVanus\n\t\t\t<\/td>\n<td>\n\t\t\t\t42\n\t\t\t<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\n\t<span>Et sama info panna kirja xml-faili, v\u00f5ime avada lihtsa tekstifaili ja kirjutada sinna:<\/span>\n<\/p>\n<pre><span>&lt;nimi&gt;Roberta&lt;\/nimi&gt;\r\n&lt;vanus&gt;42&lt;\/vanus&gt;<\/span><\/pre>\n<p>\n\t<span>Nagu n\u00e4eme, siis metainfo on nurksulgude <span style=\"font-family:Courier New,Courier,monospace\">&lt;&gt;<\/span> vahel. Ka m\u00e4rkame, et info alguse ja l\u00f5pu piiritlemiseks on metainfo m\u00e4rgendeid alati kaks: <span style=\"font-family:Courier New,Courier,monospace\">&lt;nimi&gt;<\/span> (avanev m\u00e4rgend) ja <span style=\"font-family:Courier New,Courier,monospace\">&lt;\/nimi&gt;<\/span> (sulgev m\u00e4rgend, mida t\u00e4histab <span style=\"font-family:Courier New,Courier,monospace\">\/<\/span>-m\u00e4rk p\u00e4rast esimest nurksulgu). Sedasi on alati \u00fchem\u00f5tteliselt selge, et nende kahe m\u00e4rgendi vahel on kirjas nimi.<\/span>\n<\/p>\n<p>\n\t<span>Taolise m\u00e4rgendamise j\u00f5ud muutub aga eriti ilmseks, kui avastame, et m\u00e4rgendid saab grupeerida t\u00e4iendavate m\u00e4rgendite abil. Hetkel on eespool toodud n\u00e4ite <span style=\"font-family:Courier New,Courier,monospace\">&lt;nimi&gt;<\/span> ja <span style=\"font-family:Courier New,Courier,monospace\">&lt;vanus&gt;<\/span> lihtsalt kaks rida, mida ei seo omavahel miski, aga kui grupeerime nt <span style=\"font-family:Courier New,Courier,monospace\">&lt;isik&gt;<\/span>-m\u00e4rgendi abil, saame kirjeldada eri isikute omadusi. Allj\u00e4rgnev struktuur \u00fctleb meile, et nii <span style=\"font-family:Courier New,Courier,monospace\">&lt;nimi&gt;<\/span> kui ka <span style=\"font-family:Courier New,Courier,monospace\">&lt;vanus&gt;<\/span> k\u00e4ivad \u00fche ja sama isiku kohta, sest <span style=\"font-family:Courier New,Courier,monospace\">&lt;isik&gt;<\/span> m\u00e4rgend suletakse (<span style=\"font-family:Courier New,Courier,monospace\">&lt;\/isik&gt;<\/span> m\u00e4rgendi abil) alles p\u00e4rast nime ja vanuse kirjeldamist.<\/span>\n<\/p>\n<pre dir=\"ltr\" style=\"line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt\"><span>&lt;isik&gt;<\/span>\r\n<span>    &lt;nimi&gt;Roberta&lt;\/nimi&gt;<\/span>\r\n<span>    &lt;vanus&gt;42&lt;\/vanus&gt;<\/span>\r\n<span>&lt;\/isik&gt;<\/span><\/pre>\n<p>\n\t<span>Kui selline info esitlus v\u00f5ib inimesele tunduda t\u00fc\u00fctu, siis masinate jaoks muutub pilt \u00fchem\u00f5tteliseks. See aga tagab selle, et masinad saavad infost \u201c\u00f5igesti\u201d aru. <\/span>\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-69d28005885fc-heading\">\n            <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#accordion-69d28005885fc-collapse\" aria-expanded=\"true\" aria-controls=\"accordion-69d28005885fc-collapse\"><strong>URDFi p\u00f5hit\u00f5ed<\/strong><\/button>\n        <\/h2>\n        <div id=\"accordion-69d28005885fc-collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"accordion-69d28005885fc-heading\">\n            <div class=\"accordion-body\">Kui XML on m\u00f5eldud mistahes info m\u00e4rgendamiseks, siis URDF kasutab XML-i, et saavutada \u00fchtne moodus robotite kinemaatika kirjeldamiseks. Seda kirjeldust saavad siis vajadusel kasutada k\u00f5ik need ROSi s\u00f5lmed, mis peavad l\u00e4htuma roboti kinemaatikast. Seega on URDF m\u00f5eldud ainult \u00fcheks konkreetseks \u00fclesandeks ning ta kasutab selleks XML-i.\n\n<p>\n\t<span id=\"docs-internal-guid-e845a19f-7fff-37a8-fcef-52a15a14d07c\">URDF-i abil soovime kirjeldada k\u00f5ik robotite l\u00fclid ja nende vahelised liigendid. Igal l\u00fclil saab olla teatavaid omadusi ning igal liigendil saab olla mingi kogus omadusi, kuid k\u00f5ige laiemas plaanis j\u00e4rgib roboti URDF-kirjeldus j\u00e4rgnevat struktuuri:<\/span>\n<\/p>\n<pre dir=\"ltr\" style=\"line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt\"><span>&lt;robot name=\"minu_robot\"&gt;<\/span>\r\n<span>  &lt;link&gt; ... &lt;\/link&gt;<\/span>\r\n<span>  &lt;link&gt; ... &lt;\/link&gt;<\/span>\r\n<span>  &lt;link&gt; ... &lt;\/link&gt;<\/span>\r\n<span>  &lt;joint&gt;  ...  &lt;\/joint&gt;<\/span>\r\n<span>  &lt;joint&gt;  ...  &lt;\/joint&gt;<\/span>\r\n<span>  &lt;joint&gt;  ...  &lt;\/joint&gt;<\/span>\r\n<span>&lt;\/robot&gt;<\/span><\/pre>\n<p>\n\t<span id=\"docs-internal-guid-f13923a9-7fff-f09f-5b95-3583480b508d\">Nagu n\u00e4eme, siis robot koosneb kindlast arvust l\u00fclidest (ingl <em>link<\/em>) ja liigenditest (<em>joint<\/em>). Ja k\u00f5ik, mis tuleb t\u00e4psustavalt kirjeldada iga l\u00fcli ja liigendi jaoks, peab masinale looma tervikliku pildi selle kohta, milline n\u00e4eb iga l\u00fcli v\u00e4lja ja kuidas liigend v\u00f5imaldab kahel erineval l\u00fclil omavaheliselt liikuda. Just seda teadmist hoiamegi endaga kaasas, kui hakkame j\u00e4rgnevalt robotite URDF-kirjelduste loomist harjutama.<\/span>\n<\/p>\n<p>\n\t<\/p><\/div>\n        <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nagu paljude muude robootika peamiste ehituskividega, pakub ROS meile ka robotite kinemaatika kirjeldamiseks standardiseeritud t\u00f6\u00f6vahendeid. Robotite kinemaatika kirjeldamiseks saame kasutada t\u00f6\u00f6vahendit nimega URDF (Unified Robot Description Format). URDF on keel, mille abil saame kirjeldada, millistest l\u00fclidest robot koosneb ning kuidas &#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-82","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/82","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=82"}],"version-history":[{"count":1,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/82\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/pages\/82\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/sisu.ut.ee\/rosak\/wp-json\/wp\/v2\/media?parent=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}