关闭

Ros入門

119人阅读 评论(0) 收藏 举报

第一次接触ROS是在沈阳自动化所做项目的时候,那时候我才知道自己非常感兴趣的机器人领域有一个叫做ROS(Robot Operating System)的平台。仔细了解之后才知道ROS被机器人界看作是一套准标准平台,很多人将其比作是手机界的安卓,电脑界的微软。在我看来ROS最大的优点在于灵活、低耦合、分布式、开源以及功能强大而丰富的第三方功能包(类似于编程语言中的库)。于是申请了ROS相关的项目--自主导航小车PlantBot

ROS虽然叫操作系统,但是真正底层的任务调度、编译、寻址等任务还是由Linux操作系统完成,也就是ROS充其量是一个运行在Linux上的次级操作系统。关于ROS的介绍有一篇大牛写的很不错的文章:机器人操作系统ROS | 简介篇

  • 第一步,安装Linux和ROS

学习ROS首先要安装Linux,为了不抛弃原Windows操作系统,有两个选择:一个是在VMvare等虚拟机上运行,另一个是安装Windows和Linux的双系统。我的建议是电脑有足够的空间的话,最好安装双系统,这样在Linux上使用ROS时运行速度更快。虚拟机跑ROS我没尝试过,但是网上也看到有人用虚拟机学习ROS,如果电脑不好装双系统或者内存不够的话可以尝试使用虚拟机。

Linux 有不同的发行版本,目前对ROS支持最好的版本是Ubuntu 14.04 LTS (Long Term Support),对应的ROS的版本推荐为indigo,官网安装主页已更新为最新版本的Ubuntu。可以到Old Ubuntu Releases 下载对应的14.04版本。Linux安装教程可以参照:Win7上安装Ubuntu14.04双系统 。

需要说明的是,随着电脑的配置和操作系统的不同,安装过程大同小异,但是 有的电脑就是装不上,谷歌之后仍然无法解决问题,这时候可以尝试换台电脑或者装虚拟机,我之前用联想ideapad,折腾了一周,试了各种方法就是不成功,最后换了台华硕一下就好了。

装好Linux后可以根据这篇官方指导安装ROS: Ubuntu install of ROS Indigo。如果没有任何Linux命令行基础,那么可以先学习Linux命令行,然后再装ROS。

  • 第二步,学习Linux命令行

对于熟悉Windows而没有接触过Linux系统的人来说,上一步安装的Ubuntu是一个很好的Linux过渡版本。在Linux中,一切任务都可以在终端(Terminal)通过命令行完成。因此非常有必要学习Linux命令行。学习Linux推荐在线编程学习环境实验楼的两门课程:Linux 基础入门(新版) Linux命令实例练习 ,两门课程可以结合互补学习,也可以参见我的学习笔记:Linux命令行有一个小建议是实验楼的在线编程环境就是Linux,因此没有必要在它们的网络环境学习,而是直接用自己的终端。

同时Ubuntu 作为非商业操作系统,里面或多或少有dug,遇到问题多搜索,对于常见的问题,网上都有解决办法。我在安装完Ubuntu后就遇到一个很窘的问题:网络连接不上,但是神奇的是盖上盖子再打开后就好了,之后碰到的带耳机的时候没声音也是这样,一种解释如下:ubuntu14.04下外放有声音,耳机没声音。对于同样的遇到网络无法连接的同学可以在终端输入:

echo "options asus_nb_wmi wapf=4" | sudo tee /etc/modprobe.d/asus_nb_wmi.conf

重启即可。

  • 第三步, 学习ROS基础

对于ROS的学习,最好的办法还是直接学习官方的Tutorial: ROS Tutorials 。英语不太好的话可以看中文版的 核心 ROS 教程 也可以参见我的学习笔记ROS基础笔记 ,前期只学初级20讲即可。学习完基础20讲后可以根据兴趣或用途来学习其他教程,如上图就是实时观测工具Rviz显示机器人的URDF(Unified Robot Description Format)模型,里面还涉及坐标变换的TF相关知识,都需要学习对应的Tutorial来入门。当然,无从着手的话,这时候选择一本参考书也是很不错的,如ros by example, Learning Robotics Using Python , Learning ROS for Robotics Programming 。最后推荐Roi Yehoshua教授授课所用的ppt:Introduction to Robotics

此外,ROS的编程语言主要是C++ 和 Python。C++是国内大多数高校的教学语言,更加深入的学习可以阅读C++ Primer。但是我同时推荐的是学习Python,Python语言作为一种解释性语言/脚本语言,更加灵活、编程效率更高,同时有强大的库支持,因此也是现在人工智能的第一语言。如果有C/C++基础也可以很快入门,推荐廖雪峰的微博教程 Python 2.7教程 ,以及实验楼快速入门课程:Python快速教程 ,书的话我用的是《Python核心编程》(Core Python Programming)。

  • 第四步,做项目

