ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Ros学习笔记(一)

2019-08-16 12:06:23  阅读:275  来源: 互联网

标签:ROS catkin 话题 笔记 学习 rostopic 软件包 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,catkin,话题,笔记,学习,rostopic,软件包,Ros,节点
来源: https://blog.csdn.net/only_free/article/details/99646725

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有