Pavouk Hiwonder

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
Uživatelský avatar
gilhad
Příspěvky: 832
Registrován: 07 bře 2018, 11:22

Re: Pavouk Hiwonder

Příspěvek od gilhad » 09 zář 2024, 16:07

Paráda :)

luger
Příspěvky: 217
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 13 říj 2024, 16:11

Nemáte někdo zkušenosti s Lidarem 360° ?

luger
Příspěvky: 217
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 17 říj 2024, 17:16

Test pavoučka v domácím terénu - viz odkaz na video. Jak je vidět, občas si není jistý v rozhodování a tak se pohybuje trochu trhavě. Myslím že je to způsobené prodlevama (timer-millis-step) mezi kontrolama podmínek. Zatím nevím

https://www.youtube.com/watch?v=FZGKKPdk5Zs&t=7s

luger
Příspěvky: 217
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 16 lis 2024, 15:20

Ke kontrole náklonu pavoučka používám MPU 6050 a příslušnou knihovnu "MPU6050".
Prográmek:

Kód: Vybrat vše

accelgyro.getAcceleration(&ax, &ay, &az);       // zjistí všechny hodnoty z akcelerometru
  
    // výpočet sklonu a náklonu ve [°]
    angle_x = atan2(ax, sqrt(square(ay) + square(az)))/(pi/180);
    angle_y = atan2(ay, sqrt(square(ax) + square(az)))/(pi/180);
    angle_z = atan2(az, sqrt(square(ax) + square(ay)))/(pi/180);
Mám dojem že to občas změří nějak špatně. Může mi prosím někdo vysvětlit jak to počítá ? Proč k výpočtu x a y potřebuje z ? Co je to "square" ?
Funkce knihovny ?

Uživatelský avatar
kiRRow
Příspěvky: 1266
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Pavouk Hiwonder

Příspěvek od kiRRow » 16 lis 2024, 15:27

knihovnu neznám, ale square je druhá mocnina

Pablo74
Příspěvky: 87
Registrován: 03 lis 2019, 17:00

Re: Pavouk Hiwonder

Příspěvek od Pablo74 » 16 lis 2024, 15:53

Kód: Vybrat vše

angle_x = atan2(ax, sqrt(square(ay) + square(az)))/(pi/180);
atan2 - to je arcustangens, ze skalární hodnoty se vypočítá úhel (opačná funkce než tangens)

sqrt - je druhá odmocnina
square - je druhá mocnina

A evidentně to počítá délku přepony v trojúhelníku (přes Pythagorovu větu, ovšem zapsanou trochu - pro laika - neintuitivně). Myslím tím ten druhý parametr ve funkci atan2().

Jinak to opravdu počítá úhel natočení.

luger
Příspěvky: 217
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 16 lis 2024, 16:11

Díky, ty mat. funkce znám, ale jde mi o toto - při velkém náklonu v osách x a y se má pavouček zastavit, když se narovná tak se zase rozjede. Když ho držím v ruce a on si mává nožkama ve vzduchu tak reaguje perfektně, ale jakmile běhá po zemi, dopředu, dozadu, točí se na místě atd. tak občas vyhodnotí že je moc nakloněný, ale přitom není ! Je pěkně vodorovně. Proto si myslím že reaguje i na to otáčení v oze z a nebo reaguje na zrychlení a to nechci.
Knihovna má ještě funkci accelgyro.getMotion (&ax, &ay, &az) takže vyzkouším

luger
Příspěvky: 217
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 20 lis 2024, 14:42

Pavouček provádí mnoho příkazů a kontroluje x senzorů. Pro jednotlivé základní úkony (lehni, běž, čekej na PIR, náklon atd. ) jsem si přiřadil zvukové signály - 1x pípni - provedl tuto operaci, 2x pípni - provedl tuto operaci atd.... chtěl bych tyto operace zobrazit na oled displej. Např. standardní režim že běží - zobrazí se "run", zastaví se při náklonu - zobrazí se "naklon" atd.... Jen nevím jak přiřadit jedné string proměnné různé "slova" pro zobrazení na oled displej. Nějaký návrh ?

Pablo74
Příspěvky: 87
Registrován: 03 lis 2019, 17:00

Re: Pavouk Hiwonder

Příspěvek od Pablo74 » 20 lis 2024, 15:01

Nadeklaruješ si proměnnou pro práci s textem:

Kód: Vybrat vše

char Text[21]; // max. 20 znaků
Do toho kódu, kde si pípneš, si normálně přidáš příkaz pro přiřazení textové hodnoty do proměnné.

Kód: Vybrat vše

Text = "Pohyb vpred";
...
Text = "Otocka vlevo";
Podle typu displeje a knihovny si vypíšeš obsah proměnné, např. příkazem

Kód: Vybrat vše

display.print(Text);
Ovšem, takhle "samo o sobě" to nejde, displej se musí inicializovat. Jo a nepoužívej diakritiku, vyhneš se tím zbytečným problémům.

luger
Příspěvky: 217
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 20 lis 2024, 15:06

díky Pablo, ale proč to tak "samo o sobě " nejde ? Mně se displej inicializuje neustále.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti