रोबोट में तेजी से त्रिकोणमिति के लिए माइक्रोकंट्रोलर / सीपीयू?


15

यह चिंता का विषय है कि हार्डवेयर का वजन कम होता है, क्योंकि एक (वसा बिल्ली का आकार, 3 डीओएफ के साथ 6 पैर) चलने वाला रोबोट इसे चारों ओर ले जाना चाहिए। उस चलने की वजह से इसे बहुत अधिक त्रिकोणमिति (मैट्रिक्स गणित का उपयोग करना या मुझे यकीन नहीं है कि अभी तक निश्चित नहीं है) करने की आवश्यकता होगी और यह वह जगह है जहाँ से यह प्रश्न आता है।

PIC, Arduino या सस्ते AVR सब कुछ 100 / सेकंड की गणना करने और जड़ता और बाधा से बचने जैसी चीजों को ध्यान में रखते हुए, या यहां तक ​​कि मार्ग / चाल को ध्यान में रखते हुए तेजी से पर्याप्त नहीं है।

  • प्लान ए को रोबोट पर मस्तिष्क ले जाने के लिए है। यह माइक्रोप्रोसेसर, माइक्रो आईटीएक्स, नेटटॉप या अन्य हो; त्रिकोणमिति / मैट्रिक्स गणित तेजी से करने के लिए कुशल हार्डवेयर क्या है?

    मैंने ऑनलाइन खोज की और एवीआर, x86 या एआरएम माइक्रोकंट्रोलर्स के बारे में पता लगाने की उम्मीद की, लेकिन इसमें कोई किस्मत नहीं थी।

  • हेवी लिफ्टिंग करने के लिए प्लान बी को वाईफाई के माध्यम से x86 मशीन से कनेक्ट करना है। प्रोटोटाइपिंग के लिए भी बढ़िया है, लेकिन मैं यह पसंद करूंगा कि जब हार्डवेयर छोटा हो तो ए की योजना बनाने के लिए पलायन करें। लेकिन फिर भी, क्या डेस्कटॉप सीपीयू सबसे तेजी से त्रिकोणमिति कर सकता है?

  • योजना सी भार को वितरित करने के लिए है और प्रत्येक पैर के लिए एक शक्ति कुशल माइक्रोकंट्रोलर / कोर है, हालांकि यह कई कारणों से सबसे अच्छा समाधान नहीं है जैसे मुझे इसकी विस्तार-क्षमता पसंद है।

मैंने अभी तक इस्तेमाल की जाने वाली भाषा और / या लाइब्रेरी पर फैसला नहीं किया है, लेकिन पास्कल और सी ++ पसंद करते हैं।

(अधिक उपयुक्त टैग के लिए सुझावों का स्वागत है, मैं यहां नया हूं)


11
फ्लोटिंग पॉइंट मैथ एक जरूरी नहीं है। आप हमेशा साइन (या किसी अन्य फ़ंक्शन) तालिकाओं का निर्माण कर सकते हैं, उन्हें एक AVR के फ्लैश में डाल सकते हैं और निश्चित बिंदु गणना के साथ मूल्यों के बीच प्रक्षेपित कर सकते हैं। यह आपकी आवश्यकताओं के लिए पर्याप्त तेज़ हो सकता है।
क्रिस्टोफ

3
रीयलटाइम में भारी गणित के खो जाने के बजाय, मूल्यों का पूर्व-गणना करने और फिर उत्तर देखने के लिए एक सामान्य समाधान है। कई सीपीयू के बीच काम को वितरित करने का विचार भी अच्छा है, उदाहरण के लिए एक शक्तिशाली मास्टर सीपीयू और फिर एक प्रोसेसर प्रति पैर।
जॉन यू

2
आप रोबोटिक्स स्टैकएक्सचेंज साइट पर इस तरह का सवाल पूछने पर भी विचार कर सकते हैं ।
राकेटमग्नेट

