{"id":58,"date":"2021-03-14T04:33:59","date_gmt":"2021-03-14T04:33:59","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/?p=58"},"modified":"2021-03-14T04:33:59","modified_gmt":"2021-03-14T04:33:59","slug":"sebastiens-status-report-for-3-13-2021","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/2021\/03\/14\/sebastiens-status-report-for-3-13-2021\/","title":{"rendered":"Sebastien&#8217;s Status Report for 3\/13\/2021"},"content":{"rendered":"<p>This week I implemented a significant portion of the our system&#8217;s pipeline, which is more or less a wrapper of threads and synchronization around the CV and drawing code (the part that maintains a mask of pixels to be applied to every frame).\u00a0I quickly discovered that build, dependency management, and a lot of other things are quite clunky and tedious when using C++ compared to Rust, a language I am more comfortable with, so I used Rust for this instead. But since OpenCV itself is written in C++, I wrote some foreign-function-interface (FFI) bindings and a well-defined (and typed \ud83d\ude00) function signature for our CV models, which will be written in C++, to implement. In other words, the pipeline code can simply call functions written in C++ that perform any CV \/ ML tasks using OpenCV and return their respective outputs. And we can use Rust&#8217;s wonderful build, dependency management, installation, and testing tool, cargo, to compile and link the C++ code as well without any makefiles or mess of headers.<\/p>\n<p>During the process I gathered more specific details about the each of the system&#8217;s functional blocks, how exactly to do the thread synchronization, what parameters they take, and what data structures they use &#8211; which we can include in our design report, though all of these things may change in the future.<\/p>\n<p>Right now the C++ model functions are just dummies that always return the same result, since right now my focus is making sure that we can get from a camera feed of frames to ((x,y), gesture_state) pairs to a virtual loopback camera, and to have it be fast and free of concurrency bugs. At this point I&#8217;ve got the FFI (mostly) working and a rough first pass at thread synchronization working as well. Next week I&#8217;ll be fixing that minor FFI bug and working on the loopback camera.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week I implemented a significant portion of the our system&#8217;s pipeline, which is more or less a wrapper of threads and synchronization around the CV and drawing code (the part that maintains a mask of pixels to be applied to every frame).\u00a0I quickly discovered that build, dependency management, and a lot of other things &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/2021\/03\/14\/sebastiens-status-report-for-3-13-2021\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Sebastien&#8217;s Status Report for 3\/13\/2021&#8221;<\/span><\/a><\/p>\n","protected":false},"author":428,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/posts\/58"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/users\/428"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"predecessor-version":[{"id":59,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/posts\/58\/revisions\/59"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s21-teamc8\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}