《 无人驾驶原理与实践》一2.3catkin创建系统

举报
华章计算机 发表于 2019/05/30 20:21:04 2019/05/30
【摘要】 本书摘自《 无人驾驶原理与实践》一第二章,第2.3节,编著是申泽邦 雍宾宾 周庆国 李良 李冠憬

2.3catkin创建系统   

       catkin是ROS的编译与构建系统,用来生成可执行文件、库和接口。首先进入工作区:

       cd ~/catkin_ws

       创建一个ROS包,其中depend是依赖库的名字:

       catkin_create_pkg package_name depend1 depend2 depend3

       每当创建完一个新包,编译之后都需要使用如下source命令更新环境:

       source devel/setupbash

       catkin_make是一个命令行工具,用于catkin环境下包的编译。
       catkin创建的工作区包含以下三个文件夹:
     ■     src:用来存放源码的文件夹,主要用于操作者进行编码。
         build:用来存放编译时的缓存文件和一些中间文件。
         devel(development):开发目录,存放一些安装之前的目标构建文件。
       详细说明可参见http://wikirosorg/catkin/workspaces。

2.4ROS中的项目组织结构

       ROS软件使用包(package)进行组织,通常包含以下内容:
◆    /src:源代码。
   /msg:定义各种message文件。
   /srv:定义各种service文件。
   /launch:包含用于启动节点的launch文件。
   /config:包含配置文件,加载一些动态配置参数等。
   /test: ROS测试文件。
   /include/_package_name_: C++头文件。
   /doc:包含文档文件。
   packagexml: 编译、运行、版权等信息。
   CMakeListstxt: CMakefile构建文件。

1 packagexml

这个文件定义了包的属性,包括:
   包的名称
   版本号
   作者
   协议
   对其他包的依赖
……
                                                                                              代码清单21一个简单的package信 

                                <?xml version="10"?>

                                <package format="2">

                                <name>ros_practice</name>

                                <version>001</version>

                                <description>The ros_practice package</description>

                                <maintainer email="your-email@gmailcom">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 CMakeListstxt

       CMakeListstxt文件是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():安装规则。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。