《 无人驾驶原理与实践》一2.3catkin创建系统
2.3catkin创建系统
catkin是ROS的编译与构建系统,用来生成可执行文件、库和接口。首先进入工作区:
cd ~/catkin_ws
创建一个ROS包,其中depend是依赖库的名字:
catkin_create_pkg package_name depend1 depend2 depend3
每当创建完一个新包,编译之后都需要使用如下source命令更新环境:
source devel/setupbash
catkin_make是一个命令行工具,用于catkin环境下包的编译。
catkin创建的工作区包含以下三个文件夹:
■ src:用来存放源码的文件夹,主要用于操作者进行编码。
■ build:用来存放编译时的缓存文件和一些中间文件。
■ devel(development):开发目录,存放一些安装之前的目标构建文件。
详细说明可参见http://wikirosorg/catkin/workspaces。
2.4ROS中的项目组织结构
ROS软件使用包(package)进行组织,通常包含以下内容:
◆ /src:源代码。
◆ /msg:定义各种message文件。
◆ /srv:定义各种service文件。
◆ /launch:包含用于启动节点的launch文件。
◆ /config:包含配置文件,加载一些动态配置参数等。
◆ /test: ROS测试文件。
◆ /include/_package_name_: C++头文件。
◆ /doc:包含文档文件。
◆ packagexml: 编译、运行、版权等信息。
◆ CMakeListstxt: CMakefile构建文件。
1 packagexml
这个文件定义了包的属性,包括:
◆ 包的名称
◆ 版本号
◆ 作者
◆ 协议
◆ 对其他包的依赖
……
代码清单21一个简单的package信
<?xml version="10"?>
<package format="2">
<name>ros_practice</name>
<version>001</version>
<description>The ros_practice package</description>
<maintainer email="your-email@gmailcom">Adam</maintainer>
<license>MIT</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>sensor_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>sensor_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>sensor_msgs</exec_depend>
</package>
在这个例子中,我们使用了roscpp的客户端库,同时使用了一个sensor_msgs消息。
2 CMakeListstxt
CMakeListstxt文件是CMake构建系统的输入,在这里我们不会详细讨论CMake的写法(因为它本身可以很复杂),只需大致熟悉一下常用的CMake语法:
◆ cmake_minimum_required:需要的CMake最低版本。
◆ project():包的名称。
◆ find_package():查找构建时需要的其他CMake/catkin包。
◆ add_message_files()/ add_service_files()/add_action_files():生成Message/Service/Action。
◆ generate_messages():调用消息生成。
◆ catkin_package():指定包的构建信息。
◆ add_library()/add_executable()/target_link_libraries():添加用于构建的库、可执行代码和目标链接库。
◆ install():安装规则。
- 点赞
- 收藏
- 关注作者
评论(0)