{"id":157,"date":"2020-11-21T23:06:54","date_gmt":"2020-11-22T04:06:54","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/?p=157"},"modified":"2020-11-21T23:06:54","modified_gmt":"2020-11-22T04:06:54","slug":"annas-status-update-for-11-21","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/2020\/11\/21\/annas-status-update-for-11-21\/","title":{"rendered":"Anna\u2019s Status Update for 11\/21"},"content":{"rendered":"<p><span style=\"font-weight: 400\">I spent this past week learning about SPI works on the Jetson, configuring the new MCP3008 ADC and the analog mics, and testing the setup. Unfortunately, even after all the research that had gone into choosing the MCP3008 and learning about SPI communication, I found that the MCP3008\u2019s 190kHz sampling rate drops to about 600Hz (so 200SPS per microphone\u2026) in reality. I did my best to maximize the sampling rate, knowing that the primary culprits for the immense slowdown were the SPI latency and the software. I tried messing with the SPI clock, but that seemed to have only minor effects. I then tried to speed up my code, first making the existing Python code as efficient as possible, and then trying to write a simple program in C. Neither got me anywhere near the 8kSPS rate we need, so I\u2019m sad to report that yet another audio implementation attempt has gone bust.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In my desperation to get something working, I went back to the USB microphones &#8212; I abandoned them earlier because the delay seems to change when a different number of processes is running on the Jetson, but I figured that, once we integrate, we could calculate the delay when everything (the CV, the motor control, etc.) is running and hardcode it into the acoustic location program. Unfortunately, PyAudio, despite working beautifully with two microphones, it gets incredibly angry when I try to read from a third microphone. There was about a 10-second delay in between readings, which really just made me want to sob. I at least take solace knowing that the USB microphone implementation works quite well with two microphones, so, if need be (and I hope it shouldn\u2019t have to come to this), we can fall back on that.<\/span><\/p>\n<p><span style=\"font-weight: 400\">However, there is hope! We discovered Isaac, NVIDIA\u2019s open platform for intelligent robots, that has a high-performance algorithm, or GEM, specifically for acoustic location. I read through the documentation and did some research on how it particularly works on the Nano (which is a little different than some of the other NVIDIA devices it works with). I got a good understanding of how to use it, so now I\u2019m just waiting for the ReSpeaker 4-mic array it was designed to work with to arrive. I know the constant changes for audio have been concerning (trust me, I can feel myself going bald from all of this), but given that this was made by NVIDIA for the Nano, I feel much more confident in this option. I intend to grind exceedingly hard on this this week.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I spent this past week learning about SPI works on the Jetson, configuring the new MCP3008 ADC and the analog mics, and testing the setup. Unfortunately, even after all the research that had gone into choosing the MCP3008 and learning about SPI communication, I found that the MCP3008\u2019s 190kHz sampling rate drops to about 600Hz (so 200SPS per microphone\u2026) in reality. I did my best to maximize the sampling rate, knowing that the primary culprits for the immense slowdown were&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/2020\/11\/21\/annas-status-update-for-11-21\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":331,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[6,4],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/posts\/157"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/users\/331"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/comments?post=157"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":158,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/posts\/157\/revisions\/158"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/media?parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/categories?post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teama3\/wp-json\/wp\/v2\/tags?post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}