乐高吧 关注:404,795贴子:2,040,694

乐高深度扫盲-产品篇(可编程系列)

只看楼主收藏回复

什么,你想玩乐高机器人?上班时间还没码够代码是么 ;)
这篇我来介绍一下乐高的MindStorms系列产品,通常也直呼其为乐高机器人系列,它的重点,是可编程的能力
乐高可编程机器人的产品历史,源自于和麻省理工学院合作的项目。从1998年推出了的第一代“智慧型可编程化积木” 开始,到目前为止(2016年),乐高机器人一共推出了三代产品,在此期间还陆续推出过大小几种简化的可编程产品,用于特定的套装系列。


IP属地:上海1楼2016-12-11 09:50回复
    乐高深度扫盲-产品篇(下)
    乐高深度扫盲-产品篇(中)
    乐高深度扫盲-产品篇(上)
    乐高深度扫盲-观念篇
    之前的这几篇,自己吧内搜吧,懒得搜的可以加公众号


    IP属地:上海2楼2016-12-11 09:52
    回复
      2025-08-30 16:29:12
      广告
      不感兴趣
      开通SVIP免广告
      Mindstorms的第一代产品当时全称还是 Robotics Invention System(RIS),主控模块是 RCX 1.0,在2000年前后,先后更新了RCX的1.5和2.0的版本

      RCX 1.0 9719

      9719 套装内容
      RCX做为乐高机器人第一代的产品,基本上已经奠定了后面几代产品的整体基调:
      首先是有一个主控模块,可以通过编程,控制与之相连的外部组件,配备显示屏可以做一些信息和状态反馈
      用于动力输出的马达,通过接口与主控模块相连接,接收指令,同时由主控模块供电
      各种传感器(比如触动,温度,距离,光线等),同样通过接口与主控模块相连接,用于采集外部反馈
      主要结构组件采用乐高科技系列的零件,(原因也很明显,机器人也是要用来执行各种机械运动的)
      总体上来说,你可以认为,机器人系列是科技系列的一个智能加强版,通过编程来驱动马达,而不是像普通的科技系列套装那样,通过遥控来手工控制马达的运作。MindStorms系列的伺服马达和科技系列的马达构成也略有不同,MindStorms系列的伺服马达具备角度步进控制的能力,所以能通过程序精确控制并完成特定的定位动作
      此外,传感器的引入,也使得MindStorms系列的编程不仅仅是完全机械化的执行固定的程序动作,而是可以将外部环境的信息采集反馈给程序,从而完成更加智能的行为控制

      RCX1.0 搭建的自控履带小车,配备两个触动传感器用于探测障碍
      第一代产品RCX的主控模块,使用8位单片机进行编程,通过红外端口和PC主机进行通讯,用于下载程序到主控模块


      IP属地:上海3楼2016-12-11 09:54
      回复
        编程
        说到这才说到重点,搭建完模型的机械结构,只完成了第一步,你还需要通过编程来驱动你的模型
        MindStorms官方推荐的编程方式,是使用基于NI的LabView平台开发的图形化编程软件进行编程(定位青少年嘛,也是为了降低编程门槛),使用的编程语言是被称作G语言的一种基于流程图的可视化编程语言。在NXT时代,对应的版本叫做NXT-G,到了EV3时代,也升级为EV3-G(2011年,NXT-G曾经在世界编程语言排行版上排名到第15位),NXT-G只有基于PC的开发平台,而EV3为了进一步降低编程门槛,还推出了IPAD版本的简化版的开发软件 : EV3 programmer

        IPAD版 EV3 programmer


        IP属地:上海8楼2016-12-11 09:58
        回复
          G语言使用各种功能模块和流程图模块来编写程序逻辑,通过设置各个模块的参数变量来控制程序的行为,如下图所示,EV3-G版本的编程软件支持的部分外设功能模块和流程运算模块

          控件模块
          控件模块
          用这些模块搭建的一个简单的流程图,可能像下面这样:
          简单的流程
          稍微复杂一点的流程图可能像下面这样:

          复杂一点的流程
          如果还觉得不够抽象的话,再看看RCX时代的G语言开发软件,ROBO LAB 写出来的程序,是长这样的 :)

          用robolab开发的程序
          乐高的图形化编程软件,有一点体验做得很棒:它将编程的实际操作和帮助文档有机的结合在了一起。在软件内以向导的方式提供了官方示例的机器人模型的详细搭建步骤,同时对于编程部分,也提供了分步引导的编程步骤。帮助文档的界面和实际编程的界面完美的融合在一起,很少看到过教学体验比这更好的软件。比如NXT2.0版本的一个弹球机器人模型的帮助文档如下图所示:

          NXTshooter bot模型的搭建示例
          如果你有一定的编程经验,看到这里,你可能会怀疑,图形化编程虽然上手比较容易,但是在编写流程分支逻辑较为复杂的程序时,操作起来会不会比较麻烦?对于程序员来说,很多逻辑用代码来编写可能更加快捷一些,用各种组件拖拽,画成流程图反而是繁琐的
          有这种想法的不止你一个,所以,除了乐高官方推出的G语言开发软件以外,各种第三方公司和个人爱好者还为MindStorms 开发了支持各种不同编程语言的编程工具,所涵盖的语言包括: C / C++ / Basic / Python / Java / Haskell / Ruby / C# / Lisp / Swift 等等,当然,有些语言很多只是功能简化的版本(毕竟MindStorms主控模块的ROM和内存大小都有限) 。这些语言,也不是在所有的MindStorms产品上都支持,目前以NXT版本的支持最广泛。
          理论上,既然现在的EV3运行的已经是Linux,那么应该凡是能在linux上编译执行的语言都能支持,但是前提是,你需要有对应版本的编译器,EV3的硬件驱动和马达,传感器等组件的驱动库的支持,以及各种外设的Library函数库。
          所有的语言中,支持C语言的工具和开发环境相对成熟,完备一些,简单高效最重要,多数情况下,if else for switch也就差不多了 ;)

          比如,ROBOTC 开发环境,提供类C的编程语言支持


          IP属地:上海9楼2016-12-11 10:01
          回复
            书籍
            编程自然离不开教材 ;) 理论上看帮助文档你也能学会,不过,还是看书来得快
            首先当然是当家语言,NXT-G的教材了,下面这两本看起来比较靠谱(看起来,是因为我自己并没看过,当年玩NXT的时候,这么贵的原版书籍买不起:)

            NXT-G编程艺术

            NXT-G编程指南
            然后是EV3版本的教材,有中文版相对就便宜一些了:

            EV3程序设计艺术
            第三方的编程环境也有教材,比如NXC(Not exactly C)

            NXC编程入门
            还有不怕事多,教你自制外设,动手改造硬件的书籍,比如下面这本Extreme NXT(这本书,若干年前出差去美利坚的时候,在amazon上淘了一本二手的,至今没有动手实践过。。。:(

            Extreme NXT


            IP属地:上海10楼2016-12-11 10:04
            回复
              大爱我EV3


              IP属地:甘肃来自Android客户端11楼2016-12-11 10:04
              回复
                EV3编程气死强迫症,当年搞事情的时候排班就花了一个多小时,还是喜欢NXT2编程的模板


                IP属地:甘肃来自Android客户端12楼2016-12-11 10:06
                回复
                  2025-08-30 16:23:12
                  广告
                  不感兴趣
                  开通SVIP免广告
                  总结
                  乐高MindStorms机器人系列产品,最好玩的地方在于拥有各式各样的传感器以及可编程的主控模块,发挥你的想象和编程能力,你可以用它来做很多有趣的东西,比如做个会折纸飞机的流水线,或者做几个机械时钟
                  即使你自己不具备MOC的能力,你也能在官网找到二十个以上有完整向导的示例模型,也够玩一阵子了
                  如果你不满意乐高主控模块的性能,也可以尝试一下Arduino,树莓派等开发套件,它们都有第三方生产的用来对接乐高MindStorms组件的外设转接板,然后,你就可以启动你的登月或无人驾驶技术的研究啦 ;)
                  好了,乐高的主要产品线,介绍到这里,也可以告个段落了,下一篇,准备介绍一下相关的社区和网站。最后,记得下次别人问你最近在做什么?你可以回答:哦,在研究 “两足步行装置的运动学原理以及基于PID算法的自适应姿态控制理论”


                  IP属地:上海13楼2016-12-11 10:07
                  收起回复
                    视频来自:优酷

                    lego时钟


                    IP属地:上海14楼2016-12-11 10:08
                    收起回复

                      最后,如果问这个系列其它文章在哪里的,吧内自己搜索 乐高深度扫盲 或者,加我的个人公众号查看。


                      IP属地:上海15楼2016-12-11 10:10
                      回复
                        好帖,我就不续你了


                        IP属地:甘肃来自Android客户端16楼2016-12-11 10:14
                        回复
                          第一章图的左上角和右下角哪俩是啥?其余的都见识过


                          IP属地:河北来自Android客户端17楼2016-12-11 11:22
                          回复
                            好贴


                            IP属地:四川来自Android客户端18楼2016-12-11 12:28
                            回复
                              2025-08-30 16:17:12
                              广告
                              不感兴趣
                              开通SVIP免广告


                              IP属地:广东来自Android客户端19楼2016-12-11 12:39
                              回复