(Featherstone) Mafsallı Sert Gövde Modeline Aktüatör veya Kuvvet Ekleme


9

Esasen prizmatik bir mafsala (ray) bağlı bir tabana bağlı bir dizi bilyalı ve soket bağlantısından oluşan bir sistemi modellemem gereken bir proje üzerinde çalışıyorum.

Roy Featherstone'un Rijit Vücut Dinamiği Algoritmaları kapaklarını okudum ve Springer Robotik El Kitabı'nın (Featherstone tarafından da yazılmıştır) Dynamics bölümünü de okudum .

Onun "uzamsal vektör" ve "uzamsal matris" notasyonunu kullanmaya alışmak uzun zaman aldı, ancak tüm gösterimini bir egzersiz olarak elle yeniden oluşturduktan sonra, 3x3'ü birleştirmenin güzel bir yolu olmak için işe yarıyor ve 3x1 matrisler ve vektörler 6x6 ve 6x1 matrisler ve vektörler halinde. Operasyon yapmak için icat ettiği matematik, bazı standart gösterimleri kaçırdığı için okumak için biraz sıkıcı olabilir, ancak genel olarak her şey MATLAB'da uygulanması çok kompakttır, çok kolaydır.

Benim sorunum şu: Modele nasıl aktüatör ekleyebilirim? Ortak tanımları, bağlantı tanımlarını, vs. açık bir şekilde yapılandırarak yürür, ancak aktüatörler veya uygulanan kuvvetler söz konusu olduğunda, "Sadece buraya bir ekleyin ve Bob amcanız!" - hiç tartışılmıyor. In Robotik El Kitabı o yerçekimi kuvveti terimini eklemek için sabit tabana sahte ivme tanıtan önerir, ancak yerel koordinatlarda eklemek için ne de o aktüatör girişi nasıl ekleneceğini söz etmez nasıl göstermez.τa

Herhangi bir yardım büyük mutluluk duyacağız. Farklı bir kitapla başlamayı düşündüm, ancak kendimi farklı bir gösterim setine alıştırmak için zamanımın büyük bir masrafı olacak. Bununla ilerlemek istiyorum, ama bitiş çizgisinden sadece birkaç santim utangaç olduğumu hissediyorum.

Yanıtlar:


3

Aktüatör Kuvvetleri

Bunu doğru anladım mı: katı çok gövdeli bir sistemin teorik bir modeline sahipsiniz ve katı vücut dinamiği hesaplamaları yapmak istiyorsunuz. Modeli uyguladınız ve şimdi bir aktüatör tarafından çalıştırıldığında modelin nasıl davrandığını hesaplamak istiyorsunuz.

Ancak sizin için bir aktüatör nedir? Bu eklemde etkili olan bir kuvvet mi? Bir DC motor modeli mi? PID denetleyicisi mi?

Kitaptaki dinamik algoritmalar genelleştirilmiş pozisyonlar , genelleştirilmiş hızlar , genelleştirilmiş hızlar ve genelleştirilmiş kuvvetler . Çevirisi ile tarif edilen prizmatik bir ekleminiz varsa , o eklemdeki doğrusal kuvvet ile tanımlanır . Eğer bir döner (menteşe) eklemi varsa kimin dönüşü tarafından açıklanan sonra eklemde bir tork temsil eder.qq˙q¨τqbenτbenqjτj

Bu nasıl bir çalıştırıcının Anlayışınız kalmıştır hesaplanır. Sadece kuvvet veya tork uygulamak istiyorsanız, değerleri karşılık gelen değerlerine yerleştirin . Bunu yaptıktan sonra, uygulanan kuvvetlere sistem yanıtını hesaplamak için ileri dinamik algoritmalarına bir giriş görevi görürler.ττ

Yanında not: Featherstone , etkin döngü kapatma kuvvetlerini belirtmek için kullanır . Model açıklamanızdan kinematik döngüler yok gibi görünüyor ve bu nedenle geçerli değil.τbirτbir

Yerçekimi İvmesi:

Tüy taşı, tabandaki yerçekimi ivmesini uygular ve ağaçtaki algoritmalarla yayılmasını sağlar. Bu, hattaki RNEA, Tablo 5.1'de yapılır.

bir0=-birg .

Bunu yapmak yerine çizgiyi de değiştirebilirsiniz.

fbenB=benbenbirben+vbenx*benbenvben

için

fbenB=benben(birben-benX0birg)+vbenx*benbenvben

yerçekimi etkilerini her vücut üzerinde ayrı ayrı uygulamak. Bu ek hesaplamalar getiriyor ve bunu yaparken herhangi bir fayda görmüyorum.

Uzamsal Cebir ve 3 Boyutlu Vektörlerin Birleştirilmesi

Uzamsal Cebir sadece 3 boyutlu vektörlerin birleşimi değildir. Birincisi sabit bir koordinat çerçevesinde rijit gövde hareketlerini ifade ederken, ikincisi gövdeyle birlikte hareket eden noktalarda ifade edilir. Sonuç olarak, mekansal ivmeler mekansal hızların zaman türevleridir. İki 3-D denklemi kullanan klasik gösterimde durum böyle değildir (Featherstone'un kitabının 2.11 Bölümü):

Eğer bir cismin sabit bir açısal hızı , o cisim üzerinde dönme ekseni üzerinde olmayan tüm noktaların dönme eksenine (düzlemsel durumda dönme merkezi) doğru bir ivmesi vardır. Uzamsal Cebirde bu cismin ivmenin ifade edildiği çerçeveden bağımsız olarak sıfır uzamsal ivmesi vardır .ω

Mekansal hız, halihazırda (sabit) referans çerçevesinin orijine denk gelen vücut noktasının doğrusal ve açısal hızını tanımlar. Eğer bu kütle kütlenin merkezinde ifade edilirse ve küresel referans çerçevesiyle yönlendirilirse, 3-D doğrusal ve açısal hızın basit bir birleşimi gibi görünmektedir, ancak bu sadece bu referans çerçeve seçimi için geçerlidir. Farklı bir çerçevede ifade edildiğinde farklı değerler elde edersiniz, ancak yine de aynı uzamsal hızı temsil eder.

Uzaysal ivme , başlangıç ​​noktasına denk gelen noktanın doğrusal ve açısal hızının akışını tanımlar . Burada "Akış", vektör miktarlarının (doğrusal ve açısal hız) zaman içinde nasıl değiştiği anlamına gelir.


Bu algoritmayı uygulamak için çok çalıştım, ancak yol boyunca elimden geldiğince metodik olmaya çalıştım, en temel yönlerin bile her seferinde beklendiği gibi çalışmasını sağladım. Bu amaçla, simüle edilmiş çözümü karşılaştırabilmem için kesin çözümü hesaplayabileceğim bir dizi deney oluşturdum.
Chuck

Üzerinde çalıştığım son konu, küresel eklem - kuaterniyon temsilini ve ivmelenmelerini elde etmekti. Bu deney için, dünyayı modelleyerek ve yüzeyde küresel bir eklem içeren bir sarkaç koyarak bir Foucault sarkaçını simüle etmeye çalışıyorum. Bunu yaparken, sabit tabanım, dünyanın döndüğü dünyanın merkezidir. Sonra, Dünya'nın dönen merkezinden, herhangi bir enlem için yukarı / aşağı dönebilir, küresel eklem sarkaçımı yerleştirdiğim yüzeye çevirebilirim.
Chuck

Yerçekimi eklemek için bir yola ihtiyacım vardı çünkü sabit tabanımdaki z eksenine koyamadım; bunun sadece Kuzey Kutbu'nda yerçekimi çalışması doğru olur. Esasen, dünya yüzeyinin altındaki güçleri umursamıyorum, sadece sarkacın durgunluğunu önemsiyorum.
Chuck

Ben ettik İlgili bir soru soruldu ben sabit eklemleri nasıl düzenlenebileceğini belirten.
Chuck

2

Eğer Rijit Vücut Dinamiği Kütüphanesi'ne (RBDL) rastlamadıysanız , nasıl uyguladıklarına bakmak ve / veya yazar Martin Felis ile iletişime geçmek isteyebilirsiniz.


Barrett, RBDL'yi birkaç hafta önce buldum ve zaman zaman bilgi toplamaya çalışırken ileri geri giderken, kodu takip etmeyi zorlaştıran yöntemlerle C ++ ile yazılmış. Örneğin, kinematik kodunda okuyan bir satır vardır G.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j]));. Peki, fonksiyon ne yapar apply? Sınıf ne olursa olsun başlık dosyasına gitmem gerekiyor base_to_body, ama bu bir eklem mi yoksa bir beden mi? Ayrıca, gibi şeyler model.base[j].inverse().apply(model.S[j])de net değil.
Chuck

Bu, zaman zaman yararlı olmadığı anlamına gelmez, ancak RBDL'den anlayış kazanmak benim için çok çaba gerektirir.
Chuck

Robotik Barrett Ames'e hoş geldiniz , cevabınız için teşekkürler, ancak cevapların mümkün olduğunca kendi kendine yer almasını tercih ediyoruz. Bağlantılar çürümeye eğilimlidir, bu nedenle bir bağlantıya dayanan cevaplar içeriğe bağlı çürürse işe yaramaz hale getirilebilir. Bağlantıdan daha fazla bağlam eklerseniz, insanların yanıtınızı yararlı bulacağı daha olasıdır.
Mark Booth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.