德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 Metapackage是功能包集,将多个功能接近、甚至相互依赖的软件包的放到一个集合中去。 ROS常用Metapacakg Navigation Metapacakg Metapacakge 包名 功能 名称 描迷 链接 navigation Metapacakge·依桢以下所有pacakge https://github.com/ros- amcl 定位 navigation 导航相关的功能包集 planning/navigation fake localization 定位 运动规划相关的(主要是机械 https://github.com/ros- map_server 提供地图 moveit 臂)功能包集 planning/moveit move base 路径规划节点 图像获取、处理相关的功能包 https://github.com/ros- navcore 路径规划的接口类 image_pipeline 集 perception/image_common base local planner 局部规划 vision_opencv ROS与OpenCV交互的功能包 https://github.com/ros- dwa local planner 局部规划 集 perception/vision_opencv turtlebot Turtlebot机器人相关的功能包 集 https://github.com/turtlebot/turtlebot pr2 robot p2机器人驱动功能包集 https://github.com/PR2/pr2 robot
9.2 机器人操作系统体系结构 Metapackage是功能包集,将多个功能接近、甚至相互依赖的软件包的放到一个集合中去。 ROS常用Metapacakg Navigation Metapacakg
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 ROS计算图级涉及ROS程序进程间通信及运行管理。ROS创建一个连接所有分布式进程的虚拟网络,是由 进程(节点)之间通过主题或服务连接而成,系统中的任何节点均可通过该网络与其它节点交互,并通过 网络订阅与发布信息。ROS计算图级包括节点、节点管理器、参数服务器、逍息、主题、服务、消息记 录包等重要概念。参数服务器、消息、主题、服务、消息记录包提供节点间的通信与数据交互。 节点(node)是ROS系统最小的执行单元,是可执行文件 在运行之后的一个进程(process),; 节点 节点管理器 参数服务器 消息 丛程序角度node就是一个可执行文件(通常为C+编译生 成的可执行文件、Python脚本)被执行; 丛功能角度一个ode负责者机器人的某一个单独的功能 计算图级 。由于机器人的功能模块非常复杂,往往不会把所有功 能都集中到一个node上,而会采用分布式的方式。 主题 服务 消息记录包 比如:一个node来控制底盘轮子的运动,一个node驱动 ROS计算图级 摄像头获取图像,一个node驱动邀光雷达,一个node根 据传感器信息进行路径规划。 28
9.2 机器人操作系统体系结构 28 ROS计算图级涉及ROS程序进程间通信及运行管理。ROS创建一个连接所有分布式进程的虚拟网络,是由 进程(节点)之间通过主题或服务连接而成,系统中的任何节点均可通过该网络与其它节点交互,并通过 网络订阅与发布信息。ROS计算图级包括节点、节点管理器、参数服务器、消息、主题、服务、消息记 录包等重要概念。参数服务器、消息、主题、服务、消息记录包提供节点间的通信与数据交互。 节点(node)是ROS系统最小的执行单元,是可执行文件 在运行之后的一个进程(process); 从程序角度node就是一个可执行文件(通常为C++编译生 成的可执行文件、Python脚本)被执行; 从功能角度一个node负责者机器人的某一个单独的功能 。由于机器人的功能模块非常复杂,往往不会把所有功 能都集中到一个node上,而会采用分布式的方式。 比如:一个node来控制底盘轮子的运动,一个node驱动 摄像头获取图像,一个node驱动激光雷达,一个node根 据传感器信息进行路径规划
) 德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 节点管理器(master)负责ROS Node的管理,在ROS体系架构相当于管理中心,节点node需首先在masteri注册, master将该node纳入ROS系统中。节点node之间的通信由masteri进行“牵线”,才能进行点对点通信。 ROS程序启动时,首先要启动节点管理器master,由节点管理器依次启动node。 Master,Node之间以及Node之间的关系 Computer 1 ROS Master Registration Registration ROS ROS ROS Messages Messages Node 1 Node 2 Node n Messages 29
9.2 机器人操作系统体系结构 29 Master、Node之间以及Node之间的关系 节点管理器(master)负责ROS Node的管理,在ROS体系架构相当于管理中心,节点node需首先在master注册, master将该node纳入ROS系统中。节点node之间的通信由master进行“牵线” ,才能进行点对点通信。 ROS程序启动时,首先要启动节点管理器master,由节点管理器依次启动node
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 Launch文件启动ROS多个Node,相当于批处理命令。roslauncht命令首先会自动进行检测系统的roscore有 没有运行,也即是确认节点管理器是否在运行状态中,如果master没有启动,那么roslaunch就会首先启 动master, 然后再按照aunch的规则执行,启动的规则在launch文件里已经配置好。 launch文件xml格式规范 launch文件示例 <launch> <launch> <!--根标签--> <-,rg是1 aunch基中的发量产明”arg的n中e为交量名+default气者value为值,> <arg name="robot"default="xbot2"/> <node> <!--需要启动的node及其参数--> carg nane="debug"default="false"/> carg name="gui"default="true"/> <include> <!--包含其他launch--> carg nane="headless"defaulte"false"/> <machine> <!--指定运行的机器--> cl-Start Gazebo with a blank world--> <include f11e="s(f1 nd gazebo_ros)/门aunch./empty wor1d.1 aunch"><-,1ne1ude时米套泰将A <env-loader> <!--设置环境变量--> 的1 auncht件,,> carg name="worldname"value="S(find robot sim_demo)/worlds/ROS-Academy.world"/> <param> <!--定义参数到参数服务器--> <arg nane="debug”value="s(arg debug)”/> carg nane-"gui"value="s(arg gui)"/> <rosparam> <!--启动yaml文件参数到参数服务器--> carg nanes"paused"values"false"/> carg name="use_sim_time"value="true"/> <arg> <!-定义变量-> sarg nane="headless"value="s(arg headless)"/ </include> <remap> <!-设定参数映射--> <,-0h,y0 u wanted a robot2,>c1.普黄了化器人的1 nunch文件,> <group> <!-设定命名空间--> <include file="s(find robot sim_demo)/launch/include/s(arg robot).launch.xml"/> </launch> <!--根标签--> <1,.和果你马连同W1z一老是动千以耳以丁才式加人V1z具小门ode,一> <1--node nane="rviz"pkg="rviz"type="rviz"args="-d s(find robot sim_deno)/urdr gazeb 0,rv12"/-> </launch> 30
9.2 机器人操作系统体系结构 30 Launch文件启动ROS多个Node,相当于批处理命令。roslaunch命令首先会自动进行检测系统的roscore有 没有运行,也即是确认节点管理器是否在运行状态中,如果master没有启动,那么roslaunch就会首先启 动master,然后再按照launch的规则执行,启动的规则在launch文件里已经配置好。 launch文件xml格式规范 launch文件示例
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 参数服务器(parameter server)是特殊的“通信方式”,用于节点存储参数、配置参数和全局共享参数;使 用互联网传输,在节点管理器中运行,实现整个通信过程;是一种静态参数存储,维护着一个数据字典, 字典里存储着各种参数和配置。 主题(topic)是ROS中一种点对点的单向通信方式,node之间可以通过topic?方式来传递信息。Topici通信过程 包括publisher"节点和subscriber节点在节点管理器注册,publisher?会发布topic,subscriber在master的指挥 下会订阅该topic,从而建立起sub-pub之间的通信。 消息(message)是ROS主题(topic)内容的数据类型 。 服务(service)是ROS提供的Node间的双向通信机制,采用请求-查询式的通信模型,不仅可以发送消息,同 时还会有反馈。service包括请求方(Client)和应答方/服务提供方(Server);请求方(Client)发送一个 request,等待servers处理反馈一个repl业,通过类似“请求-应签”的机制完成整个服务通信;用于节点只临 时而非周期性的数据需求,避免topc通信方式消耗大量不必要的系统资源,造成系统的低效率高功耗。 消息记录包(bg)用于存放和回放OS消息,用于获取并记录难以收集的传感器数据。在研发算法与机器人 测试时,用来反复获得实验数据。 31
9.2 机器人操作系统体系结构 31 参数服务器(parameter server)是特殊的“通信方式” ,用于节点存储参数、配置参数和全局共享参数;使 用互联网传输,在节点管理器中运行,实现整个通信过程;是一种静态参数存储,维护着一个数据字典, 字典里存储着各种参数和配置。 主题(topic)是ROS中一种点对点的单向通信方式,node之间可以通过topic方式来传递信息。Topic通信过程 包括publisher节点和subscriber节点在节点管理器注册,publisher会发布topic,subscriber在master的指挥 下会订阅该topic,从而建立起sub-pub之间的通信。 消息(message)是ROS主题(topic)内容的数据类型 。 服务(service)是ROS提供的Node间的双向通信机制,采用请求-查询式的通信模型,不仅可以发送消息,同 时还会有反馈。service包括请求方(Client)和应答方/服务提供方(Server);请求方(Client)发送一个 request,等待server处理反馈一个reply,通过类似“请求-应答”的机制完成整个服务通信;用于节点只临 时而非周期性的数据需求,避免topic通信方式消耗大量不必要的系统资源,造成系统的低效率高功耗。 消息记录包(bag)用于存放和回放ROS消息,用于获取并记录难以收集的传感器数据。在研发算法与机器人 测试时,用来反复获得实验数据