一、ROS安装
参考资料 http://wiki.ros.org/ROS/Installation
ros程序设计源代码 https://github.com/AaronMR
二、catkin工作空间构成
0、创建 程序包
https://blog.csdn.net/myhalan/article/details/52784672
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
1、工作空间目录结构
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
2、package.xml
2-1、概述:系统程序包的依赖项在package.xml中声明。创建程序包时最好添加依赖项,避免手动添加。
2-2、格式:
新格式的标签
<buildtool_depend>
<build_depend> <build_export_depend> <exec_depend> 这三组对于依赖项必须要有
<test_depend>
<doc_depend>
3、CMakeLists.txt
3-1、概述:CMakeLists.txt是用于构建软件包的CMake构建系统的输入。用于catkin项目的CMakeLists.txt文件,其中包含一些其他约束。
3-2、文件结构
-
必需的CMake版本(cmake_minimum_required)
-
包名(project())
-
查找build所需的其他CMake / Catkin包(find_package())
-
启用Python模块支持(catkin_python_setup())
-
消息/服务/动作生成器(add_message_files(),add_service_files(),add_action_files())
-
调用消息/服务/动作生成(generate_messages())
-
指定程序包build信息导出(catkin_package())
-
build需要的库/可执行文件(add_library()/ add_executable()/ target_link_libraries())
-
测试(catkin_add_gtest())
-
安装规则(install())
3-3、find_package()
- 我们需要使用CMake find_package函数指定需要找到哪些其他CMake包来构建我们的项目。
- 如果CMake通过find_package找到一个包,则会创建几个CMake环境变量,这些变量提供有关找到的包的信息。可以在CMake脚本中使用这些环境变量。环境变量描述了包导出头文件的位置,源文件所在的位置,包所依赖的库以及这些库的路径。
- catkin至少有一个依赖: find_package(catkin REQUIRED); 如果项目依赖其他程序包,这些包会自动变成catkin的组件:find_package(catkin REQUIRED COMPONENTS roscpp); 如果只写成 find_package(catkin roscpp),意味着不会将roscpp的路径、库等添加到catkin_变量中; find_package中的 COMPOENENTS应该只包含build所依赖的包,不该添加运行时依赖项。
3-4、catkin_package()