{"id":926,"date":"2002-08-27T00:00:40","date_gmt":"2002-08-26T22:00:40","guid":{"rendered":"http:\/\/astrozor.cz\/?p=926"},"modified":"2010-07-28T21:44:34","modified_gmt":"2010-07-28T19:44:34","slug":"robot-pepa-2-spolupracuje-s-baltikem","status":"publish","type":"post","link":"https:\/\/www.robozor.cz\/?p=926","title":{"rendered":"Robot Pepa 2 spolupracuje s Baltikem"},"content":{"rendered":"<p>Robot je skv\u011bl\u00e1 z\u00e1bava i pro m\u00e9ho 7mi let\u00e9ho syna. Visual Basic je\u0161t\u011b neum\u00ed &#8211; ten MS m\u00e1 tak u\u017eivatelsky nep\u0159\u00e1telsk\u00fd software :-)! Rozhodl jsem se proto zp\u0159\u00edstupnit alespo\u0148 \u010d\u00e1st mo\u017enost\u00ed robota Pepy 2 i jemu prost\u0159ednictv\u00edm vynikaj\u00edc\u00edho d\u011btsk\u00e9ho programovac\u00edho jazyka Balt\u00edk z <a href=\"http:\/\/www.sgp.cz\/\" target=\"_blank\">SGP<\/a>.<\/p>\n<p>Nejprve bylo nutn\u00e9 vy\u0159e\u0161it jak \u0159\u00eddit prost\u0159ednictv\u00edm Baltika jednotliv\u00e1 serva. <a href=\"http:\/\/www.sgp.cz\/\" target=\"_blank\">SGP<\/a> m\u00e1 v nab\u00eddce dva hlavn\u00ed produkty. Balt\u00edka a Baltazara. Balt\u00edk je grafick\u00fd programovac\u00ed jazyk pro mal\u00e9 d\u011bti. Baltazar pro velk\u00e9. Bohu\u017eel Balt\u00edk, na rozd\u00edl od Batazara, neumo\u017e\u0148uje obsluhu po\u010d\u00edta\u010dov\u00fdch port\u016f. Musel jsem proto tento probl\u00e9m n\u011bjak obej\u00edt. Vyu\u017eil jsem vlastnosti Balt\u00edka spou\u0161t\u011bt extern\u00ed programy s parametry a napsal mal\u00fd progr\u00e1mek, kter\u00fd dok\u00e1\u017ee &#8222;p\u0159ehr\u00e1t&#8220; datov\u00fd soubor s informacemi o pohybech jednotliv\u00fdch serv a tak rozpohybovat Robota.<br \/>\nDatov\u00fd soubor je jednoduch\u00fd textov\u00fd soubor form\u00e1tu csv s n\u00e1sleduj\u00edc\u00ed strukturou. Stejnou strukturu vyu\u017e\u00edv\u00e1 i exportn\u00ed funkce m\u00e9ho animatronick\u00e9ho softwaru VSA o kter\u00e9m jsem psal minule. Proto se nyn\u00ed v Balt\u00edkovi daj\u00ed p\u0159ehr\u00e1t i pohyby naeditovan\u00e9 ve VSA. Tak zp\u011bt k t\u00e9 struktu\u0159e.<br \/>\nP\u0159\u00edklad takov\u00e9ho souboru najdete <a href=\"http:\/\/robozor.cz\/wp-content\/uploads\/2010\/07\/zdroj.csv\">zde<\/a>.<br \/>\nSoubor csv pouz\u00edv\u00e1 \u010d\u00e1rku jako odd\u011blova\u010de. Nap\u0159\u00edklad pokud chcete nastavit v\u0161echna serva (nap\u0159\u00edklad pro 8 serv) na jejich v\u00fdchoz\u00ed polohu (dejme tomu na polohu 127), prvn\u00ed \u0159\u00e1dek tohoto souboru bude vypadat takto:<\/p>\n<p>127,127,127,127,127,127,127,127,<\/p>\n<p>Tedy prvn\u00ed pozice ur\u010duje p\u0159\u00edkaz pro servo \u010d. 0, druh\u00e1 pozice pro servo \u010d. 1 atd.<br \/>\nM\u016fj p\u0159ehr\u00e1va\u010d po\u0161le podle tohoto kl\u00ed\u010de najednou p\u0159\u00edkazy polohy 127 pro 8 serv ozna\u010den\u00e9 0-7.<br \/>\nNa dal\u0161\u00ed \u0159\u00e1dek m\u016f\u017eete napsad dal\u0161\u00ed sekvenci poloh. Pokud chcete aby servo z\u016fstalo v klidu prost\u011b nap\u00ed\u0161ete stejnou polohu, jakou m\u011blo servo v p\u0159edchoz\u00ed sekvenci. Nap\u0159\u00edklad pokud chceme servo \u010d. 1 dostat na polohu 220 a servo \u010d.5 na polohu 45, nap\u00ed\u0161eme do csv souboru n\u00e1sleduj\u00edc\u00ed sekvence.<\/p>\n<p>127,127,127,127,127,127,127,127, (v\u00fdchoz\u00ed poloha serv)<br \/>\n127,220,127,127,45,127,127,127, (nov\u00e1 poloha serv)<\/p>\n<p>Takto se serva \u010d. 1 a \u010d. 5 dostanou na nov\u00e9 polohy a ostatn\u00ed se nepohnou.<\/p>\n<p>P\u0159esunut\u00ed serva z jedn\u00e9 polohy vy\u017eaduje ur\u010dit\u00fd \u010das. Rychlost p\u0159enosu dat je vy\u0161\u0161\u00ed ne\u017e rychlost s jakou serva mohou jednotliv\u00e9 p\u0159\u00edkazy re\u00e1ln\u011b vykonat. Proto jedn\u00edm z parametr\u016f p\u0159i spou\u0161t\u011bn\u00ed m\u00e9ho p\u0159ehr\u00e1va\u010de je i refresh. Tedy \u010das s jak\u00fdm doch\u00e1z\u00ed k prodlen\u00ed mezi jednotliv\u00fdmi sekvencemi.<br \/>\nExport dat z VSA m\u00e1 jeden z p\u0159ednastaven\u00fdch refresh \u010das\u016f 33 mS. Tento tak\u00e9 vyu\u017e\u00edv\u00e1m i j\u00e1. Vy si v\u0161ak m\u016f\u017eete v parametru nastavit sv\u016fj vlastn\u00ed. Znamen\u00e1 to , \u017ee mezi sekvencemi p\u0159\u00edkaz\u016f, kter\u00e9 jsou odesl\u00e1ny po\u010d\u00edta\u010dem na servokontrol\u00e9r je pauza pr\u00e1v\u011b velikosti nap\u0159. t\u011bch 33 mS.<br \/>\nToto n\u00e1m umo\u017euje nasimulovat pomal\u00fd p\u0159esun (pohyb) jednotliv\u00fdch serv. Norm\u00e1ln\u011b do serva po\u0161leme polohu nap\u0159. 127 a n\u00e1sledn\u011b nap\u0159. 202. Servo se v okam\u017eiku odesl\u00e1n\u00ed p\u0159\u00edkazu pro novou polohu do t\u00e9to polohy p\u0159em\u00edst\u00ed svou maxim\u00e1ln\u00ed rychlost\u00ed. Bzzz a je tam. Pokud chcete aby se pohyb d\u011bl pomalu, rozf\u00e1zujte pohyb v jednotliv\u00fdch sekvenc\u00edch. Chcete-li aby se servo \u010d. 0 dostalo z polohy 127 do polohy 202 za 5 vte\u0159in, spo\u010dteme nejprve jednotliv\u00e9 f\u00e1ze.<br \/>\nUr\u010deme si refresh (d\u00e1 se nastavit pro cel\u00fd soubor jen jeden) nap\u0159. na\u0161ich 33 mS. To znamen\u00e1, \u017ee m\u00e1me v 5 vte\u0159in\u00e1ch asi 150 sekvenc\u00ed k disposici. Bude to 151 \u0159\u00e1dk\u016f datov\u00e9ho souboru v\u010detn\u011b v\u00fdchoz\u00edho. Pot\u0159ebujeme se ve 150 sekvenc\u00edch dostat z polohy 127 do polohy 202 (aby se to l\u00e9pe po\u010d\u00edtalo). Tedy 75 zm\u011bn.<br \/>\nSoubor tedy bude m\u00edt 151 \u0159\u00e1dek (prvn\u00ed v\u00fdchoz\u00ed) a na ka\u017ed\u00e9m druh\u00e9m \u0159\u00e1dku bude poloha dan\u00e9ho serva zvednuta o 1 polohov\u00fd d\u00edlek.<br \/>\nPro servo \u010d. 0 to tedy bude:<br \/>\n127,127,127,127,127,127,127,127, (v\u00fdchoz\u00ed poloha serv)<br \/>\n127,127,127,127,127,127,127,127,<br \/>\n128,127,127,127,127,127,127,127,<br \/>\n128,127,127,127,127,127,127,127,<br \/>\n129,127,127,127,127,127,127,127,<br \/>\n129,127,127,127,127,127,127,127,<br \/>\n130,127,127,127,127,127,127,127,<br \/>\n130,127,127,127,127,127,127,127,<br \/>\natd.<br \/>\nSlo\u017eit\u00e9? V\u00edce snad pochop\u00edte z okomentovan\u00e9ho zdrojov\u00e9ho k\u00f3du m\u00e9ho p\u0159ehr\u00e1va\u010de. Tedy a\u017e ho okomentuji tak ho vystav\u00edm :-).<\/p>\n<p>P\u0159ehr\u00e1va\u010d se pak spou\u0161t\u00ed n\u00e1sledovn\u011b:<br \/>\nmoverfile.exe\/1\/9600\/polohy.csv\/33 kde, prvn\u00ed parametr za lom\u00edtem zna\u010d\u00ed \u010d\u00edslo comm portu na kter\u00e9m je servokontrol\u00e9r p\u0159ipojen, druh\u00fd parametr zna\u010d\u00ed baudrate portu se jak\u00fdm m\u00e1 b\u00fdt port otev\u0159en, t\u0159et\u00ed parametr zna\u010d\u00ed n\u00e1zev na\u0161eho souboru s daty o poloh\u00e1ch jednotliv\u00fdch serv a \u010dtvrt\u00fd parametr uv\u00e1d\u00ed refresh \u010das v milisekund\u00e1ch. N\u00e1zev souboru m\u016f\u017ee b\u00fdt uveden bez cesty k n\u011bmu, pokud je zdrojov\u00fd soubor ve stejn\u00e9m adres\u00e1\u0159i jako m\u016fj p\u0159ehr\u00e1va\u010d.<br \/>\nV Balt\u00edkovi pak m\u016f\u017eeme takov\u00fdto soubor s parametry rovnou spustit. P\u0159ed t\u00edm datov\u00fd soubor m\u016f\u017eeme tak\u00e9 rovnou v Balt\u00edkovi sami zeditovat. Jedn\u00e1 se p\u0159eci o jednoduch\u00fd textov\u00fd soubor!.<br \/>\nP\u0159\u00edklad m\u016f\u017eete naj\u00edt t\u0159eba zde.<\/p>\n<p>D\u00e1le mo\u017enosti Balt\u00edka spou\u0161t\u011bt asociovan\u00e9 soubory jsme vyu\u017eili k pou\u017eit\u00ed free utilitky (ji\u017e mnohokr\u00e1t zde zmi\u0148ovan\u00e9) Lector, kter\u00e1 p\u0159ev\u00e1d\u00ed psan\u00fd text na hlas pomoc\u00ed hlasov\u00e9 synt\u00e9zy. Pro majitele licence, ji\u017e tak\u00e9 zmi\u0148ovan\u00e9ho syst\u00e9mu, CS Voice (Frog Systems) nap\u00ed\u0161i podobnou utilitku. \u010casem se ur\u010dit\u011b zm\u00edn\u00edm o dal\u0161\u00edch syst\u00e9mech hlasov\u00e9 sysnt\u00e9zy.<\/p>\n<p>V\u011bt\u0161\u00ed mo\u017enosti nab\u00edz\u00ed druh\u00fd produkt SGP a to Baltazar. ten umo\u017e\u0148uje p\u0159\u00edmo \u0159\u00eddit jednotliv\u00e9 porty PC a tak je mo\u017en\u00e9 napsat ovl\u00e1d\u00e1c\u00ed program robota bez pou\u017eit\u00ed m\u00e9ho p\u0159ehr\u00e1va\u010de. Baltazar je v\u0161ak pro m\u00e9ho synka zat\u00edm p\u0159\u00edli\u0161 slo\u017eit\u00fd a tak jsem se j\u00edm zat\u00edm nezab\u00fdval.<\/p>\n<p>P\u0159ilk\u00e1d\u00e1m odkaz na soubor <a href=\"http:\/\/robozor.cz\/wp-content\/uploads\/2010\/07\/Test.zip\">Test<\/a>, kde najdete zazipovan\u00e9 n\u00e1sleduj\u00edc\u00ed soubory:<br \/>\nLector.exe &#8211; je freeware progr\u00e1mek pro p\u0159evod textu na hlas<br \/>\nzdroj.csv &#8211; je textov\u00fd soubor s p\u0159\u00edkladem pohyb\u016f pro 8 serv (\u010d\u00edsla 0-7)<br \/>\nmoverfile.exe &#8211; je moje freeware utilita pro p\u0159ehr\u00e1v\u00e1n\u00ed datov\u00e9ho souboru *.csv<br \/>\nmover.dll &#8211; je freeware knihovna pro moverfile.exe<br \/>\nrobot_pepa.bpr &#8211; je soubor pro Balt\u00edka, kde je uk\u00e1z\u00e1no jak s aplikacemi v Balt\u00edkovi pracovat<br \/>\nreadme.txt &#8211; kr\u00e1tky pokyn pro instalaci Lectora<br \/>\nhlas.lct &#8211; zdrojov\u00fd textov\u00fd soubor pro Lectora.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Robot je skv\u011bl\u00e1 z\u00e1bava i pro m\u00e9ho 7mi let\u00e9ho syna. Visual Basic je\u0161t\u011b neum\u00ed &#8211; ten MS m\u00e1 tak u\u017eivatelsky nep\u0159\u00e1telsk\u00fd software :-)! Rozhodl jsem se proto zp\u0159\u00edstupnit alespo\u0148 \u010d\u00e1st mo\u017enost\u00ed robota Pepy 2 i jemu prost\u0159ednictv\u00edm vynikaj\u00edc\u00edho d\u011btsk\u00e9ho programovac\u00edho jazyka Balt\u00edk z SGP. Nejprve bylo nutn\u00e9 vy\u0159e\u0161it jak \u0159\u00eddit prost\u0159ednictv\u00edm Baltika jednotliv\u00e1 serva. SGP &#8230;<\/p>\n<p><a href=\"https:\/\/www.robozor.cz\/?p=926\" class=\"more-link\">Continue reading &lsquo;Robot Pepa 2 spolupracuje s Baltikem&rsquo; &raquo;<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-926","post","type-post","status-publish","format-standard","hentry","category-nezarazene"],"_links":{"self":[{"href":"https:\/\/www.robozor.cz\/index.php?rest_route=\/wp\/v2\/posts\/926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.robozor.cz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.robozor.cz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.robozor.cz\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.robozor.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=926"}],"version-history":[{"count":2,"href":"https:\/\/www.robozor.cz\/index.php?rest_route=\/wp\/v2\/posts\/926\/revisions"}],"predecessor-version":[{"id":930,"href":"https:\/\/www.robozor.cz\/index.php?rest_route=\/wp\/v2\/posts\/926\/revisions\/930"}],"wp:attachment":[{"href":"https:\/\/www.robozor.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.robozor.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.robozor.cz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}