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个软件包组成
软