常用技能与如何备战offer
在机器人算法的学习过程中,我们如何该用什么语言或工具来实现算法,检验算法的正确性呢?直接上真实机器人不是一个好的选择,一是步骤繁琐不方便,二是若算法有问题,可能会造成安全事故,因此,仿真是算法实践中必不可少的步骤。本文中博主将为大家介绍几种常用的仿真软件。
ROS
ROS是一款专为机器人开发的操作系统,常在ubuntu系统上运行。ROS为机器人软件开发工作者提供一个开源的系统框架,把繁琐的工作都实现好,让用户可以集中注意力于开发自己的领域。对于初学者来说,ROS看可以让新手在短短几天就可以看到一个会动的机器人(虽然不知道背后的原理),但对入门来说是非常友好的。
然而,据博主体感,相比于几年前的火爆,ROS在这两年的热度似乎有所降低,我甚至听说过用“真正的产品都是不用ROS的”“用ROS的都是在骗补贴”这样的过激言论。原因可能与ROS的架构导致其实时性差无法满足工业需求有关。但作为初学者,ROS是一个很好的学习平台,里面有许多开源包供大家学习使用。
若想学习ROS,胡春旭的 《ROS机器人开发实践》 是一个不错的选择,胡春旭的网站古月居里面有很多ROS相关教程,推荐学习。
Matlab&Simulink
机器人仿真中最常用的软件就是Simulink,Simulink是一种可视化的仿真工具,用来验证模型及算法 的正确性。在Simulink中,我们可以很容易地将算法实现成代码,无需痛苦的包下载或环境适配。
此外Matlab/Simulink还提供了最完善的doc(没有之一),不管什么命令官方教程里都给你安排的明明白白的,特别友好。若想系统学习Simulink,可以参考 《Simulink仿真及代码生成技术入门到精通》 。
Adams
Adams是常用的动力学仿真软件,可用于仿真各种复杂的动力学系统,并且可以用于和Simulink联合仿真。常见的用法是在Adams中建立机械臂的模型,将其导出到Simulink中,作为Simulink的一部分,Simulink里实现规划/控制算法,来实现联合仿真。
当然,用于动力学仿真的软件不止Adams一家,另一款比较常用的是Simmechanics,也是Matlab家族里的,优点在于和Simulink仿真的兼容性会更好。缺点也很明显,Adams建模用的是3D模型,非常直观,但Simmechanics是类似于Simulink的可视图链接,相对抽象许多。对于柔性、碰撞、变形的支持也远不及Adams,因此还是推荐使用Adams进行建模。如果想要通过教材系统的学习Adams,推荐 《Adams实例教程》 的前几章。Adams的功能很多,对于机械臂,只需要其中一部分就已经足够。
备战offer经验总结
在编程语言方面,机器人算法工程师一般要求熟悉Matlab与C++,在开发中最常用的就是这两种语言。面试时,有时会考察一些C++相关的基本问题,如C++面向对象编程的基本特征啦,指针和引用的区别啦,都是最基础的。
之前有人问我这个岗要不要刷leetcode,我的建议是要刷。不光要刷leetcode,没有学过数据结构的同学还要补一下数据结构与算法。虽然在我的面试历程中只有三分之一的公司考察了手撕代码,但作为一个算法工程师,了解各种数据结构与基础算法还是很有必要的。不光是为了找工作,更是为了能用在实际工作中。数据要用什么结构储存,要怎么对它们排序,查找,怎么插入,都是写代码时实实在在会遇到的问题。
对于这方面,我推荐 《大话数据结构》 这本书,浅显易懂,适合非科班的朋友使用。如果要刷力扣,建议不要盲目刷,网上有很多帖子教你如何刷力扣,推荐著名博主labuladong的教程。
关于书籍
以上提到的所有书,网上都可以找到电子版,但似乎没有免费的。我这边整理了一份合集,包括上一篇中提到的所有书籍,打包10块钱带走,qq 735148617。