ROS学习经历—1
最近需要学习ros,在此记录一下学习的过程。参考的课程:鱼香ros
在此感谢鱼香ros和大家的帮助。
ROS是什么?ROS = 通讯机制 + 工具软件包 + 机器人高层技能 + 生态
高层技能指的是导航,识别,抓握等能力。
此章介绍了一下节点,工作空间和功能包的概念。
1.节点
ROS中的节点相当于一个独立的工作间,而ROS则是那家大工厂。工作间完成各个工作,并且相互交流(比如:一个工作间作为制作原料,另一个工作间为原料加工)。
节点之间有四种通信方式,前三种较为我们常用:
- 话题-topics
- 服务-services
- 参数-parameters
- 动作-Action。
1.1 节点的启动
使用指令
ros2 run <package_name> <executable_name>
1.2 其它常用的节点指令
查看节点的列表:
ros2 node list
查看节点信息:
ros2 node info <node_name>
重映射节点名称:(这个常使用在重复开多个节点时)
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
1.3 工作空间
当我们去找节点时,我们会先去看它在哪个包中,而包则在我们的工作空间中。
类似于:
工作空间->包->节点
1.3.1 介绍
那什么是工作空间?工作空间是包含若干个功能包的目录,可以简单理解当作一个文件夹,这个文件夹下有src。创建工作空间的操作如下:
》mkdir -p:递归的方式创建目录
mkdir -p turtle_ws/src
cd turtle_ws/src
1.4 功能包
功能包可以理解为存放节点的地方,根据编译方式的不同可以分为三种类型:
- ament_python,适用于python
- cmake,适用于C++
- ament_cmake,cmake增强版
1.4.1 功能包的获取方法
- 安装获取
在安装后会自动放置在系统目录
sudo apt install ros-<version>-package_name
- 手动编译
source install/setup.bash
1.4.2 功能包的相关指令
turtlesim指的是小乌龟的包,可替换为其他的包
- 创建功能包
ros2 pkg create <package-name> --build-type {cmake,ament_cmake,ament_python} --dependencies <依赖名字>
- 列出可执行文件
ros2 pkg executables
- 列出某个功能包的节点
ros2 pkg executables turtlesim
- 列出所有的包
ros2 pkg list
- 输出某个包所在路径的前缀
ros2 pkg prefix <package-name>
- 列出包的清单描述文件
每一个功能包都会有一个标配的manifest.xml文件,记录这个包的名字、构建工具、编译信息、拥有者和干什么用的。
》通过这些信息,就可以自动为该功能包安装依赖,构建时确定编译顺序。
ros2 pkg xml turtlesim
1.5 构建工具—colcon
既然创建了工作空间,那么如何对其进行编译,使用的就是colcon
在工作空间(即对应的文件夹内),执行:
- 编译工程
colcon build
- 刷新一下资源
在每次开启新的终端去启动节点时,都要source一下
source install/setup.bash
1.5.1 常用的指令
- 只编译一个包
colcon build --packages-select <package_name>
- 允许更改src下的部分文件来使得调整python脚本时不必重新build
colcon build --symlink-install