Hola, llevo ya algunos meses montando robots, con NXT 2.0. me asalta la duda de si debo cambiar a algún lenguaje de programación serio, que sirva para incursionar y aprender programación en general, o sigo con el nxt 2.0. No tengo experiencia en lenguajes, aunque he estudiado ingeniería y me gustan las matemáticas. He consultado otros temas en este foro y en la red, y he sacado las siguientes impresiones:
1) EL NXT-G ORIGINAL DE LEGO.
¿Es en realidad tán "limitado"? Vale la pena cambiarse o terminar de explotarlo (y explorarlo) a fondo antes de tomar una decisión?
2) BricxCC, Not exactly C (NXC)... Aquí tengo un enredo mayúsculo, creo que uno es el compilador y otro el programa... me gustan mucho los robots de Daniele Benedettelli y es el lenguaje que él usa... Pero... Lo veo algo desactualizado, las referencias (tutoriales, etc) son viejas ... ¿Funcionará con Windows7?
3) el LEJOS... con java... parece una buena alternativa, creo haber leido que una vez instalado ya no puedes usar el NXT-G ¿? al contrario que con el BricxCC que puedes seguir usándolo.
4) el RobotC, parece muy bueno pero es de pago, lo que tal vez no me importaría si no fuese por que pagas por una licencia de 1 año.... ¿Vale la pena?
En fin, Perdonad si es mucho rollo, pero me gustaría saber que lenguajes de programación usais para vuestros robots, y que me aconsejan si quiero aprender a programar pero sin dejar de entretenerme con los robots...
saludos.
Hoa nessim23 y bienvenido.
Te estrenas con una pregunta bien difícil. Intentaré contarte al menos lo poquito que sé al respecto y desde un punto de vista más subjetivo que otra cosa.
Vamos a ello. Lo primero, una "pequeña" tabla que recopila una buena colección de lenguajes de programación y los compara y es esta (http://www.teamhassenplug.org/NXT/NXTSoftware.html). Podrás sacar alguna info extra aunque esté en inglés.
Yo solo uso NXT-G y he usado un poco (poquísimo) NXC y Labview. Vaya esto por delante y así lo tienes en cuenta. Así que con NXT-G he hecho prácticamente todo lo que hay en mi web (http://www.nxtorm.es). Ya juzgas tú si es poco o mucho. Una utilidad bastante desconocida en NXT-G es el uso de My Blocks, que no son más que subrutinas y que te permiten ampliar bastante los programas.
Otro punto a favor es que es el lenguaje más extendido para el NXT. El resto de usuari@s está bastante repartido y eso a mi me tira atrás para consultar y aprender de forma autodidacta, que es mi caso.
De todas formas NXT-G no es un buen entorno para programación compleja tipo
- resolver sudokus
- cubos de rubik
- salir de laberintos en 3D
- visión...
Si es eso lo que vas buscando, se te quedará corto. Para todo lo demás, NXT-G :D Aunque cierto es que puede ser muy engorroso en los programas largos. No se, yo me lo paso muy bien, pero hay gente que no lo puede ni ver. Me parece lógico si eres informátic@ y estás acostumbrad@ a otras cosas.
Quiero decir, la programación para mi es parte de la diversión y no tengo experiencia en C, así que ahí sigo. Pero si programar en C lo ves interesante/divertido puede ser un segundo criterio para tirar por ahí. En Robot C no te puedo decir, pero creo que tiene bastante documentación aunque, como bien dices, es de pago. Puedes probar con NXC, que funciona en windows 7, es gratis y (si no recuerdo mal) compatible con el firmware original. Es decir, no necesitas (creo) instalar cada vez un firmware si quieres cambiar de uno a otro.
Resumiendo... ¿con qué software te divertirás más programando para los robots (complejidad) que quieres construir? Esa es para mí la clave de la cuestión.
Bueno, disculpa mi repuesta un tanto a caótica, pero iba escribiendo según se me ocurría. Si tienes más dudas y conozco la respuesta, ya sabes.
Hola nessim23,
Creo que a la respuesa de nxtorm poco más hay que añadir, si ya has tocado programación en la ingeniería y estás familiarizado con algún lenguaje, programar con bloques te puede resultar raro, pesado o menos potente. Lo bueno del Nxt, a mi parecer, es precisamente esto, la posibilidad de abrir un tema en el que dialogar sobre qué lenguaje es mejor utilizar, mostrando así su gran versatilidad para ser programado con lenguajes en código, en bloques, de manera visual, etc..
Volviendo al tema en sí, creo que el NXT-G es un lenguaje más potente de lo que a primera vista pueda parecer, no digo con ello que no tenga sus limitaciones, ni que sea el mejor, pero sí que afirmo que detrás de ese aspecto tan visual e intuitivo puede llegar a esconder grandes posibilidades para programar cosas muy buenas. Por supuesto, Lego Mindstorms se creó como un juego que pudiesen usar tanto niños como no tan niños... y he aquí la necesidad de los desarrolladores de conseguir un sistema de programación potente y a la vez sencillo para que niños con conocimientos nulos pudiesen hacer algo en él.
Entonces, creo que tu duda es saber si debes cambiar de lenguaje. En mi opinión iniciarte en Nxt-G, profundizar en él lo que creas necesario y sacarle todo su jugo no tiene por qué ser ningún inconveniente, salvo por lo que ya ha dicho nxtorm de las ciertas limitaciones que pueda tener o mas bien comodidades para resolver ciertos problemas. Por otro lado, es posible que no tenga tanta aplicación práctica a la hora de programar otros kits, o que no te sirva tanto a la hora de iniciarte en la programación en código, ya que no tienen la misma estructura.
Por otro lado, el Brick Command Center (BrickCC) es como bien dices el compilador y NxC, Not exactly C, es el lenguaje, el cual como ya dice su nombre tiene un lexico similar a C y por tanto es bastante potente. Ventajas, pues como ya he dicho que es programación en código, te inicias en un lenguaje con el que puedes aprender las cosas básicas de la programación ( variables, iteraciones, constantes,...) y con el cual ya has visto el resultado de sus creaciones con Beneditelli, y además como también has dicho no hay que cambiar el firewall, es decir, es compatible con el NXT-G. Como inconvenientes podríamos poner su dificultad si no estás iniciado en la programación, hay que aprenderse los comandos, el lexico que utiliza y quizás, la poca información que hay por internet acerca de él, que no desactualizado creo yo.
Respecto a los otros no puedo opinar ya que no los he tocado, sí puedo decir que sé de gente que los utiliza,como java, y les va bien, va en función de gustos, y que se utilizan también otros lenguajes como matlab.
Como ves, la elección del lenguaje depende más de lo que quieras hacer tú, de lo que te resulte más cómodo y divertido, puesto que aunque NxC pueda darte una base para empezar a programar de nada sirve si estás obligado o no te gusta, pues acabarás cansandote de él.
Y para concluir este tocho, recalcar como ya he dicho, que el hecho de que NXT-G tenga ese aspecto tan visual e intuitivo no hay que engañarse acerca de sus posibilidades ni subestimarlo como lenguaje. Y aunque de Nxt-G sí que hay más información por internet, por si te interesa te dejo un link con videotutoriales sobre programación en NXT-G desde cero (http://robotfilia.es/category/tutoriales-1/programacion-nxt-g/) por si te resulta útil.
Espero haber aclarado algo tu duda, y si no, pregunta todo lo que creas necesario que para eso estamos :P
Un saludo
Agradezco vuestras acertadas respuestas, tanto por su extensión como por la calidad de las mismas. Me estoy iniciando en este campo del Mindstorms NXT, he leido con detenimiento lo que exponeis y por ahora seguiré con el nativo NXT-G y al mismo tiempo ir aprendiendo algo del Lenguaje C en general para luego programar algo con él...
Por ahora estoy saliendo de mis "dark Ages" del Lego, también he comprado el 8110 Unimog (un monstruo) y algunos sets del Technic, bueno, el technic no es tan intuitivo como el Lego tradicional... asi que estoy con la "lealtad dividida" entre el nxt y technic. :s
Bien como sea gracias de nuevo por ambas respuestas, los links y los buenos consejos.
Cita de: nessim23 en 18 de Septiembre de 2012, 06:00:19 AM
[...] asi que estoy con la lealtad dividida entre el nxt y technic.
En absoluto! Son totalmente complementarios. Y suerte con los proyectos. En lo que podamos colaborar, ya sabes ;)