【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

ros,全称robot operating system。说它是操作系统,其实也不全对,因为它实现的其实是一个类似于中间件的作用。使用者只需要在上面关注于自己算法的实现,这就可以了,不需要重复造轮子,因为通信、工具、仿真、通用算法、常用硬件驱动,所有这些别人都替你做好了。如果大家有这方面的兴趣,可以先了解下ros,再一步步去做,

1、找一个靠谱的学习视频

在b站上面,有一个ros入门21讲,个人觉得还是比较适合的,https://www.bilibili.com/video/BV1zt411G7Vn。至于他的书,可以买,可以不买。比如,如果视频上面的内容都能理解,就可以不买。

2、ros的构成

ros主要可以分成4个部分,分别是ros通信框架、ros基础命令工具(包括rviz、gazebo)、ros场景算法(导航、slam、moveit)、ros生态(比如第三方硬件厂商的ros包、各种网站,论坛、bbs、wiki等等)。

3、ros依赖的软件平台

ros是运行在linux上面,一般使用ubuntu,不过注意不同的ubuntu版本对应不同的ros版本。

4、ros依赖的硬件平台

通常而言,如果是学习的话,一般ros直接运行在pc上面,如果是开发和部署,一般运行在类似的树莓派这样的开发板上。

5、机器人的硬件平台

不管是导航还是机械臂,除了ros运行在ubuntu的开发板上面,一般还是需要一个stm32的嵌入式开发板,这个是控制电机的,常采用rtos来控制。

6、ros安装

ros的安装,其实非常简单,一句话就可以

sudo apt-get install ros-kinetic-desktop-full

当然,第一次使用的时候,一般需要初始化一下,

sudo rosdep init
sudo rosdep update

接着,将ros的path路径加到环境变量里面

source /opt/ros/kinetic/setup.bash

这个时候,我们输入roscore,如果程序正常运行,其实代表ros已经安装好了,

roscore

如果需要知道详细的安装细节,可以看一下这个链接,http://wiki.ros.org/cn/kinetic/Installation/Ubuntu

7、ros开发常用的语言

主要是python和cpp,其他就是各种脚本的编写、命令的运行了

8、常用的ros命令有哪些

有一些常用的命令都是以ros开头,这些命令都是为了让你调试目前的系统,分析下当前的分布式系统有哪些信息、哪些节点,或者是启动脚本等等,比如

    roscorerosrunroslaunchrosparamrosmsgrossrvrosbag

9、创建自己的工作区

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_init_workspacecd ~/catkin_ws
catkin_makesource devel/setup.bashcd ~/catkin_ws/src
catkin_create_pkg learning_communication std_msgs rospy roscppcd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

10、ros中比较值得学习的navigation和slam

如果是navigation,那么就是amcl算法

如果是slam,那么就是gmapping算法

这两个在工业生产中是用的比较多的。但是,知道了这两个算法,并不等于,可以直接拿来在工业中使用,这还是远远不够的,必须要做一些修改和优化。比如,实际生产中,嵌入式开发板的算力和pc不能比,但是运行效率又不能太低,如何对算法进行加速就是各位小伙伴需要做的事情了。

11、ros其他值得学习的模块

理论上,作为一个框架或者生态,ros除了上面说的导航、slam、moveit,还可以顺带学习下嵌入式电路、rtos、电机控制、图像处理、语音识别、机器学习、深度学习这些,对系统实时性有要求的同学可以看一下ros2、rtlinux这些,看自己的兴趣了。

12、ros生态或者第三方支持

很多硬件厂商都有ros支持包,比如lidar、3d lidar、3d camera,直接github下载、拿过来就能用,不需要自己造轮子,这也算是ros的优势把。

13、ros学习的误区

很多同学,特别是本科学习,或者刚进入研究生的同学,一下子进入ros的世界里面,不知道怎么下手,ros学的又比较杂,其实没有必要,一步一步来,只要按照自己的节奏来,就可以了。重点关注与自己的领域,其他的方面够用就好。比如说,你从来没有学过linux,甚至只用过windows,那么你可以这么做,

    先安装一个virtualbox,然后安装一个ubuntu,熟悉一下ubuntu的常用命令、使用方法、配置一下网络,安装一个ros版本,熟悉一下python语言,看看会不会编译、会不会配置文件看一下cpp语言,不会的话,找一本《c++ primer》补一下知识,按照b站上面的ros教程掌握一下分布式通信机制,看看node、topic、subscribe、publish、service弄懂了没,自己写几个小程序,测试一下下载小乌龟程序,编写程序控制小乌龟,掌握常用的ros命令,编译有问题的话,学一下cmake语法,看看launch的脚本会不会配置试试rviz、tf、gazebo这些工具,主要为了后面的场景搭建使用选一个应用领域,比如slam看一下gmapping搭建一个场景,看看能不能生成map看看能不能下载amcl源码包手动控制机器人,看看在map中,能不能用amcl定位买一个便宜的robot实体,比如阿克曼差速底盘的机器人将程序部署在robot上看看pc和robot能不能正常通讯看看能不能让robot动起来,在robot上运行amcl算法,能不能在map中定位自己实现amcl在robot上面的加速robot上压力测试在robot上测试其他功能,比如摄像头等等

    14、最后的话

