任务
安装完成ROS后,用两天左右时间将ROS的wiki官网的例程基本过了一遍。对大体的框架,如Topic、Service有了直观的了解,但具体的应用还是需要自主练习,下面把练习过程记录的笔记按步骤整理分享。虽然官网上的教程已经足够详细,但一些命令对于初接触命令行比较陌生,依葫芦画瓢时没有时间细究,如今逐渐理解便在此详解。
搭建工作空间
确认环境变量
命令行输入
printenv | grep ROS
命令含义:printenv
是bash命令——打印环境变量,而grep
是正则表达式语句,此命令即为,筛选出所有包括ROS字符的变量。
查询了bash的维基百科后我才了解,这也是一门编程语言,我后期在B站中学习了一些视频资源(正点原子),实践写了一个自动登录的脚本,代码和文章见网盘资源:
链接:https://pan.baidu.com/s/1PyKnaKeSl_dPtcQgKBJH-Q
提取码:7yog
主要检查ROS_ROOT 和 ROS_PACKAGE_PATH是否定义如下:
创建工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
分别输入这几行命令,就完成了一个基本空间的配置
- 再解读一下,
mkdir
同样是bash命令,意为创建目录(make directory),而指令-p
能够一次创建多级目录,具体表现为:如果本行命令不加该指令,且~/catkin_ws/
目录不存在,则命令无法执行。
知识点: Ubuntu(Linux)文件系统简述
根目录
/
,包含所有文件
home目录~/
,每次打开新的命令窗口默认处在位置,也即$
前面提示的地址,如图所示
(这个命令就是在home目录中创建工作空间catkin_ws了)
此外./
表示当前目录,../
表示上一级目录,且可以叠加使用,例:../../
表示上两级目录
基本的命令:ls
列出当前目录下文件,cd [目录名称]
进入某目录
- 第二行便是进入我们创建的工作空间catkin_ws中
- 最后一行便是ROS中的命令,上面两个命令都是Linux系统的基础操作,而这一命令使得这个工作空间有了ROS的血液!必不可少.这行的含义即是让工作空间使用catkin体系,将ROS开发的程序编译等更加方便.
添加环境变量
刚才那一步只是使得catkin_ws具有了ROS的特性,但ROS系统安装在我们的Ubuntu系统之中,所以我们还需要将空间和我们的Ubuntu系统联系起来,仍然在上一步处于工作空间catkin_ws 中输入命令:
source devel/setup.bash
解释:source
同样是bash命令,这行的含义也正是执行devel/setup.bash
这个包含bash语句的脚本
那到底发生了什么呢?
教程中可以通过命令行语句
echo $ROS_PACKAGE_PATH
观察输出结果是否变为如下
/home/youruser/catkin_ws/src:/opt/ros/kinetic/share
于我,验证了所有的ROS变量改变如下:
lazy@lazy-Surface-Laptop-2:~/catkin_ws$ printenv | grep ROS
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic
lazy@lazy-Surface-Laptop-2:~/catkin_ws$ source devel/setup.bash
lazy@lazy-Surface-Laptop-2:~/catkin_ws$ printenv | grep ROS
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/home/lazy/catkin_ws/src:/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=/home/lazy/catkin_ws/devel/share/common-lisp
ROS_DISTRO=melodic
bashROS_PACKAGE_PATH
和 ROSLISP_PACKAGE_DIRECTORIES
都发生了变化.
总结
这一步完成了工作空间的搭建,可以放心告一段落.总体而言,每个语句都不用过于小心翼翼,它们并没有伤害整个系统的可能,如果遇到问题可以放心直接删除工作空间文件catkin_ws 命令:
sudo rm -r ~/catkin_ws/
解释: sudo
升级为Ubuntu系统的高级权限(肆意妄为), rm
移除(remove)文件,指令-r
允许递归删除该文件夹(~/catkin_ws/)下所有文件.
重新来过.
此外,工作空间的名称也可按需取名,不过初学者为方便与教程保持一致,默认使用这个最好不过了.
资源推荐:
b站视频:
正点原子【第一期】手把手教你学Linux之Ubuntu入门篇
可以有选择看几个感兴趣的,不过里面的确有很多新知识,对系统的了解加深了不少.
【古月居】古月 · ROS入门21讲
由于学校组织有直播课,并没有看这里的视频,但可以找一下课程相关的资源,之后我的学习也主要按照课件中布置的任务展开.
YouTube视频:ROS kinetic tutorials讲解的比较直观,可以把topic和service了解.
预告
对小海龟仿真(turtlesim)的一些探索.
- topic
- service
- rqt-plot