本帖最后由 iRobot 于 2013-6-17 19:58 编辑
周末看了晓周和其他几位老师关于FLL的帖子,深受震撼。回忆一下自己像他们那么大的时候,会用键盘打个汉字就是很了不起的事情了。更何况是自己制作机器人这样的壮举。真可谓是人才辈出,有这样的小同学们真是令人欣慰,少年强则国一定强!
我接触乐高NXT比较晚,也就2个月前才第一次知道了这个东东。中间因为没有空闲时间,一直未进行深入的研究。直到上周赶上五一长假,突然发现有时间了,于是毫不犹豫的上X宝,下单,付款,等待,收货!终于见到NXT了,呵呵。
因为之前也在论坛上了解了一下NXT编程的基础知识,一些技术贴也翻看了一下,对于乐高编程是有一定了解的。但是总体感觉一是内容较少,不够丰富,二是讲解不够细致,让人感觉上手不是那么容易。毕竟我看到论坛上还有许多年龄不大的朋友,可能基础会稍弱一些。所以我决定将自己学习的过程记录下来,作为一个系列教程,对机器人编程进行一个由浅至深的讲解,希望能够帮助到热爱NXT,热爱机器人的朋友们。教程面向的是不具备编程基础的人,当然有一定编程知识的朋友也可以温故知新。要注意,教程基本不涉及机械结构。因本人学识有限,文中不当之处还望高人指正,若能起到抛砖引玉的作用,那就万分欣慰了。
系列教程本着深入浅出的原则,尽量用易懂的语言描述编程过程,保证让你快速上手。但是有一点,必须有一定的毅力才能有所收获。如果抱着三天打鱼两天筛网的态度,那是很难学到东西的。
感谢中文乐高的几位版主,你们的帖子带我走进乐高大门。
目录(浅色字体为预期)(最新内容请查阅置顶帖总目录)
下面是正文!
第一篇:前言
1. 选用什么语言。
语言的选择很重要。一门强大的编程语言,是学习的基础。根据我的了解,主要的NXT编程语言有 - NXT-G(推荐)
- LeJOS(推荐)
- Microsoft® Robotics Studio (MSRS)(关注)
- RobotC
我来分析一下上述语言。如果不考虑将来的发展,只是用于NXT编程,那么NXT-G就是最佳选择。尤其是内置的快速编程功能更是方便上手。但是如果抛开NXT,那么NXT-G马上成为最不推荐的。这种编程方式太另类,不具备通用性,没有进一步深造的潜力。况且图形化的编程界面开发效率不高(因人而异),无法做出复杂的业务逻辑。所以本教程就不涉及NXT-G的相关内容了。需要学习的朋友可以看糖总管的“【NXT-G中文使用帮助】总目录(完整)”,写的很详细。
而其他三种语言都具备通用性,LeJOS基于java,RobotC基于C语言(伪),Microsoft® Robotics Studio (MSRS)基于C#,VIsual Programming Language和微软的CLR2.0。这其中LeJOS是开发首选,原因有三点。
- 以Sun的Java语言为基础,基本上就是原版的Java语言,而Java的开发环境是免费的。
- Java是一门面向对象的语言,本身具有其优越性,又具有跨平台的特性,不仅可以在NXT上运行,更可以做智能手机和PC的应用。
- 丰富的代码资源。当然NXT-G也有。但是这个代码资源并不是指NXT上所跑的程序,而是范指智能设备和PC上的资源。你也不希望自己的程序一辈子只跑在NXT上吧。
Microsoft® Robotics Studio (MSRS)是次选。微软的强大就不多说了,而且微软的开发环境是最优秀的。我这么说可能一些高人会反对,这个问题仁者见仁智者见智,争论也不是一两天了。不过我坚持自己的观点。举个例子,在Visual Studio中书写一个if else语句需要敲击键盘三次就可完成,但是在Eclipse中要敲击20次以上。(我承认Eclipse用的并不熟)。但是关于Microsoft® Robotics Studio (MSRS)的教程我看到少之又少,我也只能在官网和几位网友的博客上了解一二。本系列教程我想前半部分用LeJOS,后半部分用Microsoft® Robotics Studio (MSRS)。(顺便一提,一般带上Studio的都是集成开发环境,并不是一门语言,MSRS的语法是C#,但是开发环境是一个叫Visual Programming Language的东西,Visua Studio辅助开发。) RobotC也是一个不错的选择,毕竟C语言的群体应该是最大的。但是它先天有些不足,我也精力有限,这个系列教程就不提它了。有兴趣的朋友可以到相关板块,糖总管有详细的讲解。
2. 选用什么开发环境(编译器,IDE)
上面说的是语言,语言就好比中文,英文,日文,开发环境就是写语言的环境,好比有些人用Word,还有些喜欢用记事本。选择起来很简单,LeJOS选用Eclipse,Microsoft® Robotics Studio (MSRS)选用Visual Programming Language和Visual Studio。后面一课就是搭建开发环境。
3. 课程包括的内容
- NXT上LeJOS的开发
- 安卓手机开发
- 使用安卓手机控制NXT
- PC,安卓手机,NXT之间的互相通信,控制
暂时是这4个大块内容,细分还有许多,例如如何使用手机上的传感器和摄像头,使用wifi,GPS等。
4. 研究方向
对于NXT的编程包括数据采集,运算,反馈三个环节。我的思路是:
- 除去已有的NXT距离,光线传感器等之外,其他传感器全部使用手机或PC上的。例如陀螺仪,磁场,气压计,GPS等。(单片机过硬的人想法可能会正好跟我相反,呵呵)
- 将所有的运算集中在手机或电脑上完成。将来还可能包括语音控制或图像识别等。
- 所有的物理输出(马达,电机)全部由NXT控制,视频输出由NXT,手机,PC共同完成。
5. 课时
我是希望能每周更新一课内容,当然只是希望,只是希望,呵呵。
好了,前言部分讲完了。稍后正式进入课程《搭建LeJOS开发环境》。
下面是我早上编写的一个NXT记事本,还有一个图片浏览器忘记拍照了。这些东西可以用LeJOS写出来,并且编写方法一目了然,即使从没有见过NXT的人也可以坐在一起讨论编程方法。这就是LeJOS的优势。
另附本人作品4枚。
【iRobot原创】【No.1】利用手机传感器打造指南车
http://bbs.cmnxt.com/thread-11068-1-1.html
【iRobot原创】【No.2】蓝牙+语音控制NXT小车
http://bbs.cmnxt.com/thread-11087-1-1.html
【iRobot原创】【No.3】电子+机械=拉霸 这个够炫吗
http://bbs.cmnxt.com/thread-11097-1-1.html
【iRobot原创】【No.4】光波塔 烽火传讯 强悍不需解释
http://bbs.cmnxt.com/thread-11139-1-1.html
|