Obsah:

Haptický kreslící robot: 5 kroků (s obrázky)
Haptický kreslící robot: 5 kroků (s obrázky)

Video: Haptický kreslící robot: 5 kroků (s obrázky)

Video: Haptický kreslící robot: 5 kroků (s obrázky)
Video: Bota jménem Melichar stejně Tě jednou tak seřežu 2024, Červenec
Anonim

V rámci mé magisterské promoce na dep. Průmyslový design na univerzitě v Eindhovenu vytvořil haptické kreslící zařízení, které lze použít k navigaci poloautonomního auta v provozu. Rozhraní se nazývá scribble a umožňuje uživateli prožívat haptická zařízení ve 2D prostoru pomocí proměnné síly a umístění. Ačkoli tento koncept není tím, o čem tento návod je, můžete si přečíst více o Scribble zde:

Scribble používá konfiguraci 5 barů, která mu umožňuje pohybovat se dvěma bočními stupni volnosti (DoF). Toto nastavení je mezi prototypy pro vytváření kreslících robotů poměrně populární, zde je několik příkladů:

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

Mechanicky se tyto roboty snadno vyrábějí. Potřebují pouze základní klouby a mají dva ovladače, které mohou vytvářet docela plynulé pohyby. Tato struktura je ideální pro designéry, kteří mají zájem o výrobu pohyblivé struktury. Ačkoliv nejsem strojní inženýr, kinematiku jsem pro překlad do kódu považoval za poměrně obtížnou. Proto poskytnu základní kód Arduino, který vypočítá dopřednou a obrácenou kinematiku, takže to můžete snadno použít ve svých budoucích návrzích!;-)

Stáhněte si prosím níže uvedený kód!

* EDIT: pro podobný projekt se podívejte na https://haply.co *

Krok 1: Budování struktury

Budování struktury
Budování struktury

V závislosti na účelu, který máte na mysli, byste měli nejprve navrhnout 5-článkovou strukturu. Přemýšlejte o měřeních, akčních členech, které chcete použít, a o tom, jak připevnit klouby pro plynulé pohyby.

U mého prototypu spouštím svůj kód na Arduino DUE, který je přes sériový program řízen programem na mém Macu, který byl vytvořen v Open Frameworks. Program používá ke komunikaci se simulátorem jízdy na bázi Unity 3D připojení UDP.

Prototyp Scribble používá 5 mm ložiska a je vyroben z 5 mm laserem řezaného akrylu. Pohony jsou hmatové motory Franka van Valeknhoefa, které umožňují ovládání, čtení polohy a vydávání proměnné síly. Díky tomu byly ideální pro požadované haptické vlastnosti Scribble. Více o jeho akčních členech naleznete zde:

Krok 2: Poznejte své hardwarové hodnoty

Znáte své hardwarové hodnoty
Znáte své hardwarové hodnoty

Dopředná kinematika je založena na meteorologické stanici Plot s hodinami od společnosti SAP:

Jak ukazuje jejich konfigurace, je prodloužena tak, aby paže držela značku pro kreslení. Toto bylo odstraněno, protože prototyp Klikyháky nesloužil. Pokud chcete tuto součást znovu přidat, zkontrolujte jejich kód. Jména na obrázku zůstávají v mé konfiguraci stejná.

V závislosti na vašem hardwaru musí algoritmus znát vaše hardwarové vlastnosti:

int leftActuator, rightActuator; // úhel pro zápis na pohon ve stupních, změňte na plováky, pokud toužíte po větší přesnosti

int posX, posY; // souřadnice umístění ukazatele

Nastavte rozlišení vstupních hodnot

int posStepsX = 2000;

int posStepsY = 1000;

Rozměry vašeho nastavení, hodnoty jsou v mm (viz obrázek SAP)

#define L1 73 // délka ramene motoru, viz obrázek SAP (vlevo a vpravo jsou stejné)

#define L2 95 // prodlužovací rameno délky, viz obrázek SAP (vlevo a vpravo jsou stejné)

#definovat rozsahX 250 // maximální rozsah ve směru X pro pohybující se bod (zleva doprava, 0 - maxVal)

#definovat rozsahY 165 // maximální dosah ve směru Y pro bod, který se má pohybovat (od 0 do maximálního dosahu, když zůstanete ve středu)

#definovat originL 90 // vzdálenost odsazení od většiny minimálních hodnot X do středové polohy aktuátoru

#definovat originR 145 // offsetová vzdálenost od většiny minimálních hodnot X do středové polohy aktuátoru, vzdálenost mezi dvěma motory je v tomto případě

Krok 3: Kinematika vpřed

Forward Kinematics
Forward Kinematics

Jak již bylo zmíněno v předchozím kroku, dopředná kinematika je založena na algoritmu SAP.

Prázdnota aktualizuje dříve definované požadované úhlové hodnoty levého a pravého pohonu. Na základě připojených hodnot X a Y vypočítá správné úhly, aby se ukazatel dostal do této polohy.

void set_XY (double Tx, double Ty) // zadejte svoji hodnotu X a Y {// nějaké hodnoty, které potřebujeme, ale nechceme šetřit na dlouhé dvojité dx, dy, c, a1, a2, Hx, Hy; // mapování rozlišení inpit na rozsah vaší konfigurace v reálném světě int realX = mapa (Tx, 0, posStepsX, 0, rangeX); // swap if mapping if inversed int realY = map (Ty, posStepsX, 0, 0, rangeY); // swap při mapování, pokud je inverzní // výpočet úhlu pro levý pohon // kartézský dx/dy dx = realX - originL; // zahrnout offset dy = realY; // polární délka (c) a úhel (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = návratový úhel (L1, L2, c); leftActuator = floor ((((M_PI - (a2 + a1)) * 4068) / 71); // konečný úhel a převod z rad na deg // vypočítat úhel pro pravý pohon dx = realX - originR; // zahrnout offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = návratový úhel (L1, L2, c); rightActuator = floor (((a1 - a2) * 4068) / 71); // konečný úhel a převod z rad na deg}

Dodatečná mezera pro výpočet úhlu:

double return_angle (double a, double b, double c) {// kosinové pravidlo pro úhel mezi c a návratovým acos ((a * a + c * c - b * b) / (2 * a * c)); }

Krok 4: Inverzní kinematika

Inverzní kinematika
Inverzní kinematika

Inverzní kinematika funguje obráceně. Zapojíte otáčení pohonů ve stupních a prázdnota aktualizuje dříve definovanou polohu.

Vezměte prosím na vědomí, že budete potřebovat akční členy nebo samostatný snímač, který dokáže číst úhel ramene. V mém případě jsem použil akční členy, které mohou současně číst a zapisovat svoji polohu. Nebojte se s tím experimentovat a zvažte přidání nějaké kalibrace, abyste měli jistotu, že je váš úhel správně přečten.

Doporučuje: