ROS学习之二:ROS文件系统及软件包
基本概念
软件包(Packages) |
包是ROS代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构件 |
清单(Manifest) | 清单是对软件包的描述,它用于定义软件包之间的依赖观关系,并记录有关软件包的信息,如版本、维护者、许可证等 |
创建软件包
catkin软件包由以下部分组成:
- 提供软件包元信息且符合catkin规范的package.xml文件
- catkin版本的CMakeList.txt文件
- 自己的目录(要求在同一个目录下不能有嵌套的或多个软件包存在)
一个简单的软件包示例为:
my_package/
CMakeList.txt
package.xml
开发catkin软件包的推荐方法是使用catkin工作空间,一个简单的工作空间示例为:
workspace_folder/ -- WORKSPACE src/ -- SOURCE SPACE CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin package_1/ CMakeLists.txt -- CMakeLists.txt file for package_1 package.xml -- Package manifest for package_1 ... package_n/ CMakeLists.txt -- CMakeLists.txt file for package_n package.xml -- Package manifest for package_n
例如在workspace_folder工作空间文件夹下的名为my_package的软件包层次结构如下:
创建软件包的具体流程为:
- 为软件包创建目录(假设当前路路径为~/Documents)
mkdir -p catkin_ws/src
注:上面创建的catkin_ws是一个ROS工作空间,在“ROS学习之一:ROS安装”的第5部分已经介绍了ROS工作空间的创建方法,一个ROS工作空间中可以包含多个软件包
- 在创建的目录(~/Documents/catkin_ws/src)中创建软件包,该软件包依赖于std_msgs、roscpp及rospy
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
上述命令创建了一个名为beginner_turorials的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经部分填写了执行catkin_create_pkg命令时提供的信息
- 构建catkin工作区并生效配置文件
在catkin_ws(工作空间)目录下执行下述命令(注意,创建软件包在工作空间文件夹的src文件夹中,而执行catkin_make命令在工作空间文件夹中)
catkin_make
待工作空间构建完成后,将工作空间添加到ROS环境中,即对工作空间中devel文件夹内生成的配置文件setup.bash执行source命令:
source ~/Documets/catkin_ws/devel/setup.bash
此时使用rospack find命令可以查找到创建的软件包所在路径
通过rospack depends1命令可以查询软件包的一级依赖包
软件包中还包含自动生成的package.xml文件,可以对文件中的注释和未使用的标签进行清理,使之更为简洁
注:采用以上方法添加工作空间到ROS环境,将在系统重启后实效,可将上述命令加入到文件~/.bashrc末尾,则每次系统运行前自动添加工作空间到ROS环境中(类似于安装ROS时添加环境变量)
构建软件包
在catkin工作空间文件夹(此处为~/Documets/catkin_ws)中,可以使用catkin_make命令可以对软件包进行编译
在catkin工作空间文件夹中,build目录是构建空间的默认位置,同时camke和make也是在此被调用来配置和构建软件包;devel目录是开发空间的默认位置,在安装软件包之前,在此可以存放可执行文件和库
基础命令
rospack find [package_name] |
返回软件包的所在路径 |
rospack depends1 [package_name] | 查询软件包的一级依赖包 |
roscd [locationname] | 直接切换目录到某个软件包或软件包集当中 |
rosls [locationname] | 直接按软件包的名称执行ls命令(无需绝对路径) |
catkin_create_pkg <package_name> [depend1] [depend2] [depend3] | 创建软件包及指出其依赖的软件包 |
catkin_make [make_targets] [-DCMAKE_VARIABLES=...] |
编译软件包
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)