Roboti
28. srpna 2012 v 3:41 | Petr
Robotici jsou tak výrazně programátorsky orientování, že na Robotour 2009 kde jsem vypomáhal jako organizátor se mi jeden kolega svěřil : "Mně by nejvíce vyhovovalo kdyby mi robota někdo postavil a všechny důležité funkce vyvedl nahoru na nějaký mnoho-pinový konentor." Pak se chvilku zamyslel a řekl "Nebo ne - lepší by byl USB port s dokonale zdokumentovaným (komunikačním) protokolem".
Takže když tvrdím, že v robotech je třeba mít i
dolní propust, tak je to vlastně skoro sprosté slovo. A nebudu se divit, že se na mně v Praze kamarádi sesypou, proč odvádím mládež od meritu věci k nepodstatnostem jako jsou tranzistory ....
Proto ode mně neočekávejte, že svůj milovaný AVR assembler a programování v něm zavrhnu a odvolám. Neodvolám. Nicméně moje prázdninové kontakty s AVR GCC - tedy s GNU kompilátorem Céčka pro AVR mikrokontroléry už nese zajímavé ovoce - zatím spíše v hlavě a v pocitech.
První věc GCC překládá zatraceně dobře - některé konstrukce dokonce překládá efektivněji, než když jsem je psal ručně, protože psaní v assembleru je únavné a člověk má tendenci ke CUT and PASTE programování z předpřipravených fragmentů.
K samotnému jazyku C se nebudu vyjadřovat - já jsem vyrostl v Pascalu, který měl z pedagogického hlediska jasná pravidla. Linuxáci, kterí v 60 letech vymysleli C však považovali jasná pravidla za "neflexibilní" takže výsledek se dostavil - jakoukoliv kravinu v C napíšete kompilátor přeloží a pak se nestačíte divit, co se děje (nebo neděje). Zejména v mikrokontrolérovém světě, kde blikající LEDka je často jediný ladící výstup je tohle MEGAOPRUZ. Vůbec bych se nedivil kdyby kvůli rozdílu mezi A=1 a A==1 spadlo nějaké letadlo ....
Kombinace C a inline assembler - kde jsou ty krásné časy Turbo Pascalu kde jste místo BEGIN napsali ASM a pak už jste jeli v assembleru - MOV AX, BX; ADD AX, CX atd.... Způsob jakým se do GCC píšou assemblerové fragmetny fakt musel vymyslet nějaký autista, nebo psychotik, kterému tenhle styl připadal srozumitelný. Samo za sebe mluví, že i v nejnovějším návodu na LibC (systémové knihovny jazyka C) se autoři omlouvají, že ani jim není vše zcela jasné !!!!
No a ty "
pocitové změny" ? Jestli jste programovali nějakou matematiku v ASM tak víte že to je dřina i moje oblíbená 32 bitová fixed point aritmetika v ASM je fuška. Takže snadnost programování v C je svůdná a trochu mě tlačí navěsit na procesor více "
blikátek" aby se dalo v rámci testování více blbnout. V každém případě teď sám sobě blahopřeju, že jsem třeba takovou "
Hlavičku Pentia 6" udělal s Externí SRAM a grafickým displejem, protože jejich programování je přesně ten druh hraní, ke kterému C svádí.
Ptáte-li se jestli doproučuju programovat AVR v C ? Možná budu za konzervativce, ale začátečník by se měl naučit
princip KISS tedy
Keep it Simple for the Stupid a k tomu C moc nevede a naopak dřina s ASM jednoznačně ano. Pokud ale chcete vyrábět složité roboty C je prakticky jediná možnost jak se neudřít nad softwarem.
Dnešní rada pro blondýny zní : Pokud vás štve, že vám říkají "blbá blondýna" jsou dvě cesty jak se toho zbavit - jedna ve směru "chytrá blondýna" a druhá ve směru "blbá bruneta". Je na vás, kterou cestou se vydáte...
23. srpna 2012 v 2:38 | Petr
Asi tak od roku 2007 se nám na Robotickém dni, kde jsem organizoval sumo několik sezón po sobě stala stejná příhoda. Přišel mladý muž, a stěžoval si, že s námi nemůže soutěžít, protože jeho robot vidí naši černou barvu jako bílou a naši bílou (která tvoří okraj hřiště) jako černou. A že je to určitě naše chyba, protože v kroužku elektroniků mu to bezvadně funguje.
Kouknul jsem na jeho robota a zjistil jsem , že zatímco my všichni používáme optická čidla na principu difuzního odrazu od podložky ve stylu optočlenu CNY70
On používá čidlo na principu zrcadlového odrazu - kde úhel odrazu rovná se úhlu dopadu. Takže bylo jasné, že v kroužku mají leskle černé hříště , od kterého získají jeho čidla větší signál než od matně bílého okraje. Proto ten paradox. Pokýval hlavou, a že to do příštího roku spraví - příští rok to ovšem bylo stejné akorát klučina byl daleko naštvanější - to mě zachráníl Pepa Hanzal, který vzal jejich hřiště, které bylo dokonale matné a tam jeho robot nefungoval taky.
Tak jme se kluka ptali - nebylo vám divné, že máte od černé větší signál než od bílé ? A on na to - já jsem něvěděl jaký mám mít kde signál - hlavně, že jsem měl rozdíl. Což mě věde k poslední "filosofické" kapitole o blbuvzdornosti robotů. A to je blbuvzdornost, nebo v tomto případě by se mělo říci ROBUSTNOST návrhu robota.
V daném případě znamená, že robustnost je když, snímáte odraz AD převodníkem ne natvrdo nastaveným hradlem, když si uděláte slepou zkoušku - tedy odečtete nejprve odraz s vypnutými IR ledkami a pak se zapnutými a berete jenom rozdíl, když se robot před startem kalibruje na černou, když máte na všechny kombinace dat z tohoto čidla předem vymyšlenou rozhodovací tabulku atd.... Tohle mají moji roboti a v životě neměli problém s detekcí okraje arény.
Robustnosti je velmi těžké dosáhnout. Musíte uvážit všechny faktory a s tím složitost robota a hlavně jeho softwaru exponenciálně roste. Otázka robustnosti nebo nerobustnosti se v 99% týká čidel a dat, která nám poskytují a algoritmů které z dat dělají závěry. Když budete potřebovat postavit dokonalou vestavěnou nabíječku, prostudujete posledních 20 ročníků amára a řešení tam najdete, ale jak se vyznat v parku, nebo jak sbírat barevné míčky na barevném hříšti to je těžká otázka.
Opět bude následovat neúplný seznam věcí, které dělají problémy, pro inspiraci mladším.
- Kamery závisí na okolním osvětlění
- Aktivní čidla (detektory barev, které si samy svítí) závisí na spektrálních vlastnotech použitých LEDek a použitých barev.
- Robot nikdy nevidí stejně jako jeho páníček.
- Optická čidla mají jinou spektrální citlivost než oko
- Viděná intenzita svitu různobarevných LEDek neodpovídá skutečnému světlenému toku ani signálu které dostaneme z oposenzoru.
- Infračervená čidla typu SFH5110 jsou ovlivněna frekvencemi úsporných zářivek
- Infračervená čidla pro použítí v místnosti typu SFH5110 nebo SHARP GPYxxxx se prakticky nedají použít na slunci.
- GPS má chybu několik metrů
- Kompasy jsou ovlivněny náklonem robota, kovovými předměty a kabely pod proudem (viz tramvaje v Lužáneckém parku)
- Ultrazvuky mají falešné odrazy, vibracemi se citlivost UZ mikrofonu snižuje (díky mikrofonním vlastnostem piezokeramiky), navíc závisí na teplotě (díky rozdílům v rychlosti zvuku).
- Kola na nerovném terénu poskakují (i mikroskopicky) a tím vnášejí chybu do měření ujeté vzdálenosti
- Každé čidlo, které jsi pracně vymyslel, před tebou vymyslel už nekdo jiný používá jej a jeho používáním tvé čidlo ruší.
- Jakákoliv data která dostanete jsou potenciálně chybná.
Krom robustnosti senzorů je i robustnost chování robota máme-li příkaz "dělej A dokud nenastane B" Je třeba vždy naprogramovat i variantu "co když B nestane nikdy ?" Krom toho dobré mravy velí aby robot si někam zapisoval LOG - tedy co naměřil a co z toho vyvodil. Bádnání nad LOGEM v notebooku je zábavné pro konstruktéra ale není dosti pohotové, osobně to vždy doplňuju i pestrobarevnými LEDkami které velemoudrým blikotáním dávají najevo "nad čím robot přemýšlí" (veřejnost a hlavně děcka tohle milují)
Máte pocit, že to nemá řešení - máte pravdu, proto se těmto vlastnostem robota neříká pejorativně blbuvzdornost, ale hrdě robustnost, kdo jí dosáhne je veliký šéf a my ostatní mu jenom tiše závidíme. Je to oblast natolik složitá, že můžete intenzivně bádat léta aniž byste se sebeméně hnuli vpřed (můj případ).
Na samotný závěr bych si dovolil poslední filosofickou poznámku a svou obhajobu - nemá smysl dělat roboty "tak jak to dělají všichni", protože tím narazíte na "ty samé problémy co měli oni" zkuste přemýšlet jak postavit robota "jak ho ještě nikdo nedělal" protože tím je skoro jisté, že narazíte na slepou cestu, ale je i malá šance, že překvapivě zvítězíte. V každém případě robotici jsou velmi uznalí a za neúspěšné "donkichotské" řešení se vám spíše dostane pochvaly než za neúspěšnou 150 verzi toho "co nefungovalo nikomu".
Dnešní rada pro blondýny zní - pokud jste nafoukaná a sláma vám leze z bot - "Vuittonka" celkový dojem spíše zhorší.
19. srpna 2012 v 4:33 | Petr
Dnes tedy probereme Bezdrátovou blbuvzdornost:
Z hlediska softwaru, který obsluhuje komunikační linku je prakticky jedno jestli jsou moduly spojeny drátem, nebo rádiem, taky třeba ethernetový síťový protokol vychází z radiového protokolu vyvinutého Hawajskou univerzitou zvaném příznačně
ALOHA (ahoj v hawajštině). Stejně jako u drátovýchch sběrnic musíte čekat až je pásmo prázdné, označit zprávu kontrolním součtem, poslat zprávu a čekat na odpověď. Přijímající modul musí zprávu přijmout zkontrolovat kontolní součet a potrvdit příjem - žádný rozdíl.
V čem je ale principiální rozdíl je Hardware vysílače.
první vysílací schemata měly amplitudovou modulaci - amplituda VF signálu nese nízkofrekvenční informací - nevýhodu amplitudové modulace je malá odolnost proti rušení. A pokud jdeme do technických detailů tak nutnost používat "
analogové"
vf zesilovače ve třídě A, které spotřebují mnoho proudu.
Proto se začala používat frekvenční modulace, která se v analogovém vysílání používá dodnes - ta má dvě výhody - jednak stačí aby užtečný sitgnál byl o pouhé 3dB silnější než rušení a tím jej zcela překryje a navíc se používají "
spínací" VF
zesilovače ve třídě C, které produkují de facto pravoúhlý signál a až filtry před anténou z něj udělají sinusovku, což spotřebuje asi polovinu proudu než AM.
Nicméně od II. světové války je známá slabina frekvenční modulace - stejně snadno jako užitečný signál překryje rušení - může sám být snadno překryt rušivým vysíláním nepřítele. Toho si všimla německy mluvící pražská Židovka a herečka ve filmech I republiky
Heda Lamarr a vymyslela, co se stalo základem moderní bezdrátové komunikace -
Frequency hopping spread spectrum.
Princip je jednoduchý - vysílač několik milisekund vysílá na jedné frekvenci a pak odskočí na jinou a zase jinou a zase jinou... Pokud se protivník snaží signál rušit musí dodržet stejnou sekvenci skoků (což se mu nejspíš nepodaří). Pokud ruší jen na jediné frekvenci v přijímaném signálu se to projeví neznatelným výpadken na kratičkou chvilku . FHSS dodnes používá
Bluetooth, který skáče 1600x za sekundu, nebo GSM.
Pak je ještě druhý způsob jak signál zabezpečit a to je
Direct sequence spread spectrum, které používají třeba WIFI nebo Zig-Bee. Princip je v tom že místo abychom vysílali digitální modulací takovou rychlostí jakou potřebujeme tak digitální signál pomocí XOR zašifrujeme "
pseudonáhodným" binárním signálem s rychlostí 10x - 100x větší (viz obrázek) - tím se nám šířka pásma signálu roztáhne taky 10-100x při zpětném přijmu pak musíme signál synchronizovat a opet XORem se stejnou sekvencí převést na původní data.
Rušící signály se projevují jako pomalý nesynchronní signál, který se v přijímači XORováním s rychou pseudonáhodnou sekvencí změní v rychlý pseudonáhodný signál, který se beze škod na datech odfiltruje analogovými filtry na výstupu přijímače.
U obou systémů spread spectra - pokud dva signály vysílající na stejné frekvenci liší se pseudonáhodnou sekvencí změny frekvence nebo šifrovaných dat - tak se vzájemně neruší. To je důvod proč i na sídlišti, kde každý má WIFI router, má vůbec smysl kupovat si vlastní.
Samozřejmě jste pochopili - pokud jsem v drátové komunikaci tvrdil, že diferenciální signalizace je nutnost, zde tvrdím spread spectrum modulace je nutnost. Proč tedy na soutěžích ani spread spectrum datové přenosy nefungují (nebo fungují špatně) ? Je to proto, že u těchto modulací existuje jenom omezený počet kanálů, nebo omezený počet pseudonáhodných kódů, takže nakonec přece jenom "mnoho psů zajícova smrt" - pokud máte v éteru desítky WIFI routerů na malé ploše nakonec dekódovat došlý signál je velice složité, chybovost je vysoká, žádosti o opakování paketu je mnoho, tím kazím pásmo ostatním, kteří se taky nedomluví a kazí pásmo mně....
Příklad z Robotour 2009 - WIFI pro organizátory jelo oficiálně na 54 mbit/sec a reálná rychlost spojení byla ve stovkách kilobitů - to se dá, pokud šnečím tempem stahujete mail, ale pokud na takové komunikaci závisí řízení robota v reálném čase - je to smrtelné.
Takže na testování v klidném parku u vás doma si pořiďte libovolnou technologii se spread spectrem, ale na soutěže - drát je drát - přes to, bohužel, nejede vlak.
Nezmínili jsme některé exotické bezdrátové komunikace, proto telegraficky - koupit v LIDLU vysílačky a krmit je AFSK - existuje radioamatérská technologie
packet radia - lze použít ale maximální rychlost je 1200 bit /sec (teoreticky i více ale s upravenými vysílačkami)
Datová pojítka "na otvírání garáží" na 499,92 nebo 866 MHz - se dají velmi jednoduše připojit k mikrokntroléru ale je to vysílání na jediné frekvenci - navíc v Evropě určené ke kratičkým "relacím" (kliknutí k zamknutí auta) - poslech těchto frekvencí je mojí zábavou - divili byste se jak je tam živo a pravděpodobnost, že nikde na soutěži se nenajde druhý "vynálezce" který vám komunikaci neznemožní ???
Osobně pro testování doma používám systém "dálkového ovládání" na televizi - robot vysílá data blikající LEDkou odrazem o strop na který "kouká" přijímač dálkového ovládání typu SFH 5110 - dá se použít pro 2400 a někdy i pro 4800 bit/sec - opět pravděpodobnost že by IR přenos nepoužíval na soutěži i někdo jiný - nepatrná ....
Dnešní oblíbená rada pro blondýny zní - nedívejte se jenom do zrcadla, ale i do občanky, kde je datum narození, pokud toto datum už bylo dávno - zapojte rozum a nejdivočejší outfity nechte dceři - není nic směšnějšího než zmalovaná osoba typu "zezadu lyceum zepředu muzeum" .
12. srpna 2012 v 4:07 | Petr
Jen co jsem dopsal minulý článek o blbuvzdornosti v robotice napadlo mně, že jsem zrazoval četnáře jak od přílišné důvěry v bezdrátové komunikace taky v použítí některých typů sběrnic - zejnéna tedy I2C. Ani jedno z toho jsem podrobněji nevysvětlil, takže je na čase to probrat.
Minule jsme tedy brali blbuvzdornost hardwarovou, dnes to bude blbuvzdornost datově - komunikační a dokonce rozdělena na drátovou a bezdrátovou složku.
Drátová blbuvzdornost:
Robotici jsou mentalitou programátoři a mají silnou tendenci k dekompozici velké úlohy na menší - takže je brzy napadne sestavit robota jako hromadu vzájemně komunikujících hardwarových modulů. Ne že bych tento přístup nedoporučoval, ale znovupoužitelnost a samostatná odladitelnost modulů, kterou od toho čekají většinou nenastane. Druhá možnost - stavět "jenoprocesorové" roboty - zanemá že - co robot to nový hardware a to je příliš pracné. Takže rozložit robota na 2-3 desky typu - řízení motorů - řízení čidel - vyšší inteligence - je plně obhajitelné a rozumné.
Jednotlivé desky samozřejmě budou komunikovat pomocí nějaké sběrnice - a první se nabízí RS232 buď v původních nebo v TTL napěťových úrovních - každý brzy zjistí, že RS232 je ideální pro spojení dvou modulú - point to point, ale jako opravdová "sběrnice" na které "visí" moduly se použít nedá.
Během úvodní rekognoskace se každý seznámí s
I2C (obrázek nahoře), která se povrchním pohledem jeví jako ideální - je multimaster, umožňuje připojit až 128 modulů a dokonce ji velké firmy používají pro řízení hlasitosti a přepínání programů v rádiích a televizorech. Do robotů se však zcela nehodí, protože je v příkrém rozporu s mnou již zmiňovaným vedemím signálu "
na nízké impedanci"
Když se totiž podíváte na schémátko zjistíte, že napětí na sběrnici udržují jenom odpory - Rp = 4K7 a ty klidně připustí indukci i dosti velkého rušení do sběrnice. Stejně opakovaně říkám, že I2C v robotech nefunguje a pak opakovaně poslouchám - když se pustí motory tak jdou do procesoru blbosti - pokud jdou přes I2C tak víte proč.
Sběrnice pro roboty nutně musí být odolná proti rušení a tudíž je výhodné pokud je Diferenciální. Pro zajímavost seznam zkratek dnes používaných diferenciálních sběrnic - Ethernet, PCIe, SATA, AGP, LVDS, DVI, HDMI, USB, SPDIF, RS422, RS485, CAN, Robbus ;-)) - skoro všechny dnes používané sériové sběrnice jsou diferenciální - proč tomu tak je ? Kvůli odolnosti proti rušení a dík tomu možnosti zvyšovat rychlost komunikace (skoro) do nekonečna.
Při diferenciální komunikaci totiž podíláte data současně dvěma dráty - v jednom jdou v přímé a ve druhém v invertované formě a to nejlépe tak že oba drátky jsou zakroucené do spirály a stíněné. Díky zakroucení do spirály, a stínění je schopnost elektromagnetického vlnění indukovat proudy v drátech minimální, ale to není to kouzlo - to kouzlo spočívá v tom, že na přijímací straně sledujete ROZDÍL v signálech a protože rušení se většinou indukuje do obou drátů stejně - v přijímači se beze škod odečte....
Takže nebudu vás nutit používat žádnou konkrétní sběrnici, ale
ať je diferenciální. My "
kluci co se spolu bavíme" už delší dobu používáme
Robbus což je vlastně automobilový
CAN jenom s našim vlastním protokolem. Protokol řeší další věci, které jsem nezmínil, ale které jsou stejně důležité - datové pakety musí mít
kontrolní součet a přijímač musí
vadné pakety ignorovat, musí existovat sytém adresace modulů, systém znovu-poslání vadné zprávy, systém PING - jak otestovat komunikaci atd. to všechno mají kluci vyřešené, já jsem jenom před 5 lety křičel jako siréna
Diferenciální sběrnice !!!!, Diferenciální sběrnice !!!! až vznikla psychóza, že robot bez ní je jako blondýna bez iPhonu.
Jako už tradičně jsem přecenil své možnosti, takže bezdrátovou blbuvzdornost probereme příště.
Stejně tak ještě tradiční rada pro blondýny - v létě jsou bílé minišatičky na opáleném těle velice sexy, dávejte si ale pozor na zimní opalování v soláriích, ať ve 30 neskončíte jako vyschlé škeble.
2. srpna 2012 v 4:56 | Petr
Otec pořád opakoval větu z návodu na nějaký (západo) německý měřák "total fest und idiotensicher" nebo dneska se používají ji jiné opisy stejného fenoménu "trottelfest" nebo "idiotenfest" třeba. Tahle německá slovíčka naznačují, že konstrukce přislušného zařízení je opravdu pro blondýny a abych nepoužíval poněkud pejorativní germanismy zavedl jsem si pro sebe kategorii "blbuvzdornosti"
Pokud stavíte robota "jen tak pro sebe" brzy přijdete na to, že to je celkem nuda. Roboti, na rozdíl od "schémátek z amára" mají totiž potenciál dát vás dohromady s jinými stejně postíženými a to nejsnáze tak, že postavíte robota do nějaké soutěže.
Stejně tak já jsem postavil robota "
jen tak pro sebe" a předváděl jsem jej na Robotickém dni 2005. Tento robot byl v jistém ohledu můj vrchol, protože tak složité řízení pohybů (robot se pohyboval po hladce navazujících úsecích elips a parabol), které dokonale napodobovalo živé tvory jsem od té doby neudělal. Že to nebylo dobře mě přesvědčili diváci na Robotickém dni 2005, kteří se na něj chvíli dívali a pak řekli - pchá - naše kočka chodí taky tak - což bylo jasné nepochopení
Moravcova paradoxu ze strany laické veřejnosti.
Takže v roce 2006 už jsem soutěžil v kategorii bojujících robotů mini Sumo a v jistém smyslu jsem u této kategorie zkysnul déle než jsem chtěl. Nicméně zkušenosti soutěžícího a později organizátora mini suma, stejně tak jako zkušenosti "šedé eminence" co se pohybuje v pozadí organizace robotických soutěží mi dala jednu velmi cennou zkušenost.
Jediná vlastnost vašeho robota, která je opravdu podstatná je konstrukční solidnost a blbuvzdornost. Všechno ostatní se dá dalším a dalším pokusničením zlepšit, ale prostě je lepší poněkud blbý, ale spolehlivý robot, než geniání, ale díky nějaké konstrukční slabině "náladový" a nespolehlivý.
Principem robotické soutěže je totiž hluk, zmatek, stress, časový tlak, řešení 20 věcí najednou, omezená schopnost se zamyslet a na něco se soustředit. Proto je blbuvzdornost robota - tedy odolnost proti VAŠÍM destruktivním akcím požadavkem č. 1.
Vašim ? Ale vy přece svého miláčka dokonale znáte 3 týdny před soutěží jste kvůli němu nespali. Vaše slečna (pokud se s vámi už nerozešla) si už půl roku stěžuje, že ji váš notebook s rozepsaným softwarem ji tlačí v posteli při sexu - tak proč pro boha ochrana proti vám ?
Představte si že máte na robotovi červený a modrý drát a červenou a modrou zásuvku a pokud zapojíte dráty opačně bude kouř a konec soutěžení. Správné blbuvzdorné řešení je takové, že oba dráty mají mít vzájemně nekompatibilní konektory aby záměna byla nemožná bez hrubého násilí nebo krájení konektoru nožem. Vy si ovšem myslíte, že nejste blbci a to si budete myslet až do té doby než budete vzadu v depu za mizerného osvětlení něco zapojovat a kamarádi do vás budou hučet a rozhodčí vás bude honit - rychle na start - rychle na start a vy s hlavou otočenou - napůl poslepu - to zapojíte obráceně ....
Takže blbuvzdornost je nutná musí být v robotovi vestavěná od samého začátku a od nejmenšího detailu - jako obvykle bude následovat neúplný seznam pro inspiraci.
- Mezaměnitelné a nepřepólovatelné konekory
- I přesto má každá deska mít ochranu proti přepólování
- Dokonalá filtrace napájení.
- Ochranné odpory na výstupech a vstupech do mikrokontroléru - pokud vám stačí signál 1mA je zbytečné připojovat pin mikrokontroléru napřímo stačí přes ochranný odpor který zajistí alespoň 5x větší proud tedy 1K - to je prevence problémů za 40 halířů.
- Protiresetovací diody v napájení MCU
- Odrušení motorů.
- Ochrany proti prostřelení H-můstků.
- Obecně hardwarové ochrany proti selhání softwaru
- Používat sběrnice vhodné do zarušeného prostředí (diferenciální jako RS485, CAN, Robbus, USB, v žádném případě ne I2C)
- Nespoléhat na bezdrátové komunikace.
Atd. atd. Opět jste asi pochopili smysl, ale musím se zastavit u posledního bodu - nepoužávat bezdrátové komunikace - který vypadá jakoby se můj konzervativismus utrhl ze řetězu.
Neutrhl, ale představte si že Bluetooth, Wifi, Zig-Bee, nebo cokoliv jiného, co vám bezvadně funguje o samotě doma, nebude zdaleka tak dobře fungovat na soutěži. Protože všichni robotici tyhle technologie milují a doma je úspěšně používají, takže tam kde jste doma v éteru sami vás na soutěži na stejném pásmu bude 20 - takže spolehlivost dané technologie - i když to je "spread spectrum" jako Wifi, Zig-bee a Bluetooth bude v ....
Ještě pro matematiky a logiky mezi námi - jistě znáte teorii a
priori a a posteriori podmínek v programování. Takže stavění robota, který od začátku je blbuvdorný je hardwarový ekvivalent "
a priori" kontroly vstupních dat. Ta je dneska mezi programátory nepopulární, protože je složitá. Naopak přehrabování se seškvařenými deskami je hardwarový ekvivalent
a posteriori podmínek dneska zvaných spíše "
exception handling" -
ošetření výjimek, které je u programátorů oblíbené, protože operační systém a kompilátor to za ně vždycky "
nějak" vyřeší - možná protože většina robotiků jsou mentalitou programátoři, je na robotických soutěžích tolik škvařícich se kabelů a robotů, kteří jsou "
mrtví" ještě než odstartují, zatímco mně mládež klepe na rameno a říká "
no jo zase ty strejcovy (ochranné) diody"
Na závěr ještě oblíbená rada pro blondýny - dnes je prý v módě "prodlužování vlasů" - pokud chcete v hlavě nosit cizí vlasy nějaké indky - budiž - ale prosím nestresujte chlapy tím, že ráno na zastávce stojí vedle sebe blondýna s černými prameny a vedle bruneta s blonďatými - a obě celkově vypadají, jakože právě skončily směnu v bordelu - tohle my opravdu neoceníme.
26. července 2012 v 2:18 | Petr
V diskusi se ozvala stará kamarádka Saša Svobodová, proč nepoužiju místo odporového děliče trimr. Představa trimru, který se natřásá v robotovi mě na okamžik naplnila panikou, ale pak jsem to probíral z mnoha stran a zjistil jsem, že budu muset probrat nejenom co si robotik může do robota dovolit vestavět z elektrického hlediska ale i co si může dovolit z MECHANICKÉHO hlediska, což jsem se rozhodl probrat právě dnes.
Takže přiklad - než jsem měl procesorovou nabíječku na NiMH baterky nechával jsem je občas vybíjet tím, že jsem je dal do robota na Sumo , který bez oponenta jezdil po hřišti do úmoru. Překvapivě často se přitom stávalo, že se zastavil předčasně po 2-3 hodinách kvůli nějakému upadlému drátku. Taky vždy před Robotickým dnem kdy moji roboti měli hrát sumo jsem vždy vzal novou sadu konektorů a napájel jsem je na kabely. Ne občasné hrubé násilí ostatních robotů ale i drobné vibrace jsou totiž tím, co vaši nepřipravenou elektroniku dovede úplně zničit.
Tedy trimry do robota ne protože jemnými vibracemi a i prachem se zničí a pokud slouží jako přesný dělič - tak jsou de facto nepřesný dělič. V dobách kdy jsme se ještě scházeli v Praze tak Jirka Rotta přednášel co se do robota dá vestavět. Jirka Bezstarosti s ním buď souhlasil, nebo zuřivě nesouhlasil a Zbyněk Winkler nebo David Obdržálek to zakončil povzdechem nojo kluci když ta robotika je vlastně věda o konektorech, aby neupadly.
Takže jednoduchá rada - rozeberte nějaké auto a podívejte se jak odlišná je v něm elektoinstalace, konektory, svorky od toho co běžně používáme do stacionární elektroniky - to je základní vodítko, které ještě poněkud rozvedu.
Tedy šroubovací svorky nebrat, můžete utahovat jak chcete ale šroubečky se stejně jednou uvolní a nespolehlivý spoj, který v klidu má kontakt a za jízdy se nepravidelně přerušuje je věc prakticky neodhalitelná, nemluvě o tom že zhoršuje už tak dosti velké el-mag. rušení uvnitř robota.
Pružinové svorky typ WAGO naopak ano. Pružinka prostě svou pružností kablík udrží i proti vibracím a na rozdíl od šroubku je "samodotahovací"
Jenom poznámka při druhém čtení. Zpytoval jsem svědomí a došel jsem k takovému závěru - sám šroubovací svorky úplně nezavrhuju a používám je na prototypy desek, které zůstanou v "malých domacích robotech" na stejné desky které jdou "ven" používám pružinové spojky WAGO. Důvod je ten, že do šroubovacích svorek snáze ucyhtíte pomocné drátky na které připojíte Multimetr, Osciloskop, oscilolkop chudých alias LED Diodu atd. Do definitivních "odladěných" desek však vždy používejte pružínové svorky.
Samořezné konektory na ploché kabely - v žádném případě ne - to je prototyp konektoru, který se "utřepe" i velice jemnými vibracemi a navíc "do něj nevidíte" a nemáte jak zkontrolovat kvalitu kontaktu. Je třeba si uvědomit, že rozhodující není okamžik kdy konektor viditelně upadne od svého drátu - to je až smrt robota. Rozhodující je okamžik kdy spolehlivost kontaktu klesne, v datech se objevují záhadné chyby, Sběrnice jsou občas zarušené - to je stav kdy se dá prohrát soutěž i s robotem, který doma jel jako po másle.
RJ45 Jirkové Rotta a Bezstarosti jej obhajují, já mám vůči němu určité výhrady, protože jsem zažil až moc "samoupadávacích" konenktorů v PC, jejichž jediným namáháním bylo, že sekretářka do PC občas kopla jehlovou lodičkou - tak nevím
No a na závěr král všech konektorů - rozhodně mnou doporučovaný (ale vzhledově hnusný) automobilní faston. Sám si pamatuju až ten fyzický hnus z elektroinstalace z
vojenského UAZu, ale překonejte to a berte to tak, že automobilní elektroinstalace je hnusná, ale robustni a přesto i ta občas zlobí, takže jestli na robota pro venkovní prostředí přilepíte izolepou kontaktní pole - pánbůh s vámi i s námi okolo ....
Neprobral jsem všechno, ale princip je doufám jasný - nepřítelem robotické elektroniky jsou vibrace, proto žádné pájené kabely, ale krimpované, žádné šroubované svorky ale pružinové, konektory se zámkem, ne volně poletující kabely uvnitř robota- všechno stáhnuté do svazků a připevněné pevně, ale beztahu ke kostře robota, ne samořezné konektory bacha na trimry (ale i krystaly trpí vibracemi) a pozor třeba na keramické konenzátory, které jsou "mikrofonní" tedy často produkují rušení v rytmu vibrací. Tlumivky pevně utažené, dobře zapájené zapatlané (nebo zalité) lepidlem atd.... Nebojte však vás pár debaklů naučí.
Dnešní rada pro blondýny zní - Minikraťásky dovedou chpapům způsobit opravdu žhavý den, ale k minikraťáskům jehlové sandálky - ty dovedou udělat žhavou noc.
P.S. když jsem kontroloval překlepy přišel jsem ještě na jednu radu - kašlete na EU šetřete nervy a roboty pájejte olovem ( nejlépe pájkou typu SN60 PB38 CU2, nebo i pájky s troškou stříbra). Srát se z bezolovem a pak sledovat jak vám spoje praskají vibracemi - za to nestojí.
7. června 2012 v 4:38 | Petr
U starých lidí se některé věci táhnou daleko do minulosti, takže v roce 1999 jsem s exmanželkou sestupoval z Lysé Hory a v polích mezi Borovou a Frýdlantem mě exmanželka začala vyslýchat: "Chtěl bys holčičku, nebo chlapečka?" Jako každý chlap jsem spíše chtěl chlapečka, ale politicky korektně jsem odpověděl "Víš mně je to jedno" tak jsem byl tázán ještě několikrát - a pak exmanželka vybuchla - ty bys nejraději měl místo děcka PENTIUM ;-)
Pak jsem tuhle historku vykládal současné přitelkyni, která je velice germanofilní a chce budoucí děti pojmenovat: Anne-Marie, Gertruda, Hildegarda, Hermenegilda, Waltrauda Johann atd.... takže jsem prohlásíl, že raději než Johann - trvám na tom, že první syn se bude jmenovat PENTIUM 6 (Pentium 4 už existuje a Pentium 5 mi připadalo blbé...)
Tohle moje přítelkyně vyzvonila ve škole, takže když jsem půjčoval jejím spolužačkám USB flashku, šířila se po jejich "
slepičím institutu" šeptanda, že na ní jsou plány našeho budocího (robotického) miminka....
Takže když se mě přítelkyně ptala co to kreslím - a byl to budoucí "mozek" mých robotů odpověděl jsem úplně automaticky "HLAVIČKU PENTIA 6"
Moje idea byla taková - musím vyrobit relativně výkonný "
počítač" který půjde hladce napojit na zbytek modulů robota přes sběrnici
Robbus, kterou s pár kámoši používám. Ten mozek musí být na jdené straně výkonný a na druhé straně pro mně od začátku snadno programovatelný - tím padla idea ARMu a soustředil jsem se na AVR, součástky musí být dostupné - tedy AtMEGA128 a zároveň musí mít počítač dostatek RAM aby mohl zpracovávat data z ultrazvuku - tedy externí SRAM. Později místo toho může do robota přijít deska s ARMem nebo dokonce něco ve stylu
Raspberry Pi?
Tohle je výsledek a zde jsou (přibližné) specifikace :
- ATMEGA 128 na 16 MHZ s 32 KB externí SRAM
- Grafický displej
- Můstek do 0,6A postavený na L293D s Back_EMF technologií
- 2x Sběrnice Robbus
- Tlačítka, LEDky, repráček
- 4 analogové vstupy pro ultrazvukové mikrofony
- atd...
Je toho tedy dosti pro robota "pokojové" velikosti - což byl taky úmysl umožnit postavit domácího robota pouze na této desce - třeba jenom s
ISP Radarem jako jediným doplňkem.
Pokud se obáváte že plošný spoj je monstrum, tak máte pravdu, ale světe div se je JEDNOSTRANNÝ !!! jen s řadou propojek, takže celá "Hlavička" se dá vyrobit doma.
Jenom jako vrchol vychloubání poznamenám, že skoro celou desku jsem routoval na displeji mého 10 palcového Asusu EEE v autobuse, posouvajícím se v dopravní zácpě z Německa.
Počítač je RISCový má 128 kilobyte FLASH ROM pro program a 40 KB programu pro data - tím se částečně podobá 8 bitům z 80 let - výkonově je však zcela jinde - takové ZX spectrum by muselo mít kolem 80MHz aby se tomuhle vyrovnalo. Hlavička Pentia 6 se výkonem blíží spíše starým procesorům 386 na frekvenci kolem 30 MHz, které se používaly v dobách MS DOSu.
Ptáte se kde je návod a dokumentace? Bude až budu mít všechno dostatečně vyzkoušené.
Nyní ještě tradiční rada pro blondýny - pokud jste schopny zametat s 9 chlapy z 10 - nemyslete si že to znamená, že i se ženami vám to půjde stejně snadno.
24. května 2012 v 2:56 | Petr
Kdybych následující odstavec napsal před pár lety, určitě bych dostal nejméně pár facek, ale snad už je doba jiná. Takže když jsem kolem roku 2001, fascinován američanem co měl robota kapajího psovi kapky do očí, přemýšlel jak postavit vlastního robota bylo jasné, že bez
jednočipových počítačů, dnes moderně zvaných "
Mikrokotroléry" alias
MCU to nepůjde.
Tehdy vládl názor, že "
opravdoví programátoři MCU" píšou jedině v assembleru, a já jsem měl už svých
100 000 řádek napsaných v assembleru na PC, takže jsem hledal procesor především podle kritéria dostupnosti v Česku a srozumitelného assembleru.
Brutálně zjednoduším, když napíšu, že dodnes jsou u nás dostupné prakticky jen dvě rodiny 8 bitových MCU
Michrochip PIC a
Atmel AVR. Takže jsem si stáhl nějaké prográmky a (PICkaří prominou) programy pro PIC byly nějak takto MOWFW, MOWWF, SVAPFW, ADDWF .... atd. Prostě zmatek nad zmatek, každá instruke končí WF nebo FW a podle toho se data přesouvají tam nebo onam ... AVR vzniklo o mnoho let později a je to "zmenšený" klasický RISC procesor se 32 registry, takže assembler byl krádně srozmitelný typu ADD R1, R2; MOV R3, R2; ST address, R3 atd ... takže bylo rozhodnuto.....
Dneska snad už nikdo neví, že nějaké AVR existují protože samotné procesory byly úplně zatlačeny do pozadí projektem který je využívá jménem
ARDUINO, Takže pro mladší z vás si dovoluju skromně upozornit, že AVR existoval před Arduinem, a dokonce (ó hrůzo) se AVR dá používat a programovat i bez Arduina.
Obrovskou výhodou AVR je možnost programování procesoru zapájeného v desce, což dneska zní jako samozřejmost, ale nebylo tomu tak vždy. K programoání má AVR takzvaný ISP port, což jsou normální piny se sérivou sběrnící typu SPI, kterými se nahraje program (i bez bootloaderu na rozdíl od Arduina)
Po nějakých špatných zkušnostech s konflikty na ISP, kdy nešťastně připojený externí AD převodník mi při programování ničil procesory, jsem raději nechával piny ISP portu pokud možno nepřipojené. To je ale značné plýtvání prostředky procesoru tak jem vymyslel blbinku která vypadá takto :
Co tedy vidíme na obrázku - vlevo i vpravo na desce jsou dva standardní 10 pinové ISP konektory které jsou spojené - pin k pinu, jeden se spojí s deskou s AVR a druhým se připojí programátor. ISP radar je plně průchozí pro programovací signály. Paralelně k pinům ISP portu jsou připojeny
1. Přijímač Infračerveného dálkového ovládání
SFH5110 z televize (uprostřed)
2. Tlačítko (vlevo pod ním)
3. Dvě Infračervené LEDky (vlevo a vpravo na kraji desky)
4. Červená a zelená signalizační LEDka (vidíte je sami)
Všechny tyhle věci jsou připojeny přes samostatné spínací tranzistory (SMD na zadní straně desky) a k pinům ISP portu jsou připojeny pres 10K oddělovací odpory aby nerušily svými signály, když se programuje.
Smysl celé téhle věcičky je jasný. MCU bliká IR ledkami a pomocí SFH 5110 přijímá případný odraz. Tím zjistí jestli před čidlem je překážka a protože IR ledky jsou mírně ohnuté do stran tak zjistí dokonce je - li vlevo nebo vpravo - to je elementární čidlo překážek, které my robotici používáme od hlubokých 90 let. Aby IR ledka neblikala přímo na SFH 5110 musí mezi nimi být stínění, tak jsem mezi ně na DPS fikaně umístil konektory ISP portu ;-)
Červená a zelená LEDka je zapojena paralelně s Infračervenými a pokud se používají IR ledy tak blikají tak rychle, že to oko sotva postřehne, pokud robot chce páníčkovi něco sdělit nechá LEDky svítít trošičku déle - třeba 0.1 sec, SFH 5110 je na takový záblesk zcela necitlivý (má svoji pracovní frekvenci 36 nebo 38 KHZ) ale my si toho všimneme - tak lze na jeden drát připojit jak čidlo tak signalizaci. Na třetí drát je připojeno tlačítko a samotné SFH 5110.
Jestli Vám pořád není jasné k čemu taková věc "globálně" slouží tak vězte - ke ktrékovliv desce s AVR a standardním ISP portem ji připojíte, a po napsání malinkého obslužného softwaru se ta deska změní v robota alespoň s elementárními schopnostmi - detekovat překážku, zablikat na páníčka a nechat se ovládat jedním tlačítkem. Dokonce protože SFH 5110 je stále schopno přijímat i blikotání z ovladače od televize, je tu stále možnost řídit pomocí něho robota dálkově - to není málo ze tří pinů ne ?
Předpokládám, že byste chtěli nejlépe celý radar hotový a osazený - to je proti mým zásadám, ale tady máte alespoň veškerou dokumentaci z mého milovaného
KiCadu -
uloženou na Ulož To (doufám že ho BSA hned zítra nezruší).
Blondýny i brunety teď asi čekají na radu ? Dneska nějak nemám inspiraci tak si jen dovolím poznamenat, že většina mužů sní o tom, že jednoho dne budou tak bohatí, že nahatá blondýna je bude v posteli hřát zleva, a nahatá bruneta je bude hřát zprava - nechte jim sny, ať mají alespoň málo za to, že vám dali všechno.
10. května 2012 v 3:26 | Petr
Staří klinici říkali, že prvním krokem k uzdravení je, že pacient se musí dovědět jméno své choroby. Jako člověk zcela ponořený do hardwarových problémů svých robotů jsem si doposud myslel, že jméno mé choroby je neschopnost. Ale možná jsem na tom lépe než si myslím a jméno mé choroby je ve skutečnosti
Moravcův paradox.
Už jsem na to narážel mnohokrát - tak jenom několikrát odcituju sám sebe - jako motto pro další článek. Tedy :
"Nestavěj robota lepšího než člověk začni robotem lepším než baktérie".
"Dejte mi psí čenich s digitálním výstupem a já vám k tomu psa dostavím během půl roku"
A poslední - suvisející s chronickým utrpemím jménem Trávoměr - "Pokud budu mít 100% spolehlivé čidlo cesty v parku nebude jízda po něm složitější než jízda arénou při Mini Sumu"
Napadá mě, že blondýny ani borec z Agelu neví co je
mini sumo - je to souboj robotů, kteří se vytlačují z arény, která je černá a má kolem dokola bílý pásek aby roboti snadno viděli, že jsou už na kraji.
Takže v čem je pes zakopaný -
Hans Moravec a další za svoji dlouhou kariéru zjisitli, že ty nejjednodušší funkce organismů jsou nejhůře napodobitelné pomocí robotů. Moravcovými slovy : "
zjistili jsme že jednoduché věci jsou složité a složité věci jsou jednoduché".
Jinými slovy, není problém udělat počítač, který
porazí velmistry v šachu nebo v
Riskuj, ale robot který vyžehlí a zajde nakoupit - ačkoliv se to zdá jako základní věc - to je opravdový problém.
Nejsložitější jsou věci úplně podvědomé, které ani nevíme jak děláme - poznat zelené kolečko, vyhnout se díře atd. A jako chemik bych řekl že ty ještě složitejší jsou na buněčné a sub-buněčné úrovni - udržování složení cytoplasmy, metabolismus, dělení buňky a vůbec.
Takže, když jsem si místo "
Monte carlo localization" a "
Voronoi diagrams" vybral prostou úlohu bezpečně poznat trávník - dobře mi tak. Snad mě může utěšovat, že evoluce vyráběla baktérii 3 miliardy let a člověka zvládla jen za 3 milióny, takže Moravcův paradox bude něco mnohem univerzálěnjšího než to že v poslední době se mi pájet po nocích moc nechce.
Pro případ, že by mě četli moji oblíbení Agelovští VIPové dovolím si ještě odcitovat krásnou větu na téma Moravcova Paradoxu z knihy
The Language instinct.: "
S příchodem nové technologie jsou burzovní analytici, petrochemičtí inženýři a předsedové představenstev ohrožení tím, že je nahradí stroje, ale zahradníci, kuchaři a recepční mohou být v klidu na mnoho desítek let dopředu"
A jelikož jsem prudič tak si musím rýpnout - odrazí se v někdy "ne-robotizovatelnost" jednoduchých profesí v jejich platech ? Co vy na to - moudroprdní borci s MBA ?
29. března 2012 v 4:57 | Petr
Kolem roku 2002 byl opravdu kritický nedostatek čehokoliv z čeho by se dal postavit robot - tak jsem lil směs expoxidu a pilin do novodurové trubky, kterou jsem pak krájel jako salám a z těch koleček "salámu" vyráběl kolečka pro roboty. Dneska je situace mnohem lepší a lidé jako
Pepa Hanzal nebo
Jirka Rotta mají ve svých e-shopech plné sklady, komponent, se kterými si vyhrajete až do důchodu. Pokud ovšem potřebujete něco nestandardního (a to já potřebuju vždycky) je i tak problém.
Praxe mě naučila ABSOLUTNĚ NEPOUŽÍVAT žádné výběhové, bazarové, slevové a jiné součástky - protože Váš (můj) čas je nakonec dražší než peníze. Důvod je v tom, že vynaložíte čas a úsilí abyste s bazarovým komponentem něco postavili - ono to funguje - chcte postavit ještě jeden kus - a není z čeho protože onen komponent už nikdy neseženete. !!!
Příklad - prvního robota jsem postavil z grilovacích motorků, ze kterých jsem udělal docela pěkné převodovky. Když jsem měl vyrobéné všechny díly na několik převodovek - čela, osičky, držáky, zjistil jsem že tyto motorky nejsou a nebudou (jsou jiné). Pučen z předchozích nezdarů použil jsem pro dalšího robota vnitřnosti z modelářského serva, - Hitech 715 - přestalo se vyrábět....
Varuju před použitívm akumulátorových vrtaček - i když z venku stejné - motorky a převodovky v nich se mění jak počasí. - To vše díky "katování kostů" - dneska je cyklus od výrobku, který je užitečný k stejně vypadajícímu krámu (za vyšší cenu) dlouhý jenom tak půl roku a my robotici jsme tím strašně postiženi
Ale k věci - astronomové o svých dalekohledech říkají "průměr (objektivu) ničím nenahradíš" a opravdu soustředit světlo na fotodiodu optikou je jediná cesta jak zvýšit signál a zároveň snížit šum. Takže přemýšlím nad optikou - hodily by se 50mm objektivy z kinofilmových foťáků - ty ale spadají do kategorie - nidky neseženu 2 stejné - tak lupy - po projití 30 obchodů objevil jsem 50 různých typů čínských lup - velmi mizerné kvality.
Takže výroba čoček doma - V BauMaxu mají Hobbyglass - to je plexisklo, které taje při 160 stupních - odliju si vlastní čočky:
Takže vidíte tři pokusné "prototypy" Nejsou průhledné zato připečené a mají hodně bublin.
Proč tomu tak je ? Hobbyglass totiž patrně není čistý
polymethylmetakrylát, ale bude to Styren-metakrylátový
kopolymer tedy část molekuly je plexi a část je polystyrén - pro vstřikování za vysokých teplot a vysokých tlaků to není problém, ale pro mně je to nepřekonatelné, protože svět div se ač jsou kopolymery jedna veliká molekula - jejích Styrenové části tají při 240 stupních ale metakrylátové části vaří, rozkládají se a uvolňují metakrylátový monomer v podobě bublin už při 200 stupních... Plastikářský průmysl to řeší lisováním za vysokého tlaku kdy se teplota varu metakrylátu zvedne a polymer nedělá problémy....
Takže druhý pokus - v jednom celkem slušném papírnictví jsem vykoupil jejich zásobu lup - celkem 11.
Byly příjemně laciné a jsou to krásné skleněné čočky průměr 40 mm a ohnisko 90 mm. Takže slepí se do vhodného držáku dvě k sobě a bude objektiv o ohnisku 45 mm - jako báseň. Náznak konstrukce toho objektivu vidíte vpravo. Je to bastl se zaostřováním zasouváním jedné odpadní roury do druhé. Výsledky skvělé, chtěl jsem mít zásobu až do penze - tak jsem překonal ostych a šel jsem ze sebe do papírnictví udělat blba podruhé (už poprvé se mě ptali nač to mám )
A výsledek : "Nemáme a asi už mít nebudeme" - Kolikrát jsem tohle slyšel za bolševika - a to
Klaus vykládal o "neviditelné ruce trhu" - idiot.
Na krabičce je odkaz na českého distributora
Wolf-Concorde a na jejich stránkách - po lupě ani památky ....
Takže optika bude, ale asi s každou generací trávměru jiná - to je smůla, ale třeba takoví autoři
RONJI mají stejné problémy, proto nakonec každému doporučují sehnat nejprve lupy a pak k ním dělat tubus - který je pokaždé poněkud jiný
Nakonec ještě rada pro blondýny, které dočetly až sem - Ne vždy, když si myslíte, že jste neodolatelné si to myslí i ten na koho je neodolatelnost namířena !