İçindekiler:

Dokunsal Çizim Robotu: 5 Adım (Resimli)
Dokunsal Çizim Robotu: 5 Adım (Resimli)

Video: Dokunsal Çizim Robotu: 5 Adım (Resimli)

Video: Dokunsal Çizim Robotu: 5 Adım (Resimli)
Video: Robot Çizimi 🤖 Robot Resmi Nasıl Çizilir? ✍ Kolay Robot Çizimi 2024, Kasım
Anonim

Dep'teki yüksek lisans mezuniyetimin bir parçası olarak. Eindhoven Üniversitesi'nde Endüstriyel Tasarım, trafikte yarı otonom bir arabada gezinmek için kullanılabilecek dokunsal bir çizim cihazı yarattım. Arayüz karalama olarak adlandırılır ve kullanıcının değişken bir kuvvet ve konum aracılığıyla 2 boyutlu bir alanda dokunsal fikstürleri deneyimlemesini sağlar. Konsept bu talimatın konusu olmasa da, Scribble hakkında daha fazla bilgiyi burada bulabilirsiniz:

Karalama, iki yanal serbestlik derecesini (DoF) hareket ettirmesine izin veren 5 çubuklu bir bağlantı konfigürasyonu kullanır. Bu kurulum, çizim robotları oluşturmak için prototipciler arasında oldukça popülerdir, işte bazı örnekler:

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

Mekanik olarak bu robotları yapmak kolaydır. Sadece temel eklemlere ihtiyaç duyarlar ve oldukça akıcı hareketler yaratabilen iki aktüatöre sahiptirler. Bu yapı, hareketli yapı yapmakla ilgilenen tasarımcılar için ideal, ancak makine mühendisi olmadığım için kinematiği koda çevirmek oldukça zor. Bu nedenle, ileri ve ters kinematiği hesaplayan temel Arduino kodunu sağlayacağım, böylece bunu gelecekteki tasarımlarınızda kolayca kullanabilirsiniz!;-)

Lütfen aşağıdaki kodu indirin!

* EDIT: benzer bir proje için https://haply.co'ya bir göz atın *

Adım 1: Yapıyı İnşa Etme

Yapıyı İnşa Etmek
Yapıyı İnşa Etmek

Aklınızdaki amaca bağlı olarak, önce 5 bağlantılı bir yapı tasarlamanız gerekir. Kullanmak istediğiniz ölçümleri, aktüatörleri ve yumuşak hareketler için eklemleri nasıl bağlayacağınızı düşünün.

Prototipim için kodumu, Mac'imde Open Frameworks'te yapılmış bir program tarafından seri olarak kontrol edilen bir Arduino DUE üzerinde çalıştırıyorum. Program, Unity 3D tabanlı bir sürüş simülatörü ile iletişim kurmak için bir UDP bağlantısı kullanır.

Scribble prototipi 5 mm rulmanlar kullanır ve 5 mm lazer kesim akrilikten yapılmıştır. Aktüatörler, Frank van Valeknhoef'un harekete geçirmeye, pozisyonu okumaya ve değişken bir kuvvet çıkışına izin veren Haptik Motorlarıdır. Bu, onları Scribble'ın istenen dokunsal özellikleri için ideal hale getirdi. Aktüatörleri hakkında daha fazla bilgiyi burada bulabilirsiniz:

Adım 2: Donanım Değerlerinizi Bilin

Donanım Değerlerinizi Bilin
Donanım Değerlerinizi Bilin

İleri kinematik, SAP'nin Plot saat hava istasyonuna dayanmaktadır:

Kendi konfigürasyonunda gösterildiği gibi, kol için bir işaretleyici çizmek için uzatılır. Bu, karalama prototipi için hiçbir amaca hizmet etmediği için kaldırılmıştır. Bu bileşeni tekrar eklemek istiyorsanız kodlarını kontrol edin. Resimdeki isimler konfigürasyonumda aynı tutuluyor.

Donanımınıza bağlı olarak, algoritmanın donanım özelliklerinizi bilmesi gerekir:

int solAktüatör, sağAktüatör; // aktüatöre derece cinsinden yazma açısı, daha fazla doğruluk istiyorsanız yüzer olarak değiştirin

int konumX, konum; // işaretçinin konumunun koordinatları

Giriş değerlerinizin çözünürlüğünü ayarlayın

int posStepsX = 2000;

int posAdımlarY = 1000;

Kurulumunuzun boyutları, değerler mm cinsindendir (bkz. SAP resmi)

#define L1 73 // motor kolu uzunluğu, SAP resmine bakın (sol ve sağ aynı)

#define L2 95 // uzunluk uzatma kolu, SAP resmine bakın (sol ve sağ aynı)

#define rangeX 250 // hareket edecek nokta için X yönünde maksimum aralık (soldan sağa, 0 - maxVal)

#define rangeY 165 // noktanın hareket etmesi için Y yönünde maksimum aralık (merkezde kalırken 0'dan maksimum erişime)

#define OriginL 90 //en küçük X değerinden aktüatör merkez konumuna uzaklık uzaklığı

#define OriginR 145 //en küçük X değerinden aktüatör merkez konumuna ofset mesafesi, bu durumda iki motor arasındaki mesafe

Adım 3: İleri Kinematik

İleri Kinematik
İleri Kinematik

Önceki adımda belirtildiği gibi, ileri kinematik SAP'nin algoritmasına dayanmaktadır.

Boşluk, sol ve sağ aktüatörün daha önce tanımlanan istenen açı değerlerini günceller. Takılı olan X ve Y değerlerine dayanarak, işaretçiyi bu konuma getirmek için doğru açıları hesaplayacaktır.

void set_XY(double Tx, double Ty) //X ve Y değerinizi girin{ // ihtiyacımız olan ancak uzun double dx, dy, c, a1, a2, Hx, Hy için kaydetmek istemediğimiz bazı değerler; // inpit çözünürlüğünü gerçek dünyadaki konfigürasyonunuzun aralığına eşleyin int realX = map(Tx, 0, posStepsX, 0, rangeX); // eşleme ters ise değiş tokuş int realY = map(Ty, posStepsX, 0, 0, rangeY); // eşleme ters ise takas // sol aktüatör için açıyı hesapla // kartezyen dx/dy dx = realX - orijinL; // offset dahil dy = realY; // kutup uzunluğu (c) ve açı (a1) c = sqrt(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = dönüş_açı(L1, L2, c); solAktüatör = kat(((M_PI - (a2 + a1)) * 4068) / 71); //son açı ve rad'den dereceye dönüştürme // sağ aktüatör için açıyı hesapla dx = realX - orijinR; // offset dahil dy = realY; c = sqrt(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = dönüş_açı(L1, L2, c); sağAktüatör = kat(((a1 - a2) * 4068) / 71); //son açı ve rad'den dereceye çevir }

Açı hesaplaması için ek boşluk:

double return_angle(double a, double b, double c) { // c ile dönüş arasındaki açı için kosinüs kuralı acos((a * a + c * c - b * b) / (2 * a * c)); }

Adım 4: Ters Kinematik

Ters Kinematik
Ters Kinematik

Ters kinematik ise tam tersi şekilde çalışır. Aktüatörlerinizin dönüşünü derece olarak takarsanız boşluk daha önce tanımlanan konumu günceller.

Lütfen, kolun açısını okuyabilen aktüatörlere veya ayrı bir sensöre ihtiyacınız olacağını unutmayın. Benim durumumda, konumlarını aynı anda hem okuyabilen hem de yazabilen aktüatörler kullandım. Bunu denemekten çekinmeyin ve açınızın doğru okunduğundan emin olmak için bir çeşit kalibrasyon eklemeyi düşünün.

Önerilen: