德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 ROS开源社区级主要用于资源管理、交流与共享,能够通过网络社区共享软件和知识。包括ROS发行版 、软件源、ROS Wiki和邮件列表。 独立安装和带版 依赖于共享代码与软件 本号的功能包集 源的网站或主机服务 ROS发行版 软件源 ROS开源 社区级 记录ROS系统信 ROS Wiki 邮件列表 ROS主要交流渠道 息的有关论坛 17
9.2 机器人操作系统体系结构 17 ROS开源社区级主要用于资源管理、交流与共享,能够通过网络社区共享软件和知识。包括ROS发行版 、软件源、ROS Wiki和邮件列表。 邮件列表 ROS发行版 软件源 ROS开源 社区级 ROS Wiki 独立安装和带版 本号的功能包集 记录ROS系统信 ROS主要交流渠道 息的有关论坛 依赖于共享代码与软件 源的网站或主机服务
y0 德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 ROS系统文件级用于管理不同功能与属性的程序代码、支持库、网络资源、编译环境及其它文件。ROS 系统按照代码及文档的功能进行组织。 catkin workspace src build devel package package2 CMakeLists.txt package.xml scripts msg srv include src launch .py .msg srv *h *.cpp *.launch ROS工程结构 18
9.2 机器人操作系统体系结构 ROS 工程结构 18 ROS系统文件级用于管理不同功能与属性的程序代码、支持库、网络资源、编译环境及其它文件。ROS 系统按照代码及文档的功能进行组织
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 ROS系统采用catkin编译系统作为编译工具,其集成环境称为Catkin WorkSpace(Catkin.工作空间)。 Catkin是在LINUX gcc/g+基础上,屏蔽细节与功能扩展发展而成。 递归查找 生成makefiles 编译链接 catkin ws (ROS package) 在工作空 间 catkin catkin ws/srcl.下 依据package中 make刚刚生成的 递归的查找其中 CMakeLists.tt文件 makefiles等文件, CMakeLists.txt 每一个ROS的 生成makefiles 编译链接生成可 cmake 象程度 package。 执行文件 Makefile Catkin.工作过程 make catkin make编译过程 hello.cpp gcc/g++ gcc/g++ hello.o hello $cd~/catkin_ws#回到工作空同,catkin_make必须在工作空问下执行 catkin_make #开始编译 $source~/catkin_ws/devel/setup.bash#刷新坏境
9.2 机器人操作系统体系结构 19 ROS系统采用catkin编译系统作为编译工具,其集成环境称为Catkin WorkSpace(Catkin工作空间) 。 Catkin是在LINUX gcc/g++基础上,屏蔽细节与功能扩展发展而成。 递归查找 生成 makefiles 编译链接 在 工作空间 catkin_ws/src/ 下 递归的查找其中 每一个 ROS 的 package。 依据package中 CMakeLists.txt 文件 生成 makefiles make刚刚生成的 makefiles等文件, 编译链接生成可 执行文件 Catkin工作过程 catkin_make编译过程
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 Catkin WorkSpace(Catkin工作空间)是创建、修改、编译catkin软件包的目录,相当于一个仓库,装载 着ROS的各种项目工程,便于系统组织管理调用。在可视化图形界面里是一个文件夹。我们自己写的ROS 代码通常就放在工作空间中。 Catkin.工作空间结构 build 创建Catkin工作空间 catkin catkin generated mkdir -p ~/catkin_ws/src 存放ROS软 件包的地方 package.cmake cd -/catkin_ws/ $catkin make#初始化工作空间 catkin make.cache Catkin.工作流程 CMakeCache.txt CMakeFiles catkin 3个文件夹 4444 workspace devel env.sh build devel 11b src:ROS的catkin软件包(源代码包) setup.bash build,/:catkin(CMake)的缓存信息和中间文件 package源代码包 cmake&catkin缓存和中间文件 目标文件 setup.sh devel/:生成的目标文件(包括头文件,动态链接 _setup_util.py setup.zsh 库,静态链接库,可执行文件等)、环境变量 src CMakeLists.txt -/opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
9.2 机器人操作系统体系结构 Catkin WorkSpace(Catkin工作空间) 是创建、修改、编译catkin软件包的目录,相当于一个仓库,装载 着ROS的各种项目工程,便于系统组织管理调用。在可视化图形界面里是一个文件夹。我们自己写的ROS 代码通常就放在工作空间中。 创建Catkin工作空间 存放ROS软 件包的地方 Catkin工作空间结构 3个文件夹 src/: ROS的catkin软件包(源代码包) build/: catkin(CMake)的缓存信息和中间文件 devel/: 生成的目标文件(包括头文件,动态链接 库,静态链接库,可执行文件等)、环境变量 Catkin工作流程
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 Package包是ROS存放源代码的地方,是catking编译的基本单元,ROS程序只有组织成package才能被 catkin编译执行,一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等)。 CMakeLists.tt:定义packagel的包名、依赖、源文件、 Package包结构 目标文件等编译规则,是package不可少的成分; package.xm:描述package的包名、版本号、作者、依 CMakeLists.txt #package的编译规则(必须)》 赖等信息,是package7不可少的成分: package.xml #package的描逑信息(必须)】 src/:存放ROS的源代码,包括C+的源码和(.cpp)以 src/ #源代码文件 及Python的module(.py); include/ #C++头文件 include/:存放C+源码对应的头文件: #可执行脚本 scripts/: 存放可执行脚本,例如shell脚本(sh)、 scripts/ Python脚本(.py); msg/ #自定义消息 msg/:存放自定义格式的消息(.msg); srv/ #自定义服务 sy/:存放自定义格式的服务(.sv): models/ #3D模型文件 models/:存放机器人或仿真场景的3D模型(sda,.stL, urdf/ urdf文件 .dae等); launch/ #launch文件 urdf/:存放机器人的模型描述(.urdf或.xacro); launch/:存放launch文件(.launch或.xml)
9.2 机器人操作系统体系结构 Package包是ROS存放源代码的地方,是catkin编译的基本单元,ROS程序只有组织成package才能被 catkin编译执行,一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等)。 • CMakeLists.txt: 定义package的包名、依赖、源文件、 Package包结构 目标文件等编译规则,是package不可少的成分; • package.xml: 描述package的包名、版本号、作者、依 赖等信息,是package不可少的成分; • src/: 存放ROS的源代码,包括C++的源码和(.cpp)以 及Python的module(.py); • include/: 存放C++源码对应的头文件; • scripts/: 存 放 可 执 行 脚 本 , 例 如 shell 脚 本 (.sh) 、 Python脚本(.py); • msg/: 存放自定义格式的消息(.msg); • srv/: 存放自定义格式的服务(.srv); • models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等); • urdf/: 存放机器人的模型描述(.urdf或.xacro); • launch/: 存放launch文件(.launch或.xml)