1
प्लान बी बहुत तेजी से गणना करेगा, लेकिन वाईफाई पर संचार सबसे अधिक प्रदर्शन लाभ को मार देगा। क्या आपने usb के माध्यम से एंड्रॉइड फोन का उपयोग करने पर विचार किया है? यह एक बहुत अधिक कंप्यूटिंग शक्ति है बिना वाईफाई के
स्टीफन

1
फ्लोटिंग पॉइंट यूनिट वाला STM32F4 बोर्ड आपके आवेदन के लिए पर्याप्त लगता है। इसमें 64k CCM के साथ 128k SRAM है। यह 168MHz पर चल सकता है। एक 32-बिट फ़्लोटिंग पॉइंट गुणा केवल 1 सीपीयू चक्र लेता है ..
रिचइकियानल

जवाबों:


16

ऐसा नहीं लगता कि आपका आवेदन वास्तव में गहन गणना करने वाला है। एक dsPIC, उदाहरण के लिए, आपके प्रत्येक पुनरावृत्तियों के लिए 400 k अनुदेश निष्पादित कर सकता है। यह बहुत ज्यादा है। यह, हालांकि, निम्न स्तर I / O क्षमता, PWM जनरेटर, टाइमर और पसंद करने के लिए उपयोगी होगा।

साइन और कोसाइन वास्तव में डीएसपीआईसी जैसी पूर्णांक मशीन में करना मुश्किल नहीं है। मैंने खुद कुछ समय किया है। चाल कोण के लिए सही प्रतिनिधित्व लेने के लिए है। एक सैद्धांतिक दृष्टिकोण से रेडियंस अच्छा हो सकता है, लेकिन कम्प्यूटेशनल रूप से असुविधाजनक है। बधिया कृत्रिम हैं और सिर्फ मूर्खतापूर्ण हैं। एक पूर्ण रोटेशन का प्रतिनिधित्व करने के लिए आपके मशीन-आकार के पूर्णांक जो भी हो, की पूरी श्रृंखला का उपयोग करें। उदाहरण के लिए, dsPIC पर, जो कि 16 बिट प्रोसेसर है, एक पूर्ण रोटेशन 65536 मायने रखता है, जो एक रोबोट को नियंत्रित करने की आवश्यकता से अधिक सटीकता और संकल्प है जो आप वैसे भी माप सकते हैं।

इस प्रतिनिधित्व का एक फायदा यह है कि सभी रैपिंग स्वचालित रूप से होती है कि कैसे अहस्ताक्षरित पूर्णांक काम करता है और घटाता है। एक और महत्वपूर्ण लाभ यह है कि यह प्रतिनिधित्व साइन और कोसाइन के लिए लुकअप टेबल का उपयोग करने के लिए विशेष रूप से अच्छी तरह से उधार देता है। आपको केवल 1/4 चक्र संग्रहीत करने की आवश्यकता है। कोण के शीर्ष दो बिट्स आपको बताते हैं कि आप किस चक्र में हैं, जो आपको बताता है कि क्या तालिका में आगे या पीछे की ओर अनुक्रमित करना है, और परिणाम को नकारना है या नहीं। अगले N निचले बिट्स को तालिका में अनुक्रमित करने के लिए उपयोग किया जाता है, जिसमें तालिका में 2 N खंड (2 N +1 अंक) होते हैं। ध्यान दें कि तालिका में पीछे की ओर अनुक्रमण किया गया है, तो बस तालिका अनुक्रमण बिट्स को पूरक है।

आप तालिका को पर्याप्त अंक दे सकते हैं ताकि निकटतम उत्तर चुनना अच्छा हो। उदाहरण के लिए, यदि तालिका में 1024 सेगमेंट हैं, तो साइन और कोसाइन की गणना एक सर्कल के निकटतम 1/4096 पर की जाएगी। यह एक रोबोट को नियंत्रित करने के लिए बहुत कुछ होने जा रहा है। यदि आप अधिक सटीकता चाहते हैं, तो आप या तो तालिका को बड़ा बना सकते हैं या आसन्न तालिका प्रविष्टियों के बीच रैखिक रूप से प्रक्षेपित करने के लिए कोण के शेष निचले बिट्स का उपयोग कर सकते हैं।

