这方面已经可以找到很多答案了,但是学习这种东西只能靠自己多练习了,我只简单从我个人角度给出几个建议吧。
首先,就是要先了解ROS的基本架构和开发方式。我个人是强烈推荐直接看ROS官网上的教程[url=]ROS/Tutorials[/url]的Beginner Level(多看几遍),同时充分使用ROS的问答社区[url=]ROS Answers[/url]与各模块的Mail Lists,很多基础问题可能前人都遇到过。 其次,在了解ROS的基本架构与开发方式后,就可以有针对性地看自己所关心的部分了。如做移动机器人的同学就去看Navigation教程;做物体识别的就去看ORK教程;做运动规划的就去看MoveIt教程。这一步最好能跟有实际机器人练手(如果没有的话,就用gazebo仿真)。由于一些模块的教程不够清楚(如MoveIt),一定要多练习,甚至是去看部分源码,先保证自己会用ROS实现一些功能。 对于ROS与实际机器人的连接,建议仔细看看action(编写机器人驱动package)、URDF(机器人描述文件)的教程(或者ros_control)。如下图,我为SDA5F机器人编写了URDF文件,并修改了motoman_driver中的action,使得在ROS环境中用MoveIt规划控制双臂机器人运动。
最后,就是进阶阶段了。我要强调一句“ROS只是一个工具”,你会用ROS做SLAM并不能说明你会做SLAM。对于自己研究的内容,必须沉下心去看教材和论文,去理解每种算法背后的原理,知道如何调整算法参数、如何改进算法,最终能够自己编写某部分代码,并替换ROS的相应模块(如自己写运动学正逆解替代KDL等)。
做研究,交流非常重要。如果你改进ROS某一算法后,最好能与package的原作者交流,将自己的修改merge到原项目中,在交流中提高自己与package的水平。当然,如果对算法有疑问,也可以直接咨询作者,ROS里的贡献者大都非常愿意分享和交流。 当然,在问别人之前,请一定要保证自己充分熟悉了官方Tutorials,而不是朝别人发一堆编译错误截图,然后问这是怎么回事。提问的艺术真的非常重要,有时候不是对方不愿意跟你交流,而是对方不愿意手把手带你过Tutorials。 |