ros本身内容比较多,也比较杂,专注于自己熟悉的领域就可以了。当然基础部分还是要掌握好,比如通信机制、ros命令,以及linux、python、cpp、cmake调试,这些都是基础中的基础,和专业没有很大的关系。等到领域知识和基础都没有大问题之后,就可以考虑一下如何用ros开发出合适的产品了,是选择工业机器人、消费、医疗,还是其他领域,这个就是另外一个topic了。 这个时候,或许你想做的,就是自己要不要做了扫地机器人呢?:-)反正,一步一步往前走就对了,没有什么捷径。

随想录(ros学习笔记)相关推荐

  1. ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行

    ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...

  2. ROS 学习笔记(二):自定义消息msg+Publisher+Subscriber 示例运行

    ROS 学习笔记(二):自定义消息msg+Publisher+Subscriber 示例运行 一.自定义消息: 1.新建msg文件夹,创建定义Person.msg 文件 mkdir -p ~/catk ...

  3. ROS 学习笔记(一):工作空间+功能包创建

    ROS 学习笔记(一):工作空间+功能包创建 一.创建工作空间(catkin_make编译): 1.创建工作空间 catkin_ws 创建空间.初始化(建立一个文件夹) cd ~ mkdir -p ~ ...

  4. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

  5. ROS学习笔记基础2(基础知识和ROS架构)

    ROS学习笔记1(基础知识和ROS架构) 文章目录 ROS学习笔记1(基础知识和ROS架构) 1. 什么是ROS 2. ROS和其他机器人平台有什么不同 3. ROS架构组成 3.1 文件系统级别 3 ...

  6. ROS学习笔记十二:使用roswtf

    ROS学习笔记十二:使用roswtf 在使用ROS过程中,roswtf工具可以为我们提供ROS系统是否正常工作的检查作用. 注意:在进行下列操作之前,请确保roscore没有运行. 检查ROS是否安装 ...

  7. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

  8. ROS学习笔记十:用C++编写一个简单的服务和客户端

    ROS学习笔记十:用C++编写一个简单的服务和客户端 这一节主要介绍如何使用C++编写一个简单的服务和客户端节点. 编写服务节点 由于在前面的练习中,已经向beginner_tutorials软件包中 ...

  9. ROS学习笔记九:用C++编写ROS发布与订阅

    ROS学习笔记九:用C++编写ROS发布与订阅 本节主要介绍如何用C++编写一个简单的ROS发布与订阅. 编写发布节点 在之前创建的例子beginner_tutorials软件包中,在其目录下的src ...

  10. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

最新文章

  1. PESCMS Ticket 客服工单系统 v1.2.5 发布
  2. dns域名解析过程_域名解析怎样工作,Windows server 2008 R2如何安装DNS服务器
  3. RIP基于跳数的负载均衡
  4. 奇怪-正则匹配的test函数
  5. 教育部:中小学生原则上不得将个人手机带入校园!不要相信手机对学习有帮助!
  6. BugkuCTF-Misc:细心的大象
  7. 我所遭遇过的游戏中间件---HumanIK
  8. 排错-tcpreplay回放错误:send() [218] Message too long (errno = 90)
  9. 编程语言的“别样”编年史
  10. C++this指针的用法
  11. VScode 常用快捷键
  12. tensorflow自定义op_TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式
  13. 3django url name详解
  14. 简单调整配置深度Linux-15迅速开始学习工作
  15. 什么软件可以查月经周期,检测月经周期的软件
  16. 【书】软件设计师教程(第4版)(百度云免费下载链接)
  17. AD9的PCB技巧——CAD的导入
  18. Redis 安装部署
  19. 两台电脑串口通信实现文件传输
  20. 图解:网络硬件的发展史

热门文章

  1. Character Studio
  2. [iOS]ARC和MRC下混编
  3. 视图层、业务逻辑层、数据访问层及实体层的关系(入门)
  4. 使用Postman测试https接口时的小问题记录
  5. redis安装、配置和启动
  6. [BZOJ]1071 组队(SCOI2007)
  7. UITextInputMode
  8. IIS7.5(IIS7)配置伪静态urlrewrite
  9. android-support-v7-appcompat的配置使用
  10. Castle ActiveRecord学习笔记四:各种映射