वैसे भी, बिंदु यह है कि इस प्रोसेसर के लिए आपकी समस्याएँ बताई गई समस्या से मेल नहीं खाती हैं। मैं शायद dsPIC33F का उपयोग करूँगा। यह निश्चित रूप से छोटा है, हल्का वजन है, और एक एकल बोर्ड कंप्यूटर पर x86 की तरह एक पूर्ण विकसित सामान्य प्रयोजन कंप्यूटिंग प्रक्रिया की तुलना में अधिक शक्तिशाली है।


मैं हमेशा इस धारणा के अधीन था कि एक PIC सिर्फ उलटे कीनेमेटीक्स के लिए धीमा करना था, लेकिन मुझे पुनर्विचार करने की आवश्यकता हो सकती है। क्या कम से कम 100 / सेकंड के 3DOF के 6legs के लिए कीनेमेटीक्स को उलटना संभव है? 6x3x100 किनेमेटीक्स को केवल लाइव लेग मूवमेंट प्राप्त करने के लिए उलटा करता है। किसी भी तरह से मैं उलटा किनेमेटिक्स को एक ही मंच पर होने की आवश्यकता है क्योंकि एल्गोरिथ्म चलता है, ताकि मुझे इन भागों को दो बार फिर से लागू न करना पड़े। एल्गोरिथ्म अधिक मांग होगा, और निश्चित रूप से एक PIC या Arduino-isch बोर्ड पर चलने में सक्षम नहीं होगा।
बैरी स्टेस

9

आप बहुत सारे इनपुट संकेतों से निपटने जा रहे हैं। आप एक उच्च throughput के साथ एक सीपीयू की जरूरत नहीं है; बहुत सारे संकेतों को समानांतर में संसाधित किया जा सकता है। यह विशिष्ट डीएसपी क्षेत्र है। बेशक, आप सामान्य सीपीयू कार्यक्षमता भी चाहते हैं। यह कोई समस्या नहीं है। एकीकृत डीएसपी के साथ सीपीयू के बहुत सारे हैं।

ऐसे अनुप्रयोगों के लिए एक विशिष्ट चिप डिजाइन एक कोर्टेक्स-एम 4 है। यह एक एकीकृत डीएसपी के साथ आता है, और -M4F संस्करणों में एक FPU भी है। यह आवश्यक नहीं हो सकता है, त्रिकोणमिति को निश्चित-बिंदु गणित में आसानी से किया जा सकता है।


क्या मैट्रिक्स गणित में कॉर्टेक्स-एम 4 एफ पर बढ़त होगी? (अगर मैं वहां उद्यम करता हूं, तो प्रोटोटाइपिंग)
बैरी स्टेस

3
बस थोड़ा पांडित्यपूर्ण होने के लिए - कॉर्टेक्स-एम 4 प्रोसेसर कोर में एक एकीकृत डीएसपी नहीं है, इसमें डीएसपी की एक डिग्री है जो इसके मुख्य प्रोसेसर कोर में शामिल है। डीएसपी एक्सटेंशन मल्टीप्ले / संचित निर्देशों का जोड़ हैं जो फ़िल्टरिंग और ट्रांसफ़ॉर्म जैसे विशिष्ट डीएसपी कार्यों को सुविधाजनक बनाते हैं।
u

6

कुछ टिप्पणी:

  1. आपको एक ही सीपीयू पर त्रिकोणमिति संचालन को संसाधित करने की आवश्यकता नहीं है जो बाधा परिहार को निष्पादित करता है। आप दो माइक्रोकंट्रोलर के बीच कार्यों को विभाजित कर सकते हैं और उन्हें बात करने के लिए एक संचार प्रोटोकॉल का उपयोग कर सकते हैं।

  2. एक प्रयोग के लिए मैंने एआरएम कॉर्टेक्स एम 0 माइक्रोकंट्रोलर में एक कलमैन फ़िल्टर के साथ एक एएचआरएस एल्गोरिथ्म लागू किया है (यह एक एसटीएम 32 था, बिल्कुल बाकी याद नहीं है लेकिन मुझे लगता है कि यह 32 मेगाहर्ट्ज था), और निश्चित बिंदु गणित का उपयोग करके मैं चला सकता था। लगभग 40 नमूनों / सेकंड में। एक तेज नियंत्रक के साथ आप इसे आसानी से ले जाने में सक्षम होना चाहिए, और निश्चित रूप से आप FPGA या DSP तरीका आजमा सकते हैं।

  3. मैं कहूंगा कि पैरों का नियंत्रण सीपीयू-गहन नहीं है और आप सभी पैरों को एक साथ नियंत्रित कर सकते हैं, हो सकता है कि अलग से त्रिकोणमिति और बाधा परिहार संचालन (1 देखें)


नियंत्रक या डायनेमिक बस के माध्यम से सर्वोस को नियंत्रित किया जाता है, इसलिए मूल रूप से पहले से ही लोड किया जाता है। समस्या यह है कि सॉफ्टवेयर को लाइव पोज / गैट के लिए जरूरत से ज्यादा उलटा किनेमैटिक्स गणना करने की जरूरत है।
बैरी स्टेस

5

त्रिकोणमिति मुश्किल है, लेकिन शॉर्टकट हैं। यदि आप प्रसंस्करण शक्ति पर हल्के हैं, तो CORDIC एल्गोरिथम पर विचार करें।

यह मूल रूप से [उदाहरण के लिए] साइन की एक तालिका है। कोण डिग्री, रेडियन में हो सकते हैं, जो भी आपको पसंद है। मुद्दा यह है कि, इन मूल्यों की SINE 1/2 (0.5), 1/4 (0.25), 1/8, 1/16 ..... हैं जो आपके रोबोट का उपयोग कर सकते हैं।

अपना कोण इनपुट करें, पहले तालिका मान को घटाएं, अपना परिणाम पहले परिणाम (0.5) पर सेट करें। यदि, घटाकर, आपका कोण नकारात्मक हो गया, तो अगले मान जोड़ें (और 0.25 घटाएं)। अन्यथा, कोणों को घटाना और परिणाम जोड़ना जारी रखें।

जब आप तालिका के अंत में पहुँच जाते हैं, तो आपने जो कुछ भी किया है वह सब जोड़ना और घटाना है, फिर भी आप पराक्रमी हैं। द्वारा गुणा करने के लिए एक अंतिम "फिडल फैक्टर" है।

परिणाम की सटीकता [और गति] देखने की मेज के आकार [और संकल्प] पर निर्भर करती है।


CORDIC अच्छा लग रहा है, लेकिन मैं इसका इस्तेमाल केवल तभी करूंगा जब यह रोबोट को तेज बना देगा (एक आवश्यकता)।
बैरी स्टैस

3

आप एक रास्पबेरी पाई बोर्ड का उपयोग करने पर विचार कर सकते हैं जो एक सामान्य उद्देश्य GNU / Linux सिस्टम चलाता है। रास्पबेरी पाई में कई GPIO पिन हैं जिनका उपयोग रोबोट सर्वो या एक्सटेंशन-बोर्ड को जोड़ने के लिए किया जा सकता है।

http://www.youtube.com/watch?v=RuYLTudcOaM

मॉडल ए रास्पबेरी पाई 2.5 गीगावॉट के बजट के दौरान शेष रहते हुए ओपन जीएस 2 का उपयोग करके अपने जीपीयू का उपयोग करते हुए 24 जीएफएलओपी के सामान्य प्रयोजन के फ्लोटिंग पॉइंट कंप्यूट तक कर सकता है।

http://elinux.org/RPi_Hardware

उदाहरण: रास्पबेरी पाई का उपयोग करके बैटरी चालित रोबोट सेटअप लागू किया गया।

http://www.homofaciens.de/technics-robots-R3-construction_en_navion.htm

उदाहरण 2: एक रास्पबेरी पाई द्वारा नियंत्रित 6 पैर वाला रोबोट:

http://www.youtube.com/watch?v=Yhv43H5Omfc

उदाहरण 3: एक आत्म संतुलन 2 पहिया उल्टा पेंडुलम रोबोट जिसे रास्पबेरी पाई द्वारा नियंत्रित किया जाता है:

http://www.youtube.com/watch?v=n-noFwc23y0


2

लेग्ड रोबोट के लिए आप कुछ पूर्वनिर्धारित लेग मूविंग सीक्वेंस बना सकते हैं और "उन्हें प्ले कर सकते हैं"। वास्तविक समय बाधा से बचाव प्रकाश fuzzy logicकार्यान्वयन के साथ किया जा सकता है जहां सब कुछ फिर से तालिका प्रारूप में होता है और आपको बस इतना करना है कि इससे सही मूल्य चुनें और defuzzyficationप्रक्रिया के लिए इसका उपयोग करें ।

सी में सब कुछ किसी भी तेजी से प्रोसेसर की तरह किया जा सकता है ARM7AVRसब कुछ बदलने के लिए बहुत समय बिताने के बाद, मैंने इस पर कोशिश की और असफल रहा fixed point arithmetics


गैट एनिमेशन खेलना वास्तव में वही है जो मैं नहीं चाहता। एल्गोरिथ्म मैं अपने दम पर अपने पैरों के साथ क्या करना है, यह आंकड़े लागू करना चाहता हूं, और यह कि एल्गोरिथ्म इसलिए मुझे तेज त्रिकोणमिति की आवश्यकता है। हालाँकि मुझे अपने प्रश्न में यह स्पष्ट करने की कमी थी। और यह देखते हुए कि मैं इस सवाल को संपादित करने के लिए एक बहुत झंकार होगा। मैं पूछता हूँ और नियत समय में अधिक विशिष्ट होगा।
बैरी स्टैस

उस मामले में मैं सर्वो लेग प्रणाली के लिए जाना जाएगा। प्रत्येक पैर का अपना नियंत्रक होता है। एजेंट आधारित दृष्टिकोण।
गोस्सामेर

1

टेक्सास इंस्ट्रूमेंट्स स्टेलारिस प्लेटफॉर्म पर डिफ़ॉल्ट रूप से एक फ्लोटिंग पॉइंट यूनिट है। यकीन नहीं होता कि अगर 80 मेगाहर्ट्ज वाला एआरएम कंट्रोलर आपके एप्लिकेशन के लिए काफी तेज है, लेकिन लॉन्चपैड डेवलपमेंट बोर्ड काफी सस्ता है: http://www.ti.com/ww/en/launchpad/stellaris_head.html

यह USB के माध्यम से प्रोग्राम करने योग्य है, कम से कम विंडोज और लिनक्स के लिए मुफ्त टूलचाइन्स उपलब्ध हैं, लगभग 4 × 6 सेमी के उपाय और इसमें 30+ GPIO पिन हैं (यदि मैं सही तरीके से गिना जाता हूं)।


0

आप रोबोट के ड्राइव को एक इंटरफेस कार्ड के रूप में नियंत्रित करने के लिए AVR की मदद से x86 पॉवर पीसी सीपीयू बोर्ड को अपने रोबोट एप्लिकेशन में एम्बेड कर सकते हैं । सबसे तेज और सबसे सस्ता समाधान आपकी समस्या का। लेकिन हाँ आपको x86 आर्किटेक्चर में बहुत सी कोडिंग को गड़बड़ाना होगा, लेकिन सौभाग्य से आप ओपन सोर्स ओएस कोड से बहुत सारे कोडिंग समझ सकते हैं। (यदि आपका यांत्रिक निर्माण इस भार को वहन कर सकता है)


4
"x86" और "पावर पीसी" दो पूरी तरह से अलग हैं (और कम से कम इतिहास में कुछ बिंदुओं पर) प्रतिस्पर्धी आर्किटेक्चर।
क्रिस स्ट्रैटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.