Ros学习笔记(一)

 

1.文件系统

Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。 

Manifest (package.xml): 清单,是对软件包相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。

1.1文件系通工具

rospack:获取软件包的有关信息  

$ rospack find roscpp

roscd:切换(cd)工作目录   

$ roscd roscpp

 rosls:直接按软件包的名称而不是绝对路径执行ls命令(罗列目录)。

$ rosls roscpp_tutorials

Tab:自动代码补全和ubuntu自带的补全一样的效果

工具命令和系统命令很相似都只是加了前缀 ROS 

2.ROS程序包

2.1包的组成:必须包含catkin compliant package.xml文件

 注意:程序包必须在catkin空间中才行,空间目录中必须包含src目录用于存放程序包

2.2 创建

$ cd ~/catkin_ws/src
$ catkin_create_pkg <包名> <依赖环境>

2.3 依赖查询

$ rospack depends1 <包名> 一级依赖
$ rospack depends1 <一级依赖> 间接依赖

2.4 编译

# 在catkin工作空间下
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

下面开始学习打脑壳的东西: 节点

我们先来看一下概念:

  • Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
  • Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

  • Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

  • Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

  • rosout: ROS中相当于stdout/stderr。

  • roscore: 主机+ rosout + 参数服务器 (ros的主要服务,每次都要提前打开)。

ros运行起来后,我们需要查看系统的相关参数:

  • rosnode 显示当前运行的ROS节点信息。rosnode list 指令列出活跃的节点。rosnode info 命令返回的是关于一个特定节点的信息
  • rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。

ROS话题:系统中节点之间的通讯是依靠话题完成的,例如节点A发布数据到话题B且C要接受这个数据的话,就需要订阅话题B

  我们使用rqt_graph工具来记录查看系统运行情况:$ rosrun rqt_graph rqt_graph (如果没有就装一下)

  工具中红色为话题,蓝色,绿色为节点

  rostopic命令工具能让你获取有关ROS话题的信息:

  • $ rostopic -h 帮助选项
  • $ rostopic echo [topic]  查看发布数据到某个话题
  • $ rostopic list -v  查看所发布和订阅的话题及其类型的详细信息

ROS Messages:话题之间的通讯是在节点之间完成,所以必须保持相同类型的消息

$ rostopic type /turtle1/cmd_vel  查看所发布话题的消息类型

$ rosmsg show geometry_msgs/Twist 查看所发布话题的消息类型

$ rostopic pub [topic] [msg_type] [args]  把数据发布到当前某个正在广播的话题上

$ rostopic hz [topic]  查看数据发布的频率

$ rosrun rqt_plot rqt_plot  发布到某个话题上的数据变化图形

下次学点新的ROS服务和参数

你可能感兴趣的:(ROS)