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

Koordinat dönüşümüne, giriş noktasını hangi çerçevenin, çıkış noktasını ise hangi çerçevenin tanımladığını belirterek başlayın. Yönü tersine çevrilmiş doğru matris aritmetiği bile nesneleri yanlış yerleştirir.

Alt indisleri yön olarak okuyun

R_AB, B koordinatlarını A koordinatlarına eşler ve t_AB, A'da ifade edilen B'nin orijini olsun. Sütun vektörleri kullanıyoruz:

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

Döndürme matrisinin sütunları, A'da ifade edilen B'nin eksenleridir. Öteleme de A'da ifade edilir. Noktalar öteleme alır; yönler gibi serbest vektörler yalnızca döner. Her üç elemanlı diziye aynı işlemi uygulamak bu anlamları karıştırır.

Doksan derece döndürülmüş bir sensör

2B'de, B'nin orijinini A'da (1, 2) m'ye yerleştirin ve B'nin x eksenini A'nın y ekseni boyunca yönlendirin. B'deki (2, 0) m noktası şu hale gelir:

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
Çerçeve (1,2) m'ye çevrildi ve 90 derece döndürüldü; dönüştürülmüş nokta (1,4) m'dir.

Python betiğindeki transforms fonksiyonu bu sonucu ve tersini kontrol eder. Python 3.12.3, NumPy 1.26.4 ve Matplotlib 3.6.3 ile çalıştırılmıştır. Şekli ve sonuçları yeniden oluşturmak için python3 engineering_labs.py'ü çalıştırın.

Yeniden oluşturmak için, bağlantılı betiği yeni bir dizine engineering_labs.py olarak kaydedin ve orada çalıştırın. Çıktılar çalışma dizinine gider: bu şekil transforms.svg'dir ve kontrol edilen koordinatlar engineering-results.json içindeki transform altında bulunur. Aynı komut dosyası ayrıca Kalman, ICP, frekans tepkisi ve örtüşme şekilleri ve CSV dosyaları da oluşturur. Mevcut çıktı dosyaları üzerine yazılacağı için boş bir çalışma dizini kullanın.

Ters çevirme, ötelemenin tersini almaktan daha fazlasını gerektirir

Bir döndürme matrisinin tersi, onun transpozudur:

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

(1, 4)'ten (1, 2)'yi çıkarın, ardından (2, 0)'ı elde etmek için -90° döndürün. Ters öteleme (-2, 1)'dir, sadece (-1, -2) değil. Yön hatalarını tespit etmek için rastgele noktalarda gidiş-dönüş yapın.

Homojen Dönüşümleri Birleştirme

3B'de, 4×4'lük bir matris döndürme ve ötelemeyi birleştirir:

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

En sağdaki dönüşüm önce etki eder. Harita A, gövde B ve sensör C ile bir nokta sensör→gövde→harita yönünde hareket eder. Matris çarpımı genellikle yeniden sıralanamaz. Ara B'nin eşleştirilmesi değişken adlandırmasına da yardımcı olur.

Kuaterniyonlar aynı döndürmeyi temsil eder

Birim eksen u ve açı θ için, ROS bileşen sırası (x, y, z, w) şunları verir:

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

z ekseni etrafında 90°'lik bir döndürme (0, 0, 0.7071, 0.7071)'dir. Bazı kütüphaneler (w, x, y, z) kullanır, bu nedenle dizileri kopyalamadan önce sıralamayı doğrulayın. q ve −q aynı döndürmeyi kodlar; bileşen çıkarma tek başına bir döndürme hatası ölçütü değildir. Normalizasyonu da kontrol edin.

REP-103, ROS sağ el SI kurallarını, gövde x-ileri/y-sola/z-yukarı ve optik z-ileri/x-sağa/y-aşağı yönlerini tanımlar. Kamera geometrisi döndürülmüş göründüğünde önce kuralları kontrol edin.

TF ayrıca zamana da bağlıdır

Bir üst/alt dönüşümünü, yukarıdaki T_AB ile eşleşen, alt nesnenin üst nesnesinde ifade edilen pozisyonu olarak okuyun. Nokta-dönüşüm API'leri, dikkatli hedef/kaynak çerçeve seçimi gerektirir. Sabit bir montaj dönüşümü, zamana bağlı bir araç pozisyonundan farklıdır.

REP-105, sıçrama yapabilen küresel olarak düzeltilmiş haritayı, sürekli ancak kayan odom'dan ayırır. Yanlış zaman damgasındaki düzeltilmiş matrisler, hareketli sensör noktalarını hala yanlış yerleştirir. Yönü ve zamanlamayı birlikte kontrol etmek için sensör-füzyon hata ayıklamasına devam edin.

Related reading

Diagnose transform and timing errors in logs.Sensör füzyonunun başarısız olmasının nedenleri — zamanlama, kareler ve dışsal kalibrasyonExplore another aspect of this fieldICP'nin başarısız olmasının nedenleri: başlatma, aykırı değerler ve simetrik geometriExplore another aspect of this fieldROS 2'de haritalamadan navigasyona — minimal bir Jazzy ve Nav2 prosedürü