因为最近研究所的项目涉及到了ROS,这里简单记录一下,有关ROS的学习收获。
文章目录
1. ROS的安装经历
ROS的安装中遇到绝大多数的问题都是缺乏依赖包,或者是下载速度特别慢。其实跟着官方文档进行操作会避免很多麻烦。
-
第一步,需要set up source.list。在做这一步的时候,千万不能直接照着复制,官方提供了中国地区专用的链接,使用他们下载ROS会快很多,这可以解决安装过程在下载速度奇慢的问题。
(可以在以下网站中查找:http://wiki.ros.org/ROS/Installation/UbuntuMirrors) -
第二步,添加密匙
sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- 第三步,需要在安装之前 update apt。
- 第四步, 正式安装
sudo apt install ros-melodic-desktop-full
这里需要注意的是 ROS Kinetic 在去年已经没有在维护了,所以安装melodic。 - 第五步,在安装完成之后,需要更新Linux的环境变量。
- 第六步,安装一些依赖包
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo apt install python3-rosdep
- 第七步
sudo rosdep init
,rosdep update
- 第八步,可通过检测ROS的版本来判断,ROS是否安装成功,如果出现的正确的版本则安装成功,如果是< unkown >则没有成功。
2. ROS的基本概念
- ROS node: 可以理解成ROS APIs使用的进程。
- ROS master: 连接不同node的中介。
- ROS param server: 用于存储不同的参数,每一个node都可以使用param上面的参数。
- ROS topic:是node用于传输message的通道。
- ROS message:ROS 信息通过 topic进行传输,对于这些message,ROS中有原生的数据类型。但是用户也可以写自己的数据类型。
ROS service: 是ROS node之间的一种通信方式,使用请求查询式的通信模式,可以解决TOPIC的通信缺陷,如:无法确定发布信息是否被收到等。 - ROS Bag: 用于储存从数据的一种方法。
3. ROS的基本命令
roscore
:用于启动ROS master, parameter server, logging node,在运行ROS 程序都应该先运行这一行命令。renode
:可使用该命令,查看node的情况,在启动master的前提之下,使用rosnode可以查看当前正在运行的所有nodes。在运行rosrun roscpp_tutorials talker 之后运行 rosnode可得到以下结果:
rostopic list
: 输出所有topic的信息rostopic pub topic_name msg_type data
: 发送一个有着特定数据类型的数据。rostopic echo /topic
:可以接受到一个相同topic是发送的数据。
具体的发送和接受数据的例子如下:
rosversion
: 检查ROS版本rosparam list
: 打印当前参数rosparam set parameter_name value
: 设置参数。rosparam get parameter_name
:通过名字来找到参数。rosrun node_name
: 运行一个节点。
4. ROS 编程基础
4.1 如何创建工作区
创建工作区的过程中,不要使用sudo的身份,不然在初始化的时候可能会报错。
- 在使用ROS之前需要首先创建一个工作目录。创建工作目录的第一步是创建一个包含名为src的文件夹,这个文件的名字是不能变的,它的主要作用就是存放ROS packages。
- 然后对工作区进行初始化–>
catkin_init_workspace
。运行了此条命令之后,文件夹下会出现CMakeLists.txt一个文件
- 之后在工作目录下执行 catkin_make进行编译。
- 编译成功之后在工作目录下会多出 devel 和 build两个文件夹。
- 之后更新linux的环境变量(必须要做)
至此工作目录构建完成。
4.2 工作区的构成
前面提到工作目录由src,devel, build 三个文件夹组成,那么他们分别的作用是什么呢。