ROS的编译和安装还是稍微有点门槛的,这篇文章简单的记录一下。
ROS功能包的安装
代码语言:javascript复制https://github.com/TonyRobotics/RoboWare
一个合适的IDE,我看了一下是VSCode的魔改
编译的框图
ROS对CMake进行了扩展,于是便有了Catkin编译系统。
Catkin是基于CMake的编译构建系统,具有以下特点:
- Catkin沿用了包管理的传统像
find_package()
基础结构,pkg-config
- 扩展了CMake,例如
- 软件包编译后无需安装就可使用
- 自动生成
find_package()
代码,pkg-config
文件 - 解决了多个软件包构建顺序问题
一个Catkin的软件包(package)必须要包括两个文件:
- package.xml: 包括了package的描述信息
- name, description, version, maintainer(s), license
- opt. authors, url's, dependencies, plugins, etc...
- CMakeLists.txt: 构建package所需的CMake文件
- 调用Catkin的函数/宏
- 解析
package.xml
- 找到其他依赖的catkin软件包
- 将本软件包添加到环境变量
这个是我手边的一个典型的目录
其中一个功能包的结构
catkin编译的工作流程如下:
- 首先在工作空间
catkin_ws/src/
下递归的查找其中每一个ROS的package。 - package中会有
package.xml
和CMakeLists.txt
文件,Catkin(CMake)编译系统依据CMakeLists.txt
文件,从而生成makefiles
(放在catkin_ws/build/
)。 - 然后
make
刚刚生成的makefiles
等文件,编译链接生成可执行文件(放在catkin_ws/devel
)。
也就是说,Catkin就是将cmake
与make
指令做了一个封装从而完成整个编译过程的工具。catkin有比较突出的优点,主要是:
- 操作更加简单
- 一次配置,多次使用
- 跨依赖项目编译
xml文件是一些项目的基本信息,就是版本号,描述什么的
就是这样
比对的看
一些常见的编译命令
编译流程
编译系统会递归查找
这是常见的ROS命令
因为Cmake是常客,这里也有Cmake的一个常见函数的说明
就像这样