{"id":3557,"date":"2023-07-20T08:31:44","date_gmt":"2023-07-20T08:31:44","guid":{"rendered":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?page_id=3557"},"modified":"2023-12-07T09:19:31","modified_gmt":"2023-12-07T09:19:31","slug":"joy-radio-2-7","status":"publish","type":"page","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?page_id=3557","title":{"rendered":"Zestaw do MOCAPu"},"content":{"rendered":"<p>Autorzy:&nbsp;<strong>Rafa\u0142 \u0141upi\u0144ski<\/strong> (3gi rok Fizyki gier komputerowych i robot\u00f3w)<br>Zaawansowanie: prototyp dzia\u0142a, zaprezentowany w fina\u0142ach konkursu ZTGK w \u0141odzi, temat pracy licencjackiej.<\/p>\n<p>MOCAP &#8211; czyli Motion Capture, to technika przechwytywania ruchu polegaj\u0105ca na nagrywaniu ruch\u00f3w aktora i ich p\u00f3\u017aniejszym odtworzeniu w postaci animacji postaci komputerowej. Animacje tego typu wykorzystuje si\u0119 g\u0142\u00f3wnie w przemy\u015ble gier wideo lub w kinematografii. Najpopularniejsze obecnie zestawy sk\u0142adaj\u0105 si\u0119 z zestawu kamer ustawionych z kilku stron pomieszczenia. Aktor ubrany jest w specjalny ciemny kombinezon pokryty jasnymi odblaskowymi punktami. Specjalne, p\u0142atne oprogramowanie analizuje obraz z kamer odczytuj\u0105c ruch aktora i odtwarzaj\u0105c go w \u015brodowisku graficznym. Koszt takiego zestawu waha si\u0119 w przedziale od 25k do 500k dolar\u00f3w. Cena zale\u017cy od producenta i stopnia zaawansowania konkretnego zestawu. To troch\u0119 du\u017co&#8230; wi\u0119c:<\/p>\n<p><iframe loading=\"lazy\" title=\"Przechwytywanie ruchu (motion capture) z MPU6050 i Blenderem\" width=\"720\" height=\"405\" src=\"https:\/\/www.youtube.com\/embed\/L75caA-xt84?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p>Projekt dotyczy sprawdzenia mo\u017cliwo\u015bci wykorzystania w technice Motion Capture&nbsp; <strong>tanich \u017cyroskop\u00f3w i akcelerometr\u00f3w<\/strong>. W tym celu wybrano niewielki <strong>uk\u0142ad scalony MPU6050<\/strong>, b\u0119d\u0105cy cyfrowym \u017cyroskopem i akcelerometrem. W warstwie sprz\u0119towej wykorzystano r\u00f3wnie\u017c platform\u0119 Arduino UNO. Oprogramowanie oparto o otwarto \u017ar\u00f3d\u0142owe \u015brodowisko Arduino IDE oraz Blender a tak\u017ce w\u0142asne kody zbieraj\u0105ce dane (programowanie w j\u0119zyku C++) i je wizualizuj\u0105ce(programowanie w j\u0119zyku python).<\/p>\n<div id=\"attachment_3564\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3564\" class=\"wp-image-3564 size-medium\" src=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig09-300x251.jpg\" alt=\"MPU6050\" width=\"300\" height=\"251\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig09-300x251.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig09-1024x856.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig09-768x642.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig09-1536x1284.jpg 1536w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig09-2048x1712.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-3564\" class=\"wp-caption-text\">MPU6050 to niewielki uk\u0142ad scalony (o wymiarach 4x4x0.9mm) \u0142\u0105cz\u0105cym w sobie: tr\u00f3josiowy \u017cyroskop, tr\u00f3josiowy akcelerometr a tak\u017ce wewn\u0119trzny termometr. Do komunikacji wykorzystuje magistral\u0119 I2C.<\/p><\/div>\n<div id=\"attachment_3574\" style=\"width: 310px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3574\" class=\"wp-image-3574 size-medium\" src=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/blender-logo-design-300x188.jpg\" alt=\"\" width=\"300\" height=\"188\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/blender-logo-design-300x188.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/blender-logo-design-768x480.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/blender-logo-design-436x272.jpg 436w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/blender-logo-design.jpg 820w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-3574\" class=\"wp-caption-text\">Wykorzystujemy darmowy i otwarto\u017ar\u00f3d\u0142owy program BLENDER &#8211; posiada mo\u017ciwo\u015b\u0107 programowania w pythonie!<\/p><\/div>\n<div id=\"attachment_3568\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3568\" class=\"wp-image-3568 size-full\" src=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-scaled.jpg\" alt=\"Arduino UNO + MPU6050 _ Blender.\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-scaled.jpg 2560w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-300x225.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-1024x768.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-768x576.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-1536x1152.jpg 1536w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig30-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-3568\" class=\"wp-caption-text\">Pierwsze pr\u00f3by dzia\u0142ania MPU6050 z blenderem &#8211; do wizualizacji po\u0142o\u017cenia.<\/p><\/div>\n<p align=\"justify\">Adres MPU6050 sk\u0142ada si\u0119 z siedmiu bit\u00f3w. Pierwsze sze\u015b\u0107 z nich jest niezmienne i ustalane przez producenta w trakcie produkcji. Ostatni bit ma domy\u015blnie warto\u015b\u0107 0 i jest po\u0142\u0105czony z jednym z wyprowadze\u0144 uk\u0142adu. Poprzez podanie na to wyprowadzenie stanu wysokiego mo\u017cna zmieni\u0107 warto\u015b\u0107 ostatniego bitu adresu na 1. W rezultacie urz\u0105dzenie mo\u017ce przyj\u0105\u0107 jedynie adres 0x68 w przypadku stanu niskiego i 0x69 w przypadku stanu wysokiego (podane warto\u015bci wyra\u017cone s\u0105 w systemie szesnastkowym). Aby pod\u0142\u0105czy\u0107 wi\u0119cej ni\u017c dwa MPU6050 do Arduino Uno wyprowadzenia ostatniego bitu adresu pod\u0142\u0105czone zosta\u0142y do osobnych pin\u00f3w cyfrowych p\u0142ytki Arduino Uno. Piny te ustawione zosta\u0142y jako wyj\u015bcia sygna\u0142u poprzez <tt class=\"w\u0142asny-styl-kodowania\">pinMode( n, OUTPUT )<\/tt>, gdzie n oznacza numer pinu.<\/p>\n<div id=\"attachment_3569\" style=\"width: 310px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3569\" class=\"wp-image-3569 size-medium\" src=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig38-300x284.png\" alt=\"Kilka sztuk wi\u0119cej MPU6050 pod\u0142\u0105czonych do Arduino.\" width=\"300\" height=\"284\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig38-300x284.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig38-1024x968.png 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig38-768x726.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig38.png 1215w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-3569\" class=\"wp-caption-text\">Kilka sztuk wi\u0119cej MPU6050 pod\u0142\u0105czonych do Arduino.<\/p><\/div>\n<p align=\"justify\">Domy\u015blnie warto\u015b\u0107 wszystkich wyj\u015b\u0107 cyfrowych ustawiona by\u0142a na warto\u015b\u0107 0 nadaj\u0105c wszystkim uk\u0142adom adres 0x68. W Arduino IDE zadeklarowana zosta\u0142a tablica obiekt\u00f3w dla wszystkich<i> <\/i>uk\u0142ad\u00f3w<i> <\/i>poprzez <tt class=\"w\u0142asny-styl-kodowania\">MPU6050 mpu[5](0x69)<\/tt> o adresie 0x69 ka\u017cdy. Przed komunikacj\u0105 z konkretnym uk\u0142adem Arduino UNO zmieni stan wyj\u015bcia cyfrowego pod\u0142\u0105czonego do tego uk\u0142adu na 1 korzystaj\u0105c z <tt class=\"w\u0142asny-styl-kodowania\">digitalWrite( n, HIGH )<\/tt>, gdzie n oznacza numer pinu cyfrowego, zmieniaj\u0105c tym samym adres urz\u0105dzenia na 0x69. W rezultacie pozosta\u0142e urz\u0105dzenia zignoruj\u0105 komunikacj\u0119 ze wzgl\u0119du na inny adres. Po sko\u0144czonej komunikacji z danym uk\u0142adem po\u0142\u0105czone z nim wyj\u015bcie cyfrowe ustawiane jest na 0 przywracaj\u0105c mu adres 0x68. W ten spos\u00f3b do jednej p\u0142ytki Arduino UNO pod\u0142\u0105czy\u0107 mo\u017cna wiele uk\u0142ad\u00f3w MPU6050 a ich liczba ograniczona b\u0119dzie teraz przez ilo\u015b\u0107 dost\u0119pnych pin\u00f3w cyfrowych.<\/p>\n<div id=\"attachment_3570\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3570\" class=\"wp-image-3570 size-full\" src=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-scaled.jpg 2560w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-300x225.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-1024x768.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-768x576.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-1536x1152.jpg 1536w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig39-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-3570\" class=\"wp-caption-text\">AKTOR &#8211; czyli mega cierpliwy pomocnik w projekcie. Na plecach nosi Arduino UNO, r\u0119ce po 2 czujniki MPU6050, korpus to jeden MPU &#8211; w sumie 5 sztuk MPU.<\/p><\/div>\n<p>Samo pod\u0142\u0105czenie czujnik\u00f3w do Aktora nie wystarczy &#8211; trzeba rozwi\u0105za\u0107 kilka &#8222;drobnych&#8221; problem\u00f3w:<\/p>\n<ul>\n<li>poprawnie odczytywa\u0107 orientacj\u0119 czujnika w przestrzeni<\/li>\n<li>zaplanowa\u0107 wzajemne po\u0142o\u017cenia czujnik\u00f3w&nbsp;<\/li>\n<li>czujniki &#8222;szumi\u0105&#8221;, czyli produkuj\u0105 dane nie nadaj\u0105ce si\u0119 od razu do u\u017cycia &#8211; nale\u017cy je filtrowa\u0107, wi\u0119c<\/li>\n<li>zastosowano filtr Kalmana do &#8222;czyszczenia&#8221; danych, oraz<\/li>\n<li>obliczania orientacji z \u017cyroskopu, akcelerometru, a tak\u017ce z po\u0142\u0105czenia \u017cyroskopu i akcelerometru. Wyniki (o dziwo!) by\u0142y zadowalaj\u0105ce, ale<\/li>\n<li>uk\u0142ad MPU6050 posiada wbudowan\u0105 &#8222;czarn\u0105 skrzynk\u0119&#8221; &#8211; uk\u0142ad DMP (Digital Motion Processor). Stosuj\u0105c algorytmy MotionFusionTM \u0142\u0105czy on ze sob\u0105 pomiary z \u017cyroskopu i akcelerometru wykorzystuj\u0105c je do \u015bledzenia orientacji uk\u0142adu &#8211; lepiej, ni\u017c wspomniane wy\u017cej w\u0142asne metody. Ostatecznie w\u0142a\u015bnie wykorzystano DMP.<\/li>\n<li>transmija szeregowa z Arduino do PC i ostatecznie do BLENDERA wymaga\u0142a stworzenia prostego protoko\u0142u przesy\u0142 danych. Taki protok\u00f3\u0142 by\u0142 oczywi\u015bcie binarny (w odr\u00f3\u017cnieniu od przesy\u0142ania liczb jako napisy), dzi\u0119ki czemu transmisja okaza\u0142a si\u0119 wystarczaj\u0105co szybka &#8211; zreszt\u0105 sam por\u00f3wnaj z filmikiem na YT.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3571\" src=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-scaled.jpg 2560w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-300x225.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-1024x768.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-768x576.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-1536x1152.jpg 1536w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2023\/12\/fig40-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Projekt bra\u0142 udzia\u0142 w konkursie <a href=\"https:\/\/gry.it.p.lodz.pl\/main\/index.php\/pl\/\" target=\"_blank\" rel=\"noopener\">Zespo\u0142owego Tworzenia Gier Komputerowych<\/a> (ZTGK) na Politechnice \u0141\u00f3dzkiej w czerwcu 2023 r. &#8211; zakwalifikowa\u0142 si\u0119 do fina\u0142\u00f3w. Nie uda\u0142o si\u0119 zdoby\u0107 wyr\u00f3\u017cnienia, za to mn\u00f3stwo pochwa\u0142, uznania i nowych pomys\u0142\u00f3w na rozbudow\u0119 tematu zdecydowanie rekompensuj\u0105 trudy w\u0142o\u017cone w udzia\u0142 w konkursie.<\/p>\n<p>&nbsp;<\/p>\n<p>Praca licencjacka: <strong>&#8222;Zastosowanie \u017cyroskop\u00f3w i akcelerometr\u00f3w w technice przechwytywania ruchu i komputerowej animacji szkieletowej&#8221; &#8211; <\/strong><a href=\"https:\/\/www.youtube.com\/watch?v=L75caA-xt84\" target=\"_blank\" rel=\"noopener\">link do YT<\/a><strong>.<\/strong><\/p>\n<p style=\"text-align: right;\"><em>(c) R.\u0141., K.G. 2023<\/em><\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autorzy:&nbsp;Rafa\u0142 \u0141upi\u0144ski (3gi rok Fizyki gier komputerowych i robot\u00f3w)Zaawansowanie: prototyp dzia\u0142a, zaprezentowany w fina\u0142ach konkursu ZTGK w \u0141odzi, temat pracy licencjackiej. MOCAP &#8211; czyli Motion Capture, to technika przechwytywania ruchu polegaj\u0105ca na nagrywaniu ruch\u00f3w aktora i ich p\u00f3\u017aniejszym odtworzeniu w postaci animacji postaci komputerowej. Animacje tego typu wykorzystuje si\u0119 g\u0142\u00f3wnie w przemy\u015ble gier wideo lub [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":3571,"parent":1715,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-3557","page","type-page","status-publish","has-post-thumbnail","hentry","post","post-with-thumbnail","post-with-thumbnail-large"],"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/pages\/3557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3557"}],"version-history":[{"count":13,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/pages\/3557\/revisions"}],"predecessor-version":[{"id":3585,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/pages\/3557\/revisions\/3585"}],"up":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/pages\/1715"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/3571"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}