nxt2 - pytania o programowanie, kompilatory itp

Mindstorms, WeDo, Lego Digital Desinger, Stud.io

Moderatorzy: Mod Team, Mod Team

Autor
Wiadomość
Cyb

nxt2 - pytania o programowanie, kompilatory itp

#1 Post autor: Cyb »

Przejrzałem forum i nie tylko odnośnie programowania nxt (wątki są dosyć stare) widzę że jest kilka możliwości, jeśli coś jeszcze to mnie poprawcie proszę:

1. programowanie blokowe z firmowego programu mindstorms - ładne i userfriendly, ale zrobienie czegoś ambitniejszego w tym to chyba musi być niezła katorga.
Zapewne kierowane do dzieci i jako pierwsza metoda programowania NXT.
Nota bene dziś czeka mnie zrobienie wg instrukcji programu do humanoida ze standardowego zestawu NXT2 - w instrukcji jest na to bodajże ponad 90 stron :(
Ma ktoś ten program w pliku i może podesłać?

2. NBC, czyli coś a'la C.
kompilator: http://bricxcc.sourceforge.net/
opis języka: http://bricxcc.sourceforge.net/nbc/
debugger: http://www.sorosy.com/lego/nxtdbg/

3. NXC, czyli też coś a'la C.
kompilator: http://bricxcc.sourceforge.net/
opis języka: http://bricxcc.sourceforge.net/nxc/

4. leJOS NXJ, czyli coś a'la Java dla Mindstorms
http://lejos.sourceforge.net/nxj.php

5. RobotC - kolejne C dla mindstorms
http://www.robotc.net/
Z tym że w tym przypadku jest to program płątny, bodajże 30$

6. URBI
http://www.gostai.com/lego.html
znalazłem na stronie lego, więc dopisuję, ale nie mam bladego pojęcia na ten temat, wcześniej na to się nie natknąłem.


Czy powyższe wyczerpują możliwości programwoania kostki NXT ?


A teraz pytania bardziej szczegółowe:

1 Jaka jest różnica NXC a NBC, tak bez wgryzania się w niuase dokumentacji ?
Teraz programuje głównie w php, ale w C też kiedyś się bawiłem, jak również w pascala.

2. z tego co widzę w opisie, to jest wersja 3.3.7.20, ale w dziale downloads jej nie ma, ostatnia jest *.19?

3. O co chodzi z tym firmware ze strony bricxcc: http://bricxcc.sourceforge.net/lms_arm_nbcnxc.zip
Co ono daje i czy trzeba obowiązkowo wgrywać to do kostki nxt?

4 LejOS NXJ - z tego co widać w dziale downloads, to jest to projekt "wieczna beta". wprawdzie uczyłem się kiedyś javy, ale mam wątpliwości co do jej optymalności i w ogóle używania języka obiektowego do programownaia NXT

5. LejOS NXJ - też trzeba wgrać jakiś inny firmware do kostki NXT, żeby móc tego używać?

6. Wgrywanie innych firmware, od NXJ, z bricxcc czy też od RobotC jest w ogóle bezpieczne? nie padają przypadkiem później kości NXT (w sieci natknąłem się na info o tym)? no i nie wiem co wtedy z gwarancją - w sumie zmiana firmware na inny "nie od producenta" normalnie kasuje gwarancję.

7. Czy po wgraniu innego firmware (od NXJ, NXC/NBC, RobotC) można dalej normalnie programować blokowo? 6latek może nie dać sobie rady z C, a może blokowe programwoanie załąpie i będzie sobie tworzył jakies proste programiki - mam nadzieje że to sprawi mu sporo frajdy :)

8. Który z powyższych "języków" możecie polecić osobie, dla której C nie jest straszne a i Javy też się uczył? No i który jest bardziej popularny - ma to zapewne wpływ na to, że producenci nowych sensorów tworzą biblioteki pod dany język...

9. Ponieważ powyższe języki wymagają wgrania do kostki NXT swojego firmware, to nie można się bawić na przemian różnymi językami i wybrać sobie to, co człowiekowi najbardziej odpowiada?
Ostatnio zmieniony 2009-10-26, 13:50 przez Cyb, łącznie zmieniany 2 razy.

