{"id":38,"date":"2020-09-30T15:44:10","date_gmt":"2020-09-30T15:44:10","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/?p=38"},"modified":"2020-10-01T18:50:08","modified_gmt":"2020-10-01T18:50:08","slug":"reversed-udp-server-client-model","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/2020\/09\/30\/reversed-udp-server-client-model\/","title":{"rendered":"Alex\u2019s Status Update for October 3"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-66 size-large\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-content\/uploads\/sites\/120\/2020\/09\/Screen-Shot-2020-10-01-at-2.24.23-PM-1024x564.png\" alt=\"\" width=\"640\" height=\"353\" \/><\/p>\n<p><span style=\"font-weight: 400\">This week I finished the <strong>UDP Connection socket<\/strong> and <strong>Mock Muscle Controller<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400\">The development and testing was done in 4 parts:<\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400\">Made both <strong>UDP Streamer and Receiver in Python<\/strong>.<\/span><\/li>\n<li>Rewrote the <strong>Receiver in C#<\/strong> and tested its functionality.<\/li>\n<li>Integrated the <strong>Receiver in the Unity<\/strong> game.<\/li>\n<li>Wrote a <strong>Mock Muscle Controller<\/strong> that sends data from keyboard inputs using Streamer full testing.<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">This intermediate step of (2) was necessary because (3) has more complicated process, generally taking longer time to debug, so I did (2) to test the UDP functionality before dealing with Unity. (3) Integration with Unity was a longer process because the main thread was running the game scene, so I had to figure out getting the Receiver process into another thread. <\/span><span style=\"font-weight: 400\">(4) Lastly, to do final testing I made a Mock Muscle Controller that uses keyboard arrows on top of the Streamer to send a mock data to the Receiver.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The <strong>Mock Muscle Controller<\/strong> is nice because it <em>decouples the dependency with hardware, allowing us to work in paralle<\/em>l. This also can be used to decouple time measurements, such as measuring latency from UDP + Unity only.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In between I also had to rearrange our model diagram by reversing Server Client UDP model. Because the Streamer just streams data and does not need message back from Receiver, I changed the Receiver to be the UDP Server who binds to the address port and just listens for data from the Client.<\/span><\/p>\n<p><span style=\"font-weight: 400\">I also finished up step by step README sections in Github so that the project is easy to understand and reproducible.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Over the next week I hope to finish a basic setup of a MyoRun game, with basic endless runner functionality, random generation of maps, moving a character and avoiding obstacles.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week I finished the UDP Connection socket and Mock Muscle Controller The development and testing was done in 4 parts: Made both UDP Streamer and Receiver in Python. Rewrote the Receiver in C# and tested its functionality. Integrated the Receiver in the Unity game. Wrote a Mock Muscle Controller that sends data from keyboard inputs using Streamer full testing. This intermediate step of (2) was necessary because (3) has more complicated process, generally taking longer time to debug, so&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/2020\/09\/30\/reversed-udp-server-client-model\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":362,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,4],"tags":[5,6],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/posts\/38"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/users\/362"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":5,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":68,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/posts\/38\/revisions\/68"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb7\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}