只有不断的学习和实践才能学好一门知识,学习ROS最好是一开始就挑战一个项目。在完成前三步的基础上,这时候就要根据尝试写第一个功能包(package)、第一个节点(node)了。碰到问题可以谷歌,官方问答平台ROS Q&A也很有用。同时要在实践中不断学习,因为基础20讲还远远不够,用到相关知识可以继续参见相关Tutorial。

总之,ROS的学习曲线在开始阶段很陡,需要很多预备知识,比如编程语言、Linux基础、熟练的英文阅读功底,甚至在理解ros::spin(),ros::spinOnce() (C++),rospy.spin() (Python)的时候只有理解线程才能搞清楚这三者之间的区别。总之,有志于学习ROS的同学要有不断学习的心理准备,但是同时,ROS的熟练使用绝对是以后找工作或实现项目的一块很有力的敲门砖。

0
0
查看评论

RabbitMQ入门之安装配置与简单实例----perfect

简介    由于某些原因,今天接触了一下一个新的东西RabbitMQ( http://www.rabbitmq.com/)总的来说给人的感觉就是安装简单方便,同时功能强大。而且官网也给出了几个相当实用的例子,不管关于消息队列的持久化却并没有提及,关于持久化的问题...
  • Shb_derek
  • Shb_derek
  • 2013-12-16 13:50
  • 762

RabbitMQ学习总结(3)——入门实例教程详解

一、起航        本章节,柯南君将从几个层面,用官网例子讲解一下RabbitMQ的实操经典程序案例,让大家重新回到经典“Hello world!”(The simplest thing that does something )时代,RabbitMQ ...
  • u012562943
  • u012562943
  • 2015-12-23 17:37
  • 1725

Java初学者入门指南

跟其他语言相比,大家或许会觉得Java很难,因为Java一开始给人的感觉就不是平易近人和蔼可亲的,甚至对于从未接触过Java的人而言,Java是非常难上手的。其实,完全是一种偏见,Java的入手,可以很有层次的逐步学习,逐步了解,牢牢的掌握住Java的基础,那么,Java的前程将一片明亮。   (...
  • u010619705
  • u010619705
  • 2013-05-29 11:45
  • 523

asp.net(入门理解)

一:asp.net入门理解的总结图如下 二:详细介绍 1,asp.net的概念     首先,asp.net是一门技术,不同于ado.net类库,也不同于vb.net语言。     其次,它是建立在通用语言运行库(C...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2013-06-03 19:31
  • 4016

如何快速入门产品经理?

“豆瓣给我了思考产品问题的思路和做自己喜欢做的事情空间。”“微软则给了我更广的视野,学习到更规范、国际标准的产品工作流程和做事方式。”这是徐萌的经历,在SDCC上,她将基于这些经历和经验分享产品上的心得。
  • whywhom
  • whywhom
  • 2015-11-18 12:55
  • 866

struts2入門(1)

下面将以一个Struts 2的HelloWorld应用为例,介绍Strust 2 MVC框架如何拦截用户请求,如何调用业务控制器处理用户请求,并介绍Action处理结果和资源之间的映射关系。 本HelloWorld应用是一个简单的应用:用户进入一个登录页面,允许用户输入用户名、密码,如果用户输入的用...
  • unicorn00
  • unicorn00
  • 2008-05-02 13:51
  • 281

Spring入門

Spring入門 入門 01 - 簡介 Spring 入門 02 - 控制反轉IoC 入門 03 - 依賴注入DI 入門 04 - 第一個Spring程式 入門 05 - Constructor注入 入門 06 - Bean定義檔進階讀取 入門 ...
  • Jthinking
  • Jthinking
  • 2006-09-26 12:36
  • 963

LDAP 入門

參考書籍 LDAP 系統管理 (OReilly, ISBN: 986-7794-21-4) http://www.openldap.org/doc/admin23/index.html LDAP 應用 一直到現在,小弟完成了幾篇 LDAP 的文件,如果您有需要,可以參考看看。 LDAP -...
  • tsuliuchao
  • tsuliuchao
  • 2009-05-04 13:17
  • 385

kuneriLite入門

記錄一下初次使用kuneriLite的筆記。簡介kuneriLite是可以擴充Flash Lite對硬體控制功能(S60 only)的開發工具,讓FlashLite可做到原來做不到的事,如對Camera, GPS, File System等功能的控制。能力在kuneriLite裏,這些擴充能力稱為&...
  • memhoo
  • memhoo
  • 2008-04-20 10:16
  • 687

Hibernate 基礎入門

http://www.cjsdn.net/post/view?bid=2&id=151422&sty=3&tpg=1&age=0
  • alexjjf
  • alexjjf
  • 2005-08-01 10:51
  • 749
    个人资料
    • 访问:51542次
    • 积分:990
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:247篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论