ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建

写在前面:笔者最近在做一个基于ROS平台的小项目,也算是从零开始学ROS,在这里写下一些学习时的笔记。
笔者学习参考:古月居

一、ROS环境安装

ROS历经多个版本的升级,目前正不断适用于机器人领域的研究与控制,ROS对于Ubuntu的支持是最好的,因此一般的ROS平台都安装在Ubuntu上。在这里笔者所采用的是kinetic版本的ROS,对应的Ubuntu版本为16.04。笔者建议初学者安装VMware虚拟机而不是直接双系统。有关虚拟机上安装ROS的具体安装步骤如下:
(1)安装VMware:VMware是虚拟机软件,即可以在本软件上运行其他的系统。本软件的安装直接百度就行,脚本之家什么的一般都会有附带许可证密匙的资源,按流程安装即可。
(2)在VMware上安装Ubuntu16.04:具体流程可参考文章:https://www.jianshu.com/p/faf8bbbdd0f2
(3)在Ubuntu系统上安装ROS:在这一方面有人已经写的很好,笔者就不重复造轮子了,具体流程可参考博客:https://blog.csdn.net/wangguchao/article/details/81044558
历经上面三个步骤后,在终端中(右键打开或按Ctrl+Alt+T打开)输入 roscore,若出现如下图所示的画面,则代表安装成功。ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第1张图片

二、ROS简述

有关ROS的概念已经有博主讲的很好了,笔者不再赘述,相关ROS概念可以参考可以参考:https://blog.csdn.net/weixin_43795921/article/details/85034673

三、工作空间的建立

工作空间指我们存放代码的地方,之前安装的ROS平台可以看作一个库,我们在工作空间中调用库中函数来完成自己的代码。工作空间看起来像一个文件夹,但其不是直接新建文件夹就能解决的,具体生成步骤如下(笔者这里相关的创建文件夹操作直接用鼠标右键完成):
(1)在home文件夹下右键新建文件夹,命名为catkin_ws(这里的命名可以是任何名称,不一定非要是catkin_ws)
ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第2张图片
(2).在catkin_ws下右键新建文件夹,命名为src(这里的命名一定要是src,不能是其他的名称)
ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第3张图片
(3)在src文件夹下右键打开中断(这里的终端路径一定要是src中)
输入catkin_init_workspace (意思是告诉系统这是一个ROS的工作空间)在这里插入图片描述
会发现在src中生成了cmakelists文件
ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第4张图片
(4)回到上一级文件夹,即catkin_ws文件夹下,输入catkin_make(编译所有源码),会生成build和devel两个文件夹,这样即代表着建立工作空间完成
在这里插入图片描述
其中:
build:指编译空间,一般不用去管
devel:指开发空间,编译所生成的可执行文件都在此文件夹中
src:指代码空间,我们所写的源码都在此文件夹下

四、新建功能包

ROS中不同的代码都放在src中不同的功能包中,每个功能包相当于一个文件夹,与建立工作空间一样,单纯的新建文件夹是不行的,具体操作如下:
1.在src文件夹下打开终端,输入catkin_create_pkg <所创建功能包名称> <需要的依赖>;如catkin_create_pkg test roscpp
ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第5张图片
在src中会出现相应的文件夹
在这里插入图片描述
2.在catkin_ws下打开终端,输入catkin_make(注:对任何源码进行改动后都要重新编译)
3.在编译完成后,都要设置环境变量:在catkin_ws终端输入source /devel/setup.bash,这一步很是麻烦,因此可以采取简便操作:在home文件夹下按Ctrl+H,会显示出隐藏文件,使用gedit打开.bashrc文件
ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第6张图片
在文件的最后加上source ~/catkin_ws/devel/setup.bash(若你之前工作空间不是以catkin_ws命名,则将catkin_ws改为命名的名称)
ROS与SLAM从零开始学习笔记(一)------ROS概述与环境搭建_第7张图片
添加完这个后,编译完成后会自动设置环境变量,不需要重复手动添加了!!

注:同一个工作空间中不能有同名的功能包,但不同的工作空间可以有同名的功能包。

你可能感兴趣的:(ROS)