• Ros入门21讲


    一、ROS是什么?

    ROS=通信机制+开发工具+应用功能+生态系统

    目的:提高机器人研发中的软件复用率。

    1、ROS中的通信机制

    松耦合分布式通信:

    注意:什么是耦合、紧耦合、松耦合?

    1.1 耦合

      耦合是两个或多个模块之间的相互关联。在软件工程中,两个模块之间的耦合度越高,维护成本越高。因此,在系统架构的设计过程中,应减少各个模块之间的耦合度,以提高应用的可维护性。

    1.2 紧耦合

      紧耦合架构本质是Client/Server的模型,如下图所示:

    优点是:架构简单、设计简单、开发周期短、能够快速的开发、投入、部署、应用。 但随着集群规模的扩大,系统的稳定性逐渐变差,主要原因如下: 1、同步操作导致对网络资源消耗大。同步操作在数据发送和数据返回之间,有很大一段是空闲的,这种空闲占用是对网络资源的极大浪费。 2、安全控制力度差,因为服务器直接暴露给客户机,容易引发网络攻击行为。 3、程序代码之间关联度过高,不利于模块化处理。

    1.3 松耦合

      松耦合架构本质上是在client/server模型之间加入一个代理,把CS模型变成CAS模型。 在新的架构下,客户机的角色不变,代理服务器承担起与客户机的通信,和对客户机的识别判断工作,服务器位于代理服务器后面,对客户机来说不可见,它只负责数据处理工作,另外我们也把CS模型的同步操作改为CAS的代理处理。 如下图所示:

     

     

    优点如下:

    1、多任务并行处理能力获得极大提升。

    2、实现负载自适应机制(根据当时运行环境,松耦合架构分配并行工作任务,避免超载现象)。

    3、基本杜绝了对Server服务端的网络攻击行为,由于代理服务器的隔绝和筛查作用, 同时结合其它安全管理手段,外部攻击在代理服务器处就被识别和过滤掉了,这样就保护了后面的服务器不受影响。

    4、异步操作减少了网络资源消耗和操作关联。

    5、提高了系统的可维护性。

    原文链接:https://blog.csdn.net/liguangyao213/article/details/123940756

    2、ROS中的开发工具

    2.1命令行&编译器

    2.2 TF坐标变换

     2.3 QT工具箱

    2.4 Rviz

     2.5 Gazebo

     3、ROS中的应用功能

    3.1 Navigation

     3.2 SLAM

     

     3.3 MoveIt

    4、ROS 中的生态系统

    二、ROS中的核心概念

    1、通信机制

     

    2、节点与节点管理器

     

     

     

     3、话题通信

     

     

     4、服务通信

     

     

     5、话题VS服务

     

     

     6、参数

     

     

    7、文件系统

     

     

     

     三、ROS命令行工具的使用

    常用命令

    rpt_graph
    rostopic
    rosservice
    rosnode
    rosparam
    rosmsg
    rossrv

     

     

     以小海龟为例子:

    首先启动 ROS Master:

    roscore

    然后启动小海龟仿真器:

    rosrun turtlesim turtlesim_node

    最后要启动小海龟控制节点:

    rosrun tuetlesim turtle_teleop_key

    注意:rosrun(运行对应节点) 用法:rosrun + 功能包 + 功能包结点

    例如: rosrun turtlesim

    其中,turtlesim是ros安装好后带的学习用的功能包,输入完代码以后双击tab键可以显示出其所有节点。

    1、rpt_graph

    命令:rpt_graph

    功能:显示系统计算处理工具。

    图示:

    右边为仿真器节点 左边为键盘控制节点 中间turtle1为话题(数据)

    2、rostopic

    命令:rostopic list

    功能:显示所有的话题列表

    图示:

      输入 rostopic pub /turtle1/cnd_vel geometry_msgs/Twist "linear: +两下tap显示海龟的位置、速度等信息

    解析:pub是发布一个话题;/turtle1/cnd_vel是话题名;后面内容Tab键补全消息结构,双引号的内容为消息结构的具体数据,linear是线速度,angular是角速度

     

     

     此时可以修改上方x y z改速度,修改下方x、y、z改角度(左右方向键选择对应数据更改)

        因为数据是发一次收一次,所以海龟只会短时间运动,如果要长时间运动,则需要给发送频率,

    代码修改如下:

    ​             rostopic pub -r 10 /turtle1/cnd_vel geonetry_msgs/Twist "linear:

    ​            -r 10 表示修改发送频率。

     

     

     

     


    3、rosservice

    命令:rosservice list

    功能:显示所有服务命令

    图示:

     

        rosservice call + 调用list中的命令 发布服务请求

        例: rosservice call /spawn "x: 加一只小海龟 也可更改新出现小乌龟的速度、角度、名字等信息

     

     

     下面的那个name是个反馈信息。

     

      此后再输入rostopic list 效果如下:

     4、rosnode

    命令:rosnode

    功能:显示所有节点信息

    图示:

    输入rosnode list 列出所有节点 可以看到小乌龟相关的所有节点

     

     注意:rosout是启动roscore就会默认启动的一个节点,采集所有节点的日志信息 用于提交给上一层显示 (ros自带)

        输入rosnode info +节点名 用于显示节点的信息(包括发送的话题 订阅的话题 pid号等)

     

     

     注意:PID是进程识别号(Process Identification)

     5、rosparam

     命令:rosparam

    功能:param就是个中央注册表,可以进行参数的增删改查

    参考链接https://www.jianshu.com/p/e4de8ba7ffb2

     

    6、rosmsg

     输入 rosmsg show + 话题信息 显示话题信息的类型

     

     

    7、rossrv

    命令:rossrv

    功能:显示ros服务类型消息信息的相关命令

    参考链接:https://blog.csdn.net/qq_43280851/article/details/125182206

     

    补充:

        输入 $ rosbag record -a -O cmd_record 话题记录 记录小乌龟的运动轨迹

        输入 $ rosbag play cmd_record.bag 话题复现 按小乌龟的运动轨迹复现一次

     解析:-a 是all的意思,保存所有的信息;-o是保存成一个压缩包,后面是压缩包的名字

     

     

     

     

     

     


    __EOF__

    本文作者Gaowaly
    本文链接https://www.cnblogs.com/Gaowaly/p/16652375.html
    关于博主:评论和私信会在第一时间回复。或者直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    网络爬虫学习笔记 1 HTTP基本原理
    给电瓶车“消消火”——TSINGSEE青犀智能电瓶车棚监控方案
    谈云原生,不得不谈的容器
    NumberBox 步进器
    什么叫做云计算?
    css实现dom脱离文档流定位固定位置
    cmake下的abiFilters和ndk下的abiFilters的区别
    人工智能绘画软件:突破艺术的边界(大招在后面)
    SpringCloud初探
    HTML <video> 标签
  • 原文地址:https://www.cnblogs.com/Gaowaly/p/16652375.html