赞
踩
现代机器人系统往往需要多个计算机同时运行多个进程,即使只有一台计算机,通常仍将程序划分为独立运行且相互协作的小的模块来完成复杂的控制任务,单计算机或者多计算机不同进程间的通信问题是上述例子中的主要挑战。ROS 为实现上述通信提供两种相对简单、完备的机制。
随着机器人研究的快速推进,诞生了一批应对导航、路径规划、建图等通用任务的算法。当然,任何一个算法实用的前提是其能够应用于新的领域,且不必重复实现。事实上,如何将现有算法快速移植到不同系统一直是一个挑战,ROS 通过以下两种方法解决这个问题:(1)ROS 标准包(Standard Packages)提供稳定、可调式的各类重要机器人算法实现。(2)ROS通信接口正在成为机器人软件互操作的 事实标准 ,也就是说绝大部分最新的硬件驱动和最前沿的算法实现都可以在ROS中找到。
ROS 不仅是一个函数库,除包含客户端库(Client Libraries)外,还包含一个中心服务器(Central Server)、一系列命令行工具、图形化界面工具以及编译环境。
每个程序包由一个清单文件(文件名为 package.xml)定义。该文件定义关于包的一些细节,包括其名称、版本、维护者和依赖关系。
节点管理器:ROS 中实现通信的关键部分就是 ROS 节点管理器,启动节点管理器用:roscore。ROS程序的运行实例被称为节点。
注意:大多数 ROS 节点在启动时连接到节点管理器上,如果运行中连接中断,则不会尝试重新连接。因此,如果 roscore被终止,当前运行的其他节点将无法建立新的连接,即使稍后重启 roscore 也无济于事。
功能 | 使用 |
---|---|
查看软件包列表和定位软件包 | rospack list |
要找到一个软件包的目录 | rospack find package-name (支持tab补全) |
要查看软件包目录下的文件 | rosls package-name |
“访问”某软件包目录 | roscd package-name |
启动节点 | rosrun package-name executable-name |
查看节点列表 | rosnode list |
查看节点 | rosnode info node-name |
终止节点 | rosnode kill node-name |
查看节点之间的连接关系 | rqt_graph |
获取当前活跃的话题 | rostopic list |
打印消息内容 | rostopic echo topic-name |
查看话题 | rostopic info topic-name (包括话题的消息类型、话题的订阅和发布者) |
查看消息类型 | rosmsg show message-type-name |
mkdir -p ~/catkin_ws/src //一定要创建src文件夹
cd ~/catkin_ws
catkin_make //不需要用catkin_init_workspace
cd ~/catkin_ws/src
catkin_create_pkg package-name [depend1][depend2][depend3]
#include <ros/ros.h>
int main ( int argc , char ** argv )
{
ros::init ( argc , argv , " hello _ros " ) ;
ros::NodeHandle nh ;
ROS_INFO_STREAM( " Hello , ROS! " ) ;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。