ROS

您所在的位置:网站首页 depends是什么意思 ROS

ROS

2023-12-23 11:33| 来源: 网络整理| 查看: 265

序言

    ROS使用catkin构建系统,可以轻松使用与ROS相关的构建、功能包管理和功能包之间的依赖关系。它实际上是一种CMake(Cross Platform Make),可以跨平台使用,使用CMakeLists.txt描述。

1、创建功能包

命令:

$ catkin_create_pkg [功能包名称][依赖功能包1][依赖功能包n]

会自动生成CMakeList.txt和package.xml文件。相关功能包可以在创建时指定,也可以创建后在package.xml中输入。功能包应包括:

include → include 目录 src → 源代码目录 CMakeLists.txt → 构建配置文件 package.xml → 功能包配置文件

2、修改功能包配置文件

    package.xml是ROS必要的配置文件,它包含功能包信息,包括功能包名称、作者、许可证和依赖功能包。

    打开package.xml文档,你会看到如下的信息

my_first_ros_pkg 0.0.0 The my_first_ros_pkg package gong TODO catkin roscpp std_msgs roscpp std_msgs roscpp std_msgs

对每个语句进行说明与是一对,其中的内容为针对这部分的说明。

                    这是相当于注释,可以根据这个来对xml文件进行说明。                    这是定义文档语法的语句,上面内容表示内容遵循xml的1.0版本。                       这个语句到的部分是ROS功能包的配置部分。                          功能包名称,默认为创建时的名称,可以随时更改。                       功能包的版本可以自由指定。                   功能包的简要说明。                    功能包维护者的姓名和电子邮建地址。                       记录版权许可证。                           记录描述功能包的说明,如网页、错误管理、存储库的地址等。                      记录参与功能包开发的开发人员的姓名和电子邮件地址。                                     构建依赖关系,使用某种特定的依赖关系来构建包。                  构建导出依赖关系,如果功能包导出头文件,则其他包可能需要这个包,就应该使用这个标签,用来传递声明。                                     执行依赖关系指定在此程序包中运行代码所需的软件包。如动态链接库、可执行文件、Python模块、脚本文件等。                                                  等于以上三种depend的合集,通常使用它添加ROS功能包,是常用而简便的方法。                           构建工具依赖关系指定此软件包需要构建自身的构建系统工具。通常唯一的构建工具是catkin。                                        测试依赖关系仅指定单元测试的附加依赖项                                        文档工具依赖关系指定此软件包需要生成文档的文档工具。

有些地方讲的还是有些模糊,如build_depend和build_export_depend是傻傻分不清楚,可以参考官方文档。

3、构建配置文件

    ROS在功能包目录中的CMakeList.txt文件中描述构建环境,其中可以设置可执行文件的创建、依赖包优先构建、连接器(linker)的创建等等。

add_XXXX_files ( FILES XXXX1.xxx XXXX1.xxx )其中XXXX可以是message、service、actions,xxx对应msg、srv、action。添加要使用的对应的目录下的文件的选项。 generate_messages( DEPENDENCIES std_msgs }

    generate_messages是设置依赖的消息的选项。此示例是将DEPENDENCIES选项设置为使用std_msgs消息包。

generate_dynamic_reconfigure_options( cfg/DynReconf1.cfg cfg/DynReconf2.cfg }

    使用动态配置参数时,要加载的cfg文件夹下的配置文件设置。   

include_directories( ${catkin_INCLUDE_DIRS} )

    include_directories是可以指定包含目录的选项。

add_library(${PROJECT_NAME} src/${PROJECT_NAME}/my_first_ros_pkg.cpp )

    add_library声明构建之后需要创建的库。

add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

    add_dependencies增加的是在代码生成库之前,有一些依赖需要提前生成,如消息生成或者动态的参数。

add_executable(${PROJECT_NAME}_node src/my_first_ros_pkg_node.cpp)

    add_executable是对于构建之后要创建的可执行文件的选项,用于配置生成库的C++文件。

set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

  用来对C++生成的可执行文件重命名,简化操作,如使用 "rosrun someones_pkg node" 代替"rosrun someones_pkg someones_pkg_node"   。

add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

   添加可执行文件的依赖项,与上面的库相同。

target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES} )target_link_libraries是在创建特定的可执行文件之前将库和可执行文件进行链接的选项。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3