码匠编程
A. 关于编程的书籍
一、Python系列(3本)
如果你之前一点编程经验都没有,先看如下两本:
1、《简明Python教程》(A Byte of Python)
入门Python的绝佳Tutorial,从书的目录便可以了解到作者Swaroop C H清晰的行文思路,以及对Python高超的驾驭能力。
2、《集体智慧编程》
以具体实例的方式来展示Python的编程技巧,受益良多。作者用非常直观的方式向读者展示了人工智能和机器学习中的大量经典的算法。更可贵的是,作者在展示算法时所使用的例子都是网络中非常有代表性的场景,并且很多情况下还会结合一些实际运营的 Web 站点的数据作更进步阐释。当然,作为一本实用型的书,少不了的是大量可运行的代码。
3、《Python Cookbook中文版,第3版》
这本书可谓Python版《代码大全》。有人说《代码大全》这类书是字典,其实不尽然《代码大全》是高手过招。《Cookbook》也如此,阅读时总能让你有一种:“哇塞,漂亮!”的感觉。能把 Cookbook 全部读完,你的Python水平绝对发生质变。
二、java语言系列(3本)
1、《Java核心技术·卷1:基础知识(原书第9版)》
Java领域最有影响力和价值的着作之一,拥有20多年教学与研究经验的资深Java技术专家撰写,与《Java编程思想》齐名。
2、《算法 第四版》
Java 语言描述,算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多,可以说是Java程序员的必备书籍之一
3、《数据结构与算法分析:Java语言描述》
这本书真是非常好!个人感觉很适合给初学者入门看,里面的分析数学公式恰到好处,没有算法导论的令人望而生畏,也没有国内图书的草草了事,既学习了数据结构又有刚刚好的算法分析,很容易使人产生共鸣。
当然,对于Java我们建议进行系统的学习,扎实基础不能只靠看书。如果你有任何疑问,欢迎你在千锋武汉官网上留下你的相关情况,我再对号入座帮你解答。
在这里插入图片描述
三、前端系列(4本)
1、《Java权威指南(第6版)》
淘宝前端团队翻译,这本书又叫犀牛书,号称Java开发者的圣经,网上对此书评价很多,大概意思都是说这本书是一本Java文档手册,没有完整看过一遍此书的都不能算是一名合格的前端工程师。
2、《Java高级程序设计(第3版)》
又称红宝书,雅虎首席前端架构师,YUI的作者Zakas出品。虽然书名带了“高级”二字,但是讲得也很基础,而且行文风格很流畅,每一小节就像是一篇博客,读起来并不枯燥,个人感觉比上面那本犀牛书可读性更强。
3、《Java设计模式与开发实践》
本书是在设计模式上的进一步扩充。一大特点就是结合实操,代码完整能直接应用到实际开发中。
4、《Web性能权威指南》
本书是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物。本书目标是涵盖Web开发者技术体系中应该掌握的所有网络及性能优化知识。
B. 编程游戏适合几岁的孩子玩呀怎么给孩子做编程启蒙呀
推荐给孩子购买一个阿尔法蛋编程机甲S1,既可以玩积木又能学编程,它没有所谓的纸质图纸,通过蓝牙连接App,没有网络限制非常方便,而且也避免了纸质图纸容易丢失撕毁的情况。孩子用的很喜欢,每天都玩的兴致勃勃!
C. 请问学习java需要什么基础吗
入门学习java唯一需要的基础就是英语词汇量,入门阶段不需要太多的词汇量,3000足够了(这里面java程序类关键字是最重要的),注意仅仅是词汇量而已,不需要掌握英语口语沟通中的语法。但是入门以后,想要完全精通java(当然这不是一件容易的事),8000以上词汇量还是要有的。
除此之外就是书本上最基础的一些java理论知识,这些理论知识不一定必须都要一字不差的背下来,但是这些都是基础需要很好的了解和理解,而且并不难理解。
这些基础的东西并没有什么技术性的难度,可以说就是一些需要死记硬背的东西而已,真正有难度的是你之后自己动手写代码的这个阶段。刚开始可能很难自己动手写出来100行以上逻辑性强且没有Bug的代码,基本都是需要看着别人的代码然后自己照葫芦画瓢的抄写,不然就不会写,所有初学者开始都是这样,所以是很正常的,这个就需要平时多写多练,一点一点累积。知识点积累的多了,逻辑通顺了,之后自然而然的就会动手写出自己的代码了。就是一个多写多练的问题。
如果你已经决定了要去学java,并且以找工作为目的的话,不建议自学,因为java想要零基础自学到最后顺利找到开发的工作,可以说基本是不可能的。一种情况除外,就是你对电脑编程有着异于常人的天赋可以无师自通,否则的话还是要去系统的培训一下。只要你能跟着有经验的人学,能有人带你练习做项目,外加平时自己多写代码,多去接触并理解新的知识点,最后找到开发的工作问题还是不大的。具体可以参考下这个网站网页链接,希望我的回答能帮到你。
D. 15 岁学编程晚吗
十五岁学编程晚么?当然不晚,我三十岁学拳也不晚,但没有幼儿时候的伐毛洗髓和少年时候打下的底子,终究此生成就有限难窥天人。
我看题主今年十五,却毫无少年英豪该有的锐气,即便是开始日夜苦练编程,这辈子也不过是个码匠。不过我给你指条明路,世上徒弟胜过师傅儿子强过老子事儿多了去,你家孩子还有救。想来你走上程序员之路 后有孩子起码得三十岁,这十五年的准备也足够你领你孩子上路打基础。
我这有篇给孩子的筑基代码,一会儿私信给你,提前给老婆服药调节生理周期,务必在10.24日那一天排卵,行房之时定义插入深度两寸为浅即0,四寸为深即1,一字不错地将我给你的筑基篇输入。此篇乃是我盗取的仙经,所以在你输入之时,必有外魔来扰,你当严守本心忍精不射,务必待最后一个字符录入完毕时将酝酿已久的精华注入,并在三秒钟之内身体平躺小腿垂直立起,两手于头前合成箭头形——即全身成回车形状,且箭头当指向西雅图方向借微软几十年积攒之灵气。
如是行事,令郎于胎中便会自行修炼筑基篇。十月后,此子落地便向四方行七步,举右手而唱咏之偈句:“Java,C,C++,C#,PHP,Python,VB ……唯我独尊,今兹而往生分已尽” 这孩子生而为圣,半岁的时候就会有高人来渡他。 "小子,我看你骨骼惊奇,必是编程奇才,将来维护宇宙正义与和平的重任就交给你了!我这有本毕生编程总结的笔记送给你",一个头发胡子花白散乱,格子衬衫冲锋衣都有油点子的老人将如是说,切不可以貌取人将其赶走,这种大机缘不可错过。从此你的儿子就会走上程序员之路,而你会发现,你积累的十五年知识在他两岁时就已无法满足他提出的问题。此时开始让他阅读那本笔记。三年后,孩子五岁时,此笔记也无法满足他,他将走上自我探索的道路。再十年,和你现在一般年龄时,他已是代码世界之王
E. LinuxC编程一站式学习的前 言
本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一。该课程是为期四个月的全日制职业培训,要求学员毕业时具备非常Solid的C语言编程能力,能熟练地使用Linux系统,同时对计算机体系结构与指令集、操作系统原理和设备驱动程序都有比较深入的了解。然而学员入学时的水平是非常初级而且参差不齐的:学历有专科、本科也有研究生;专业有和计算机相关的,也有很不相关的(例如会计专业);以前从事的职业有和技术相关的也有完全不相关的(例如HR);年龄从二十岁出头到三十五六岁的都有。这么多背景、基础、思维习惯和理解能力完全不同的人来听同一堂课,大家都迫切希望学会嵌入式开发技术,投身IT行业,这就是职业教育的特点,也是我编写本书时需要考虑的主要问题。
学习编程绝不是一件简单的事,尤其是对于零基础的初学者来说。大学的计算机专业有四年时间从零基础开始培养一个人,微积分、线性代数、概率论、离散数学、组合数学、自动机、编译原理、操作系统、计算机组成原理等一堆基础课,再加上C/C++、Java、数据库、网络工程、软件工程、计算机图形学等一堆专业课,最后培养出一个能找到工作的学生。很遗憾这最后一条很多学校没有做好,据我们考查,来亚嵌培训的很多学生基础几乎为零,我不知道为什么。与之形成鲜明对比的是,只给我们四个月的时间,同样要求从零基础开始,最后培养出一个能找到工作的学生,而且还要保证他找到好工作,这就是职业教育的特点。
为什么我说“只给我们四个月的时间”?我们倒是想教四年呢,但学时的长短我们做不了主,是由市场规律决定的。四年的任务要求四个月做好,要怎么完成这样一个几乎不可能的任务呢?有些职业教育给出的答案是“实用主义”,打出了“有用就学,没有用就不学”的口号,大肆贬低说大学里教的基础课都是过时的、无用的,只有他们教的技术才是实用的。这种炒作很不好,我认为大学里教的每一门课都是非常有用的,基础知识在任何时候都不会过时,倒是那些时髦的“实用技术”有可能很快就会过时了。
四年的任务怎么才能用四个月做好?我们给出的答案是“优化”。现在大学里安排的课程体系最大的缺点就是根本不考虑优化。每个过来人都会有这样的感觉:大一大二学了好多数学课,却不知道都是干什么用的,不明白为什么要学。连它有什么用都不知道怎么能有兴趣学好呢?到大三大四学专业课时,用到以前的知识了,才发现以前学的数学是多么有用,然而早就忘得一干二净了,考完试都还给老师了。回头重新学,才发现很多东西以前根本没学明白,现在真的学明白了,那么前两年的时间岂不是都浪费了?大学里的课程体系还有一个缺点就是不灵活,每门课必须占用一个学期,必须由一个老师教,不同课程的老师之间没有任何沟通和衔接,其实这些课程之间是相互依赖的,把它们强行拆开是不符合人的认知规律的。比如我刚上大学的时候,大一上半学期就被逼着学习C语言,其实C语言是一门很难的编程语言,不懂编译原理、操作系统和计算机体系结构根本不可能学明白,那半个学期自然就浪费掉了。当时几乎所有学校的计算机相关专业都是这样,大一刚来就学C语言,有的学校更疯狂,上来就学C++,导致大多数学生都以为自己会C语言,但其实都是半吊子水平,到真正写代码的时候经常为一个Bug搞得焦头烂额,却没有机会再系统地学一遍C语言。因为在学校看来,C语言早在大一就给你“上完了”,就像一顿饭已经吃完了,不管你吃饱没吃饱,不会再让你重吃一遍了。显而易见,如果要认真地对这些课程进行优化,的确是有很多水分可以挤的。
本书有什么特点
本书不是孤立地讲C语言,而是和编译原理、操作系统、计算机体系结构结合起来讲。或者说,本书的内容只是以C语言为载体,真正讲的是计算机和程序的原理。
强调基本概念和基本原理,在编排顺序上重视概念之间的依赖关系,每次引入一个新的概念,只依赖于前面章节已经讲过的概念,而绝不会依赖于后面章节要讲的概念。有些地方为了叙述得完整,也会引用后面要讲的内容,比如说“有关××我们到第×章再仔细讲解”,凡是这种引用都不是必要的依赖,可以当它不存在,只管继续往下学习就行了。
尽量做到每个知识点直到要用的时候才引入。过早引入一个知识点,讲完了又不用它,读者很快就会遗忘,这是不符合认知规律的。
本书面向什么样的读者
这是一本从零基础开始学习编程的书,不要求读者有任何编程经验,但读者至少需要具备以下素质:
熟悉Linux系统的基本操作。如果不具备这一点,请先参考其他教材学习相关知识,熟练之后再学习本书,《鸟哥的Linux私房菜》据说是Linux系统管理和应用方面比较好的一本书。但学习本书并不需要会很多系统管理技术,只要会用基本命令、会自己安装系统和软件包就足够了。
具有高中毕业的数学水平。本书会用到高中的数学知识。事实上,如果不具有高中毕业的数学水平,也不必考虑做程序员了。但并不是说只要具有高中毕业的数学水平就足够做程序员了,只能说看这本书应该没有问题,数学是程序员最重要的修养,计算机科学其实就是数学的一个分支,如果你的数学功底很差,日后还需要恶补一下。
具有高中毕业的英文水平。理由同上。
对计算机的原理和本质深感兴趣,不是为就业而学习,不是为拿高薪而学习,而是真的感兴趣,想把一切来龙去脉搞得清清楚楚而学习。
勤于思考。本书尽最大努力理清概念之间的依赖关系,力求一站式学习,读者不需要为了找一个概念的定义去翻阅其他书籍,也不需要为了搞清楚一个概念在本书中乱翻一通,只需要从前到后按顺序学习即可。但一站式学习并不等于傻瓜式学习,有些章节有一定的难度,需要读者积极思考才能领会。本书可以替你节省时间,但不能替你思考,不要指望像看小说一样走马观花看一遍就能学会。
为什么要学这本书而不是K&R
《The C Programming Language》(后文简称[K&R])是公认的世界上最经典的C语言教程之一,这点毫无疑问。在C标准出台之前,K&R第一版就是事实上的C标准。C89标准出台之后,K&R跟着推出了第二版,可惜此后就没有更新过了,所以不能反映C89之后C语言的发展以及最新的C99标准。本书在这方面做了很多补充。本书与其说是讲C语言,不如说是以C语言为载体讲计算机和操作系统的原理,而K&R只是为了讲C语言而讲C语言,侧重点不同,内容编排也很不相同。K&R写得非常好,代码和语言都非常简洁,但很可惜,只有会C语言的人才懂得欣赏它,K&R是非常不适合入门学习的,尤其不适合零基础的学生学习。
本书“是什么”和“不是什么”
本书包括两大部分:
C语言入门。介绍基本的C语法,帮助没有任何编程经验的读者理解什么是程序以及怎么写程序,培养程序员的思维习惯,找到编程的感觉。前半部分改编自《How To Think Like A Computer Scientist: Learning with C++》(后文简称[ThinkCpp])。
C语言本质。结合计算机和操作系统的原理讲解C程序是怎么编译、链接、运行的,同时全面介绍C的语法。位运算的章节改编自林小竹老师的讲义;链表和二叉树的章节改编自朱仲涛老师的讲义;汇编语言的章节改编自《Programming from the Ground Up: An Introction to Programming using Linux Assembly Language》(后文简称[GroundUp]),在该书的最后一章中提到,学习编程有两种Approach,一种是“Bottom Up”,一种是“Top Down”,它们各有优缺点,而我们需要将两者结合起来。所以我编写本书的思路是:第一部分Top Down;第二部分Bottom Up;第三部分可以算填补了中间的空隙,三部分全都围绕C语言展开。
这本书定位在入门级,虽然内容很多,但不是一本网络全书,除了C语言的基础知识要讲透之外其他内容都不深入,书中列出了很多参考资料,是读者进一步学习的起点。[K&R]的第1章是一个Whirlwind Tour,把全书的内容简单概括了一遍,然后再逐个深入讲解。本书也可以看作是计算机专业课程体系的一个Whirlwind Tour,学习完本书之后读者有了一个全局观,再去学习那些参考资料就应该很容易上手了。
为什么要在Linux平台上学C语言?
用Windows学C语言不好吗?
用Windows还真的是学不好C语言。C语言是一种面向底层的编程语言,要写好C程序,必须对操作系统的工作原理非常清楚,因为操作系统也是用C语言编写的,我们用C语言编写应用程序可以直接使用操作系统提供的接口。既然你选择了本书,你一定了解:Linux是一种开源的操作系统,你有任何疑问都可以从源代码和文档中找到答案,即使你看不懂源代码,也找不到文档,也很容易找个高手教你,各种邮件列表、新闻组和论坛上从来都不缺乐于助人的高手;而Windows是一种封闭的操作系统,除了微软的员工别人都看不到它的源代码,只能通过文档去猜测它的工作原理。更糟糕的是,微软向来喜欢藏着掖着,好用的功能留着自己用,而不会写到文档里公开。本书的第一部分在Linux或Windows平台上学习都可以,但第二部分和第三部分介绍了很多Linux操作系统的原理以帮助读者更深入地理解C语言,所以后两部分只能在Linux平台上学习。
Windows平台上的开发工具往往和各种集成开发环境(Integrated Development Environment,IDE)绑在一起,例如Visual Studio、Eclipse等。使用IDE确实很便捷,但IDE对于初学者绝对不是好东西。微软喜欢宣扬傻瓜式编程的理念,告诉你用鼠标拖几个控件,然后单击一个按钮就可以编译出程序来,但是真正有用的程序有哪个是这么拖出来的?很多从Windows平台入门学编程的人,编了好几年程序,还是只知道编完程序单击一个按钮就完事了,把几个源文件拖到一个项目里就可以编译到一起了,如果有更复杂的需求他们就傻眼了,因为他们脑子里只有按钮、菜单的概念,根本没有编译器、链接器、Makefile的概念,甚至连命令行都没用过,然而这些都是初学编程就应该建立起来的基本概念。另一方面,编译器、链接器和C语言的语法有着密切的关系,不了解编译器、链接器的工作原理,也不可能真正掌握C语言的语法。所以,IDE并没有帮助你学习,而是阻碍了你的学习,本来要学好C编程只要把语法和编译命令学会就行了,现在有了IDE,除了学会语法和编译命令,你还得弄清楚编译命令和IDE是怎么集成的,这才算学明白了,本来就很复杂的学习任务被IDE搞得更加复杂了。Linux用户的使用习惯从来都是以敲命令为主,以鼠标操作为辅,从学编程的第一天起就要敲命令编译程序,等到你把这些基本概念都搞清楚了,你觉得哪个IDE好用你再去用,不过到那时候你可能会更喜欢vi或emacs而不是IDE了。
体例说明
像The quick brown fox jumps over the lazy dog这样的字体在本书中是代码字体。这种字体的名称是Dejavu Sans Mono,为什么我要提倡用这种字体呢?第一,它是等宽字体,因此适合做代码字体。第二,它的1和l、0和O区分得非常清楚(我在教学中发现初学者很容易把这些字符抄错),因此它比Courier New更适合做代码字体。第三, 它是我的Linux图形终端的默认字体,采用这种字体排版可以使得看书和看屏幕的感觉很一致,希望读者在看这本书时也会有这种Dejavu(似曾相识)的感觉。
像下面这样有边线的是代码:
#! /bin/sh
VAR=1
VAR=$(($VAR+1))
echo $VAR
没有边线的是终端显示,包括输入的命令和程序运行结果,例如:
$ VAR=1
$ VAR=$(($VAR+1))
$ echo $VAR
2
本书中统一用$表示Shell提示符。
加粗的字句表示强调。
在定义一个名词时会给出它的英文名称,例如集成开发环境(Integrated Development Environment,IDE),通过书后的索引可以找到这些定义在书中首次出现的位置。
致谢
本书的写作得到了北京亚嵌教育研究中心的全力支持,尤其感谢李明老师和何家胜老师。没有公司的支持,我不可能有时间有条件写这本书,也不可能有机会将这本书公开在网上。
然后要感谢亚嵌教育的历届学员和各位老师,在教学和讨论的过程中我经常会得到有益的启发,这些都促使本书更加完善。在本书的写作过程中,很多读者为本书提出了很有价值的建议,很多建议是热心网友通过在线评论提出的,有些网友我只知道ID或E-mail。在此向他们表示感谢。
感谢帮助过我的老师们:李明、何家胜、邸海霞、郎铁山、朱仲涛、廖文江、韩超、秦蔚、吴岳、张 、邢文鹏、何晓龙、林小竹、卫剑钒、郭同彬、王波、王磊。
感谢热心网友:ddd、wuyulei、commapopo、田伟、田雨、daidai、邓楠、杜朴风、Zoom.Quiet、陈莉君老师、杨景、章钰、chen、Jiawei Zhang、waterloo、张现超、曾宇、董俊波、RobinXiang、刘艳明、been2100、cleverd、juicerococo、徐斌、cyy、Linux_Xfce、冯海云、侯延祥、churchmice、codycody23、syfeagle、王公仆、刘敏、Laciq、yuchen、陆杨、陈杨希、love_wc3、姚磊、芝麻、wadenx、沈震、sunbingfly、mick、baaluck、曹帅军、zhoudy、朱夜光、刺猬、leezhenfeng、王兆宏、徐凯、码匠、况海斌、尹志伟、王星。
还要感谢电子工业出版社博文视点资讯有限公司的周筠老师和李冰老师的大力支持,感谢江立编辑严谨细致的工作。
在写作过程中我遇到过很多困难:工作繁忙、对未来迷茫、生活压力大、缺乏安全感、个人琐事等。然而有这么多热心的同学、老师、朋友、网友在等着阅读我的书在线更新的内容,给我提建议,希望我把书改得更完善,这是我坚持写下去的最大动力。谢谢你们!
由于作者水平十分有限,没写过C编译器和C标准库,所以疏漏之处在所难免,如有错误欢迎广大读者朋友批评指正。写书是一件严肃的事,书中的错误所有人都看得见,白纸黑字赖不掉的。我教过的很多学生都在大学里学过C语言,甚至考过二级,但程序写得一塌糊涂,连最基本的概念都搞错了,以前学过的C语言教材中的错误在他们脑子里根深蒂固,即使我纠正多次,他们仍然只记得以前学过的错误概念。这种有基础的学生还不如没有任何基础的学生教起来容易。我非常害怕我教给别人的知识也是错的,所以我仔细研究了C99之后才敢动笔写书。这本书涵盖的话题比较广泛,我竭尽全力也不足以保证书中的内容全部正确,还要依靠社区的力量一起来完善这本书,这样才能真正对读者负责,所以我选择将这本书开源。。
希望本书能成为你求学道路上的第一个伙伴。
宋劲杉
2009年7月22日
F. 工业机器人有示教在再线编程与离线编程两种方法什么场合适合用示教在再线编程,什么时候适合用离线编程
随着科学技术日新月异的进步,工业机器人已成为当今工业生产上重要的组成部分,它可以很精确的完成形形色色的任务和操作。相比于人类的局限性而言它们有更为广泛的应用空间。1959年美国英格伯格和德沃尔(Devol)制造出世界上第一台工业机器人,到了七十年代后,随着计算机的发展,机器人才广泛应用于工业的生产上。随着机器人的广泛应用,机器人技术也由单一的工业生产方面进一步向各个领域延伸和应用。
【没有更好,只有更适合】
机器人的智能化发展是一个大的趋势,那么对于它是如何完成既定工作的话我们就要谈到机器人的编程方式了。通常的机器人编程方式有以下两种:示教编程与离线编程。一段时间以来,似乎存在这样的争论,有人认为示教编程落后,有人认为离线编程太过高大上,无法落地。小萌看来,这种争论实在没有必要,就好比说走路与开车哪个更好一样,没有更好,只有更适合。比如从北京到天津,毫无疑问要选择开车,而从鸟巢到水立方,相信小萌,走路一定比开车适合。下面请来看看示教编程与离线编程,哪个更适合你。
【示教编程】
首先谈谈示教编程,即操作人员通过示教器,手动控制机器人的关节运动,以使机器人运动到预定的位置,同时将该位置进行记录,并传递到机器人控制器中,之后的机器人可根据指令自动重复该任务,操作人员也可以选择不同的坐标系对机器人进行示教。
示教器是示教编程的必备工具,很像以前游戏机的游戏手柄,控制魂斗罗在战场上下翻飞。所不同的是,示教器控制机器人走一遍之后,把走过的路记录下来,以后让机器人重复走这条路,这就是示教编程。但令人惋惜的是,各家机器人的示教器可谓五花八门,操作也不一样,编程指令也不一样,还是现在智能手机好,苹果和安卓两家一统天下了。下面是从网上搜到的一些示教器的图片分享给各位想学机器人编程的小伙伴。
目前,大部分机器人应用仍采用示教编程方式,并且主要集中在搬运、码垛、焊接等领域,特点是轨迹简单,手工示教时,记录的点不太多。总结一下,示教编程有以下优缺点:
优点:
编程门槛低、简单方便、不需要环境模型;对实际的机器人进行示教时,可以修正机械结构带来的误差。
缺点:
1、示教在线编程过程繁琐、效率低。
2、精度完全是靠示教者的目测决定,而且对于复杂的路径示教在线编程难以取得令人满意的效果。
3、示教器种类太多,学习量太大。
4、示教过程容易发生事故,轻则撞坏设备,重则撞伤人。
5、对实际的机器人进行示教时要占用机器人。
【离线编程】
手动示教编程暂且就先说到这里,下面就来说说第二种机器人编程方式即离线编程。
随着机器人应用领域的扩展,示教编程在有些行业显得力不从心了,于是,离线编程逐渐成为当前较为流行的一种编程方式,首先谈谈什么是离线编程。离线编程,是通过软件,在电脑里重建整个工作场景的三维虚拟环境,然后软件可以根据要工加零件的大小、形状、材料,同时配合软件操作者的一些操作,自动生成机器人的运动轨迹,即控制指令,然后在软件中仿真与调整轨迹,最后生成机器人程序传输给机器人。离线编程克服了在线示教编程的很多缺点,充分利用了计算机的功能,减少了编写机器人程序所需要的时间成本,同时也降低了在线示教编程的不便。目前离线编程广泛应用于打磨、去毛刺、焊接、激光切割、数控加工等机器人新兴应用领域。
如同示教编程离不开示教器一样,说到离线编程就不得不说说离线编程软件了,提到这里大家能听过的像RobotArt、RobotMaster、RobotWorks、RobotStudio等,这些都是在离线编程行业中首屈一指的大牛。
优点:
1、能够根据虚拟场景中的零件形状,自动生成复杂加工轨迹。
像打磨、喷涂行业,不再像搬运时那样只需示教几个点了,而是几十甚至几百个,离线编程在这方面优势十分突出。RobotArt在这方面做得还是比较好的,功能强大而不显繁杂,有多种生成轨迹的方式,例如:【沿着一个面的一条边】、【曲线特征】等轨迹生成方式,可以应用于不同的场景上。
2、可以控制大部分主流机器人。
示教编程只针对特定的机器人进行操作,而离线编程在这方面就不受机器人的限制了(主要指第三方离线编程,像RobotStudio之类的本体厂商机器人,是只支持自家机器人的)。RobotArt、RobotMaster支持的机器人品牌都比较多,不过,RobotArt支持在线机器人库,在云端的机器人库是源源不断更新的,不仅支持像ABB、KUKA等这样鼎鼎有名的机器人品牌,同时也支持国内的大多数机器人品牌,像广数、新时达等。
3、可以进行轨迹仿真、路径优化、后置代码的生成。
这是区别于示教编程的一个显着的优点。轨迹生成后可以在软件中检测一下机器人走的路径是否是正确的,然后可以对生成的轨迹进行优化,这些只需要在虚拟环境中操作就可以了。以RobotArt为例,在RobotArt中一键式生成轨迹后还可以进行仿真以及对生成的轨迹进行优化,最后只需点击一下后置按钮就可以生成机器人可识别的语言了。这些看来复杂难懂的操作在RobotArt中只需轻轻点几下就可以完成了。
4、可以进行碰撞检测。
因为系统执行过程中发生错误是不可避免的,我们首先要有碰撞检测功能,检测到程序执行过程中出现问题的地方。这个听起来如此高大上的功能在RobotArt中也可以看到。RobotArt在程序仿真的时候,打开干涉检查功能,会对轨迹中的错误做初步检测。生成后置程序的时候,会对后置的机器人数据做最后的检测过滤,如果发现有不符合程序正常运行的数据,会拒绝生成后置代码。这样做的目的是最大程度减少,来自程序设计本身的失误。
5、生产线不停止的编程
示教编程另一个让人很头痛的问题,就是面对当前多件小批量的生成方式,对于一个新的零件,总要停下生产线来编程,导致机器人被闲置,造成资源浪费。有了离线编程,在当前生产线还在工作时,编程人员就同时在旁边设计下一批零件的轨迹了,这就是工业4.0之中的效率。已经有许多用户采用RobotArt离线编程软件,在生产时进行同步编程了。
缺点:
1、对于简单轨迹的生成,它没有示教编程的效率高,例如在搬运、码垛以及点焊上的应用,这些应用只需示教几个点,用示教器很快就可以搞定,而对于离线编程来说,还需要搭建模型环境,如果不是出于方案的需要,显然这部分工作的投入与产出不成正比。
2、模型误差、工件装配误差、机器人绝对定位误差等都会对其精度有一定的影响,我们需要采用各种办法来尽量消除这些误差。
从总体上看,离线编程仍处于发展阶段,在一些复杂应用中,有些技术尚待突破。但由于机器人的应用越来越复杂化,从长远上看,离线编程是时代发展的一项重要技术。虽然以RobotArt,RobotMaster为代表的国内外离线编程软件,在工业或是教学上也得到了广泛的应用,但个人认为在现有的功能上可以从以下方面进一步得以发展:
1、友好的人机界面,直观的图形显示。这两者对于操作者来说都是非常重要的,人机界面友好、图形显示直观能够让初学者易懂,有想继续学习的欲望首先就是软件设计的一个很大的成功。
2、可以对错误进行实时预报,避免不可恢复错误的发生。
3、现有的离线编程仿真软件应该提高数模建立的合理性。由于离线编程系统是基于机器人系统的图形模型来模拟机器人在实际工作环境中的工作进行编程的,因此为了能够让编程结果很好的符合实际,系统应能够计算仿真模型和实际模型之间的误差,并尽量减少二者的误差。
【选择适合你的】
再回到本文开始的话题,示教编程与离线编程并不是对立存在的,而是互补存在的,在不同的应用领域,根据具体情况,选择能帮你提高工作效率的、能提高工作质量的一种编程方式。而且在看来,离线编程有时还要辅以示教编程,比如对离线编程生成的关键点做进一步示教,以消除零件加工与定位误差,是业内常用的一种办法。
机器人离线编程系统正朝着一个智能化、专用化的方向发展,用户操作越来越简单方便,并且能够快速生成控制程序。同时机器人离线编程技术对机器人的推广应用及其工作效率的提升有着重要的意义,简单来说,如果没有离线编程,也许机器人还只能干搬运、码垛这些力气活,永远无法成为打磨、喷涂、雕刻行业的新生代“工匠”。
————————————————
版权声明:本文为CSDN博主“guanguanmeng”的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guanguanmeng/article/details/51761963