Awatar użytkownika
Atros
VIP
Posty: 803
Rejestracja: 2009-04-08, 19:03
Lokalizacja: Warszawa
brickshelf: Atrx
Kontakt:

 

#2 Post autor: Atros »

Myślę, że mało kto używał i porównywał te wszystkie języki i środowiska. Możesz być pierwszy, chętnie zapoznamy się z doświadczeniami.

Ja używam Lejos, to chyba dlatego, że na studiach mam najwięcej javy. Ale mam bardzo pozytywne zdanie o tym środowisku. Inaczej bym z niej nie korzystał.
Rzeczywiście na tą chwilę Lejos jest w wersji beta ale zbliża się do 1.0. Dużą zaletą jest też aktywna społeczność użytkowników lejos.

aby móc uruchamiać programy programy skompilowane lejosem trzeba mieć specjalny firmware, taką wirtualną maszynę java dla kostki nxt. W obecnej chwili proces wgrywania firmware jest prosty i automatyczny.
Tak samo można potem wgrać oryginalny firmware Lego lub inny. Ja nigdy nie miałem z tym problemów

Awatar użytkownika
TT
Posty: 1181
Rejestracja: 2004-05-27, 13:52
Lokalizacja: Bielsko-Biała
brickshelf: TT

 

#3 Post autor: TT »

Ja używam RobotC i jestem zadowolony. Innych doświadczeń nie mam, choć widziałem gdzieś w Internecie proste zestawienie różnych platform pod NXT i RobotC wykonywał najwięcej obliczeń w danej jednostce czasu, co mnie do niego przekonało.
Pozdrawiam,
Tomek

Cyb

#4 Post autor: Cyb »

TT pisze:idziałem gdzieś w Internecie proste zestawienie różnych platform pod NXT i RobotC wykonywał najwięcej obliczeń w danej jednostce czasu, co mnie do niego przekonało.
Zainspirowałeś mnie to poszukałem i chyba o tym piszesz:

http://www.botmag.com/articles/10-31-07_NXT.shtml

Której wersji RobotC używasz? 1.40 czy 1.05? i gdzie można toto kupić?

I jeszcze: czy musiałeś wgrywać firmware od robotc do bricka NXT?
Ostatnio zmieniony 2009-10-26, 18:59 przez Cyb, łącznie zmieniany 1 raz.

Awatar użytkownika
TT
Posty: 1181
Rejestracja: 2004-05-27, 13:52
Lokalizacja: Bielsko-Biała
brickshelf: TT

 

#5 Post autor: TT »

Ja póki co korzystam z darmowych 30-dniowych wersji. Posiadam wersje 1.91.
Można kupić program np. www.roboshop.pl
Trzeba wgrać firmware z robotC na kostkę.
Pozdrawiam,
Tomek

Cyb

#6 Post autor: Cyb »

TT pisze:Ja póki co korzystam z darmowych 30-dniowych wersji. Posiadam wersje 1.91.
Można kupić program np. www.roboshop.pl
tyle że oni mają wersję na płycie, czyli kosztuje ok 160 plnów.
A wersja online kosztuje 30$

Co do wersji 1.91, widzę na http://robotc.net/content/lego_down/lego_down.html że "Final Release" to jest 1.40
TT pisze:Trzeba wgrać firmware z robotC na kostkę.
Czy mógłbyś sprawdzić, czy możesz uruchamiać również programy w NXT-G, czyli w tym programowaniu blokowym, które jest z zestawem?
edit: chyba juz nie trezba, bo nie da sie:
"ROBOTC and NXT-G use incompatible versions of firmware for the NXT. "


edi2t:
inne zestawienie jezyków, chyba bardziej szczegółowe:
http://www.teamhassenplug.org/NXT/NXTSoftware.html
Ostatnio zmieniony 2009-11-04, 00:06 przez Cyb, łącznie zmieniany 2 razy.

cobra
Posty: 14
Rejestracja: 2009-04-19, 22:59
Lokalizacja: Gdańsk

