Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

The experiment controls are in English.

Open experiment panel in a new tab

Download reproduction source

निर्देशांक रूपांतरण शुरू करने से पहले यह बताएं कि कौन सा फ्रेम इनपुट बिंदु का वर्णन करता है और कौन सा फ्रेम आउटपुट का वर्णन करना चाहिए। दिशा उलटने पर भी मैट्रिक्स अंकगणित वस्तुओं को गलत तरीके से रखता है।

सबस्क्रिप्ट को दिशा के रूप में पढ़ें

मान लीजिए R_AB, B के निर्देशांकों को A के निर्देशांकों में मैप करता है, और t_AB, A में B का मूल बिंदु है। हम कॉलम वेक्टर का उपयोग करते हैं:

p_A=R_{AB}p_B+t_{AB}

घूर्णन मैट्रिक्स के कॉलम, A में B के अक्ष हैं। अनुवाद भी A में व्यक्त किया जाता है। बिंदुओं को अनुवाद प्राप्त होता है; दिशा जैसे मुक्त वेक्टर केवल घूर्णन करते हैं। प्रत्येक तीन-तत्व वाले सरणी पर समान व्यवहार लागू करने से इन अर्थों में भ्रम पैदा होता है।

एक सेंसर को नब्बे डिग्री घुमाया गया

2D में, A में B के मूल बिंदु को (1, 2) मीटर पर रखें और B के x-अक्ष को A के y-अक्ष के अनुदिश रखें। बिंदु B में (2, 0) मीटर की दूरी पर स्थित बिंदु इस प्रकार हो जाता है:

R_{AB}=\begin{bmatrix}0&-1\\1&0\end{bmatrix},\qquad p_A=\begin{bmatrix}0&-1\\1&0\end{bmatrix}\begin{bmatrix}2\\0\end{bmatrix}+\begin{bmatrix}1\\2\end{bmatrix}=\begin{bmatrix}1\\4\end{bmatrix}
Diagram 1 · Use the button to switch views
फ्रेम को (1,2) मीटर पर स्थानांतरित किया गया और 90 डिग्री घुमाया गया; रूपांतरित बिंदु (1,4) मीटर है।

पायथन स्क्रिप्ट में ट्रांसफ़ॉर्म फ़ंक्शन इस परिणाम और इसके व्युत्क्रम की जाँच करता है। इसे पायथन 3.12.3, NumPy 1.26.4 और Matplotlib 3.6.3 के साथ निष्पादित किया गया था। आकृति और परिणाम को पुनः उत्पन्न करने के लिए python3 engineering_labs.py चलाएँ।

पुनः उत्पन्न करने के लिए, लिंक की गई स्क्रिप्ट को एक नई निर्देशिका में engineering_labs.py के रूप में सहेजें और इसे वहाँ चलाएँ। आउटपुट वर्किंग डायरेक्टरी में जाते हैं: यह आकृति transforms.svg है, और जाँचे गए निर्देशांक engineering-results.json में transform के अंतर्गत हैं। यही स्क्रिप्ट कल्मन, आईसीपी, आवृत्ति-प्रतिक्रिया और एलियासिंग आकृतियाँ और CSV फ़ाइलें भी उत्पन्न करती है। एक खाली वर्किंग डायरेक्टरी का उपयोग करें क्योंकि मौजूदा आउटपुट फ़ाइलें ओवरराइट हो जाएँगी।

व्युत्क्रमण के लिए अनुवाद को नकारने से अधिक की आवश्यकता होती है

एक रोटेशन मैट्रिक्स का व्युत्क्रम उसका ट्रांसपोज़ होता है:

p_B=R_{AB}^T(p_A-t_{AB}),\qquad R_{BA}=R_{AB}^T,\qquad t_{BA}=-R_{AB}^Tt_{AB}

(1, 4) में से (1, 2) घटाएँ, फिर (2, 0) प्राप्त करने के लिए −90° घुमाएँ। व्युत्क्रम अनुवाद (−2, 1) है, न कि केवल (−1, −2)। दिशा संबंधी त्रुटियों का पता लगाने के लिए मनमाने बिंदुओं का राउंड-ट्रिप करें।

समरूप रूपांतरणों का संयोजन

3D में, एक 4×4 मैट्रिक्स घूर्णन और स्थानान्तरण को संयोजित करता है:

T_{AB}=\begin{bmatrix}R_{AB}&t_{AB}\\0&1\end{bmatrix},\qquad T_{AC}=T_{AB}T_{BC}

सबसे दाहिना रूपांतरण पहले क्रियाशील होता है। मानचित्र A, पिंड B और सेंसर C के साथ, एक बिंदु सेंसर→पिंड→मानचित्र गति करता है। मैट्रिक्स गुणन को सामान्यतः पुनर्व्यवस्थित नहीं किया जा सकता है। मध्यवर्ती B का मिलान चर नामकरण में भी सहायक होता है।

चतुर्भुज समान घूर्णन का प्रतिनिधित्व करते हैं

इकाई अक्ष u और कोण θ के लिए, ROS घटक क्रम (x, y, z, w) निम्न देता है:

q=(u_x\sin(\theta/2),u_y\sin(\theta/2),u_z\sin(\theta/2),\cos(\theta/2))

z के चारों ओर 90° का घूर्णन (0, 0, 0.7071, 0.7071) होता है। कुछ लाइब्रेरी (w, x, y, z) का उपयोग करती हैं, इसलिए सरणियों को कॉपी करने से पहले क्रम की पुष्टि करें। q और −q समान घूर्णन को एन्कोड करते हैं; केवल घटक घटाव घूर्णन-त्रुटि मीट्रिक नहीं है। सामान्यीकरण की भी जाँच करें।

REP-103 ROS राइट-हैंडेड SI कन्वेंशंस, बॉडी x-फॉरवर्ड/y-लेफ्ट/z-अप और ऑप्टिकल z-फॉरवर्ड/x-राइट/y-डाउन को परिभाषित करता है। कैमरा ज्योमेट्री के रोटेटेड दिखने पर पहले कन्वेंशंस की जांच करें।

TF समय पर भी निर्भर करता है

पैरेंट/चाइल्ड ट्रांसफॉर्म को चाइल्ड के पोज़ के रूप में पढ़ें, जो उसके पैरेंट में व्यक्त किया गया है और ऊपर दिए गए T_AB से मेल खाता है। पॉइंट-ट्रांसफॉर्म API के लिए सावधानीपूर्वक टारगेट/सोर्स फ्रेम का चयन आवश्यक है। एक फिक्स्ड माउंटिंग ट्रांसफॉर्म, समय के साथ बदलने वाले व्हीकल पोज़ से अलग होता है।

REP-105 ग्लोबली करेक्टेड मैप, जो जंप कर सकता है, को कंटीन्यूअस लेकिन ड्रिफ्टिंग ओडोम से अलग करता है। गलत टाइमस्टैम्प पर करेक्ट मैट्रिक्स अभी भी मूविंग-सेंसर पॉइंट्स को गलत जगह पर रखते हैं। दिशा और समय की एक साथ जांच करने के लिए sensor-fusion debugging के साथ जारी रखें।

Related reading

Diagnose transform and timing errors in logs.सेंसर फ्यूजन विफल क्यों होता है — समय, फ्रेम और बाह्य अंशांकनExplore another aspect of this fieldICP की विफलता के कारण: आरंभीकरण, आउटलायर्स और सममित ज्यामितिExplore another aspect of this fieldROS 2 में मैपिंग से लेकर नेविगेशन तक — जैज़ी और Nav2 की एक संक्षिप्त प्रक्रिया