ROS机器人

这篇博客详细介绍了ROS机器人的基础知识,包括ROS操作系统的安装教程、学习资源、roboware-studio的使用,以及ROS节点的运行、话题(topic)、消息(message)、服务(Service)和参数(Param)的概念。此外,还涵盖了创建ROS工程编译激光雷达的步骤,SSH远程连接ROS主控的方法,TF空间描述与变换的用途和使用方法,以及ROS节点编程中的serial节点处理。
摘要由CSDN通过智能技术生成

ROS操作系统安装教程请参考如下网址:

https://www.cnblogs.com/liu-fa/p/5779206.html

http://wiki.ros.org/kinetic/Installation/Ubuntu

ROS学习教程:http://www.guyuehome.com/column/ros-explore

ROS工程代码管理编辑软件:roboware-studio

通过以下指令安装特定的ROS包:

sudo apt-get install ros-kinetic-PACKAGE;e.g.  sudo apt-get install ros-kinetic-gmapping

也可以通过roboware-studio中的ros包管理器进行搜索安装。

ROS机器人项目架构如下图:

一、ROS机器人基础

1、ROS机器人工程由package软件包组成(可以是单个或者是多个)

ROS开发思想:节点node组织(软件包中包含多个node节点,一个节点就是一个进程,有一个main函数)。整个机器人由多个软件包来组成,软件包中又有多个node节点组成。软件包可大可小 。小的由一个软件包对应控制一个硬件,大的由多个节点组成一个大的软件包可以控制多个硬件,小软件包和大软件包组合在一起构成一个机器人的工程。 内部的node就可通过话题(topic)和消息(message)进行互连,组成一个完整的机器人。

所有的节点node是通过话题来进行数据互通,发布和订阅 的方式传递消息。主题和消息都属于单向通信,常用于传感器收据收发与周期性的数据收发。而服务用于双向通信和需要数据处理和回应的场合。 例如发送一个目标位置请求 机器人移动到目标点,这个过程要经过一段时间,期间机器人可能遇到障碍物 进行路径的重新规划,最终才能达到目的地并相应服务。有时节点运行时还需要参数的调整,如激光雷达在每个机器人上面安装的位置不同,位置坐标信息是需要写进参数中的,然后再启动node,这种属于静态参数。还有一些参数可以再节点运行时进行动态调整的,会有一个参数服务器。

主题(topic):x消息以发布Publisher/订阅Subscriber的方式传递,发布者和订阅者不了解彼此的存在,可以1对11,多对1,1对多,多对多的方式传递;

消息(message):类似C语言struct结构体 ;例如:/opt/ros/kinetic/share/geometry_msgs/msg下的Twist.msg

# This expresses velocity in free space broken into its linear and angular parts.
Vector3  linear
Vector3  angular

Vectoe3.msg内容如下:

# This represents a vector in free space. 
# It is only meant to represent a direction. Therefore, it does not
# make sense to apply a translation to it (e.g., when applying a 
# generic rigid transformation to a Vector3, tf2 will only apply the
# rotation). If you want your data to be translatable too, use the
# geometry_msgs/Point message instead.

float64 x
float64 y
float64 z

服务(Service):允许nide发送请求request,并获得一个相应reponse;

例如:/opt/ros/kinetic/share/std_srvs/srv下的SetBool.srv(---前属于数据请求格式,---后属于数据相应格式。有些无请求数据,有些无相应数据)

bool data # e.g. for hardware enabling / disabling
---
bool success   # indicate successful run of triggered service
string message # informational, e.g. for error messages

参数(Param):node运行前的静态参数,运行时可调整的动态参数。

总结:

工程由1~N个软件包组成

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Exbot易科机器人实验维护书籍,提供学习镜像包括indigo和kinetic等,努力为ROS爱好者和开发人员提供力所能及的服务。, 本书第2版概括性地介绍了ROS系统的各种工具。ROS是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司将其应用在机器人行业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何开始使用ROS的基本工具,以及最终如何应用先进的计算机视觉和导航工具。, 在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。, 当然,我们还会告诉你如何使用硬件,这样你可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户负担得起的设备,同时涵盖了在机器人研究中最典型的传感器或执行器。, 最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。第2版在最后增加了一章,讲如何使用“Move it!”包控制机械臂执行抓取任务。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理。, 主要内容, 第1章介绍安装ROS系统最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Hydro。这一章还会说明如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机和ARM CPU中安装。, 第2章涉及ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何调试一个节点或利用可视化方法直观地查看通过主题发布的消息。, 第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph),以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用rosbag和rqt_bag记录并回放消息。, 第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。, 第5章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。, 第6章将展示如何在ROS节点中使用点云库。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。, 第7章介绍在ROS系统中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器,为后续学习如何使用ROS的导航功能包集和其他工具奠定基础。, 第8章是两章关于ROS导航功能包集中的第1章。该章介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后用几个例子对导航功能包集进行说明。, 第9章延续第8章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和rviz创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。, 第10章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行抓取、放置,简单的运动规划等任务的演示示例。, 预备知识, 我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu 12.04 LTS。这样你可以根据第1章的内容安装ROS Hydro。, 对于ROS的这一版本,你将需要Ubuntu 14.04之前的版本,因为之后的版本已经不再支持Hydro了。, 对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,如果有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。, 你还需要Git(g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值