#7 Post autor: cobra »

Jest jeszcze inna możliwość - programowanie w .NET np. w C#. Jest kilka darmowych bibliotek, które można podłączyć do projektu w Visual Studio i pisać oprogramowanie dla NXT. Główna zaleta, to możliwość pisania aplikacji pod Windows Mobile i sterowanie NXT z palmtopa. No i można programować w C# jeśli ktoś lubi :)

http://www.aforgenet.com/framework/
http://www.mindsqualls.net/

mr_bogus

Programowanie w C

#8 Post autor: mr_bogus »

Ja zdecydowałem się na NXC. Projekt ten jest stale rozwijany i nie ma problemów, żeby uzyskać informacje na różne tematy związane z programowaniem w tym środowisku na forum nxtasy.org, nawet od aktualnie prowadzącego projekt BricxCC.

Możliwości programowania jest naprawdę wiele i wszystko zależy od tego, kto czego chciałby się nauczyć. Jeśli ktoś zamierza rozpocząć naukę/podszkolić swoje umiejętności z zakresu języka C to zdecydowanie najlepszym wyborem będzie darmowe NXC lub ewentualnie płatny RobotC, który zdecydowanie wydajniej optymalizuje kod, dzięki czemu prędkość wykonywania operacji jest znacznie większa, oczywiście jeśli dla kogoś ma to znaczenie.
W przypadku użytkowników, którzy nie mają doświadczenia w tworzeniu bardziej skomplikowanych algorytmów, a co za tym idzie również pisania programów w jakimkolwiek języku programowania, na początek warto zainteresować się NXT-G, gdyż porywanie się od razu na C lub inny zaawansowany język programistyczny może skutecznie zniechęcić do programowania.

Kilka dni temu pojawiła się nowa wersja testowa NXC, którą polecam zainstalować wraz z aktualnym firmware'm (zawartym w paczce zip), gdyż bez tego funkcjonalność NXC jest znacznie ograniczona.

Już jakiś czas temu opracowałem polską wersję "Poradnika programisty", a w zasadzie wstęp do programowania w NXC, który niedługo zamierzam "bezpłatnie" opublikować.

Poniższy link zawiera informacje oraz porównanie oprogramowania przeznaczonego do programowania sterownika NXT:
http://www.teamhassenplug.org/NXT/NXTSoftware.html

mr_bogus

Re: nxt2 - pytania o programowanie, kompilatory itp

#9 Post autor: mr_bogus »

Cyb pisze: 3. O co chodzi z tym firmware ze strony bricxcc: http://bricxcc.sourceforge.net/lms_arm_nbcnxc.zip
Co ono daje i czy trzeba obowiązkowo wgrywać to do kostki nxt?
Tego firmware'u nie trzeba instalować, lecz jeśli w pełni chcesz wykorzystać funkcjonalność NXC (tzw. funkcje zaawansowane), która wykracza poza możliwości NXC-G, to należy zainstalować ostatni dostępny ze strony BricxCC (dostępny w paczce z oprogramowaniem testowym). Jeszcze żaden sterownik nie uszkodziłem więc myślę, że jest to tak samo bezpieczne jak wgrywanie oryginalnego softu ze strony Lego. Starsze wersje rzeczywiście sprawiały problemy i podczas wgrywania oprogramowania dochodziło do zwieszek sterownika, który trzeba było wówczas skasować poprzez przycisk kasowania na sterowniku i wgrać oryginalny soft.

Cyb

Re: Programowanie w C

#10 Post autor: Cyb »

mr_bogus pisze:Ja zdecydowałem się na NXC. Projekt ten jest stale rozwijany i nie ma problemów, żeby uzyskać informacje na różne tematy związane z programowaniem w tym środowisku na forum nxtasy.org, nawet od aktualnie prowadzącego projekt BricxCC.
mi akurat najbardziej podchodzilby robotc, z racji jego szybkosci dzialania - w koncu jak wchodzic w jakies C, to od razu te ktore najlepiej (najszybciej) steruje sprzetem i jest w stanie zrobic najwiecej przeliczen.

ale poniewaz chce rownoczesnie pokazywac synowi, ze istnieje nie tylko czesc mechaniczna, ale rowniez jest cos takiego jak software sterujacymi tymi mechanizmami, to zmuszony jestem do uzywania nxt-g. kilkuletni dzieciak nic nie zrozumie z programu napisanego w C, za to programowanie blokowe jest idealne do tlumaczenia (tyle ze ja za grosz nie lapie tego programowania bloczkami, brakuje mi swobody ktora daja jezyki nizszego poziomu).

gdyby byla jakakolwiek mozliwosc, zeby dalo sie "jednoczesnie" programowac w nxt-g
i ktoras z wersji C bez potrzeby ciaglej zmiany firmware w kosci nxt, to byloby odealnie - dla potrzeb tlumaczenia czy pokazywania synowi uzywalbym programow w nxt-g, dla siebie zas na co dzien programow w C. A pewnie jaby kajtek zalapal o co w tym wszystkim chodzi, to raczej sam zaczalby tworzyc programiki w nxt-g.
mr_bogus pisze:Możliwości programowania jest naprawdę wiele i wszystko zależy od tego, kto czego chciałby się nauczyć. Jeśli ktoś zamierza rozpocząć naukę/podszkolić swoje umiejętności z zakresu języka C to zdecydowanie najlepszym wyborem będzie darmowe NXC lub ewentualnie płatny RobotC, który zdecydowanie wydajniej optymalizuje kod, dzięki czemu prędkość wykonywania operacji jest znacznie większa, oczywiście jeśli dla kogoś ma to znaczenie.
W przypadku użytkowników, którzy nie mają doświadczenia w tworzeniu bardziej skomplikowanych algorytmów, a co za tym idzie również pisania programów w jakimkolwiek języku programowania, na początek warto zainteresować się NXT-G, gdyż porywanie się od razu na C lub inny zaawansowany język programistyczny może skutecznie zniechęcić do programowania.
coz, zgadzam sie - ja akurat programuje od wielu lat i zdazylo mi sie rowniez uzywac C :)
Ostatnio zmieniony 2009-12-12, 12:43 przez Cyb, łącznie zmieniany 1 raz.

Cyb

#11 Post autor: Cyb »

cobra pisze:Główna zaleta, to możliwość pisania aplikacji pod Windows Mobile i sterowanie NXT z palmtopa. No i można programować w C# jeśli ktoś lubi :)
Tak szczerze, to przy najnowszym zestawie jest to dyskusyjna zaleta - przeciez mozna znacznie wygodniej uzywac stacjonarnego kompa lub laptopa a z koscia nxt laczyc sie bezprzewodowo przez bluetooth

mr_bogus

Re: Programowanie w C

#12 Post autor: mr_bogus »

Cyb pisze:
mr_bogus pisze: gdyby byla jakakolwiek mozliwosc, zeby dalo sie "jednoczesnie" programowac w nxt-g
i ktoras z wersji C bez potrzeby ciaglej zmiany firmware w kosci nxt, to byloby idealnie
NXC pozwala na to. Wykonanie aktualizacji oprogramowania sterownika firmware'm ze strony BricxCC wymagane jest wówczas, gdy użytkownik zamierza używać zaawansowanych funkcji występujących w NXC, a nie występujących w standardowym oprogramowaniu NXT-G.

TrapDoor

Re: nxt2 - pytania o programowanie, kompilatory itp

#13 Post autor: TrapDoor »

Witaj!

Moze nie odniose sie do wszystkich Twoich pytan ale moge sie podzielic kilkoma uwagami odnosnie 2 srodowisk programistycznych dla NXT:
1) LabView dostarczane do zestawu. Na poczatku dla mnie to byla fajna zabawa i powiew swiezosci (jak dla programisty zawodowego :)). Jednak bledy srodowiska, takie jak: problemy z ciagnieciem i usuwaniem laczy oraz inne mankamenty zmusily mnie do poszukiwania czegos lepszego. Ogolnie to moge polecic do mniej skomplikowanych projektow, do zabawy zestawem. W szczegolnosci przydatne sa opcje odczytu stanu czujnikow w czasie rzeczywistym, tj. podczas ukladania kontrolek jezeli jest polaczenie z NXT. Mozna wowczas zobaczyc jaki jest prog czujnika swiatla. Jednak to samo mozna takze uzyskac w innych srodowiskach (podejrzewam).

2) Zainstalowalem sobie ewaluacyjna wersje RobotC w wersji 1.x jakis czas temu. Trzeba bylo wgrac na starcie dedykowany firmware - zadnych problemow. Podejrzewam ze z przywroceniem starego tez nie bedzie (bo taka opcja jest mozliwa). Srodowisko w wersji 1.x ma kilka mankamentow: troszke niedopracowany Help oraz ogolnie edytor jest slaby. Cale szczescie kilka dni temu wypuscili wersje 2.0 która mysle ze wiekszosc niedostatkow wyeliminowali. W szczegolnosci podobaja mi sie zkladki w edytorze! :).

Innych wersji nie testowalem. Ale polecam sie pobawic. Wydaje mi sie ze przy zachowaniu pewnych srodkow ostroznosci mozna rozsadna liczbe razy (1000x) przeflashowac kostke.

Czekam na Wasze opinie na temat RobotC 2.0 bo samemu jeszcze nie testowalem. A zakup chyba najbardziej oplacalny przez przelew lub paypal'a.

pozdrawiam
trapdoor

Awatar użytkownika
TT
Posty: 1181
Rejestracja: 2004-05-27, 13:52
Lokalizacja: Bielsko-Biała
brickshelf: TT

 

#14 Post autor: TT »

Kupiłem kilka dni temu robotC. Czekam jeszcze na kod aktywacyjny i będę mógł sprawdzić wersje 2.0. Myślę, że nie będzie żadnych wielkich rewolucji w stosunku do 1.x. Mimo to i tak bardzo sobie cenie to oprogramowanie. Przede wszystkim to najszybsza platforma pod NXT. Program jest bardzo przyjazny programiście - bardzo udany help, mnóstwo przykładowych programów itp. Jedyną wadą dla mnie - dużą wadą - jest możliwość komunikacji między sobą tylko dwóch kostek.

Szerszą refleksją podzielę się za kilka dni.
Pozdrawiam,
Tomek

killy9999

#15 Post autor: killy9999 »

Cyb pisze:Czy powyższe wyczerpują możliwości programwoania kostki NXT ?
Wiem, że jest jeszcze możliwość programowania w Matlabie/Simulinku. Sam nie posiadam (jeszcze) NXT, więc to co piszę oparte jest na informacji ze stron internetowych

1. Oficjalny toolbox dostarczany przez MathWorks: http://www.mathworks.com/programs/lego- ... -software/
Można wykorzystać Matlaba do zdalnego sterowania robotem (tylko pod Windowsem) albo użyć Simulinka do stworzenia programu odpalanego na kostce.

2. RWTH: http://www.mindstorms.rwth-aachen.de/
Z tego co wstępnie wyczytałem jest tylko możliwość zdalnego sterowania.
TrapDoor pisze:Wydaje mi sie ze przy zachowaniu pewnych srodkow ostroznosci mozna rozsadna liczbe razy (1000x) przeflashowac kostke.
No właśnie, zastanawiałem się jaki jest czas życia flasha w kostce. Prawdę mówiąc 1000 flashowań to nie jest dużo. Czy komuś kiedyś kostka padła z tego powodu?

A tak w ogóle to mój pierwszy post na forum, więc serdecznie witam wszystkich :)


EDIT: Tak w ogóle to polski dystrybutor Matlaba, firma ONT, organizuje czasami seminaria o tym jak programować NXT z użyciem Matlaba. Miałem okazję byc na takim seminarium i z całego serca odradzam, bo niczego konkretnego się tam nie dowiecie, całość to tak naprawdę prezentacja Matlaba a o NXT jest mowa przez ostatnie 10 minut.
Ostatnio zmieniony 2009-12-20, 19:28 przez killy9999, łącznie zmieniany 1 raz.

ODPOWIEDZ