zoukankan      html  css  js  c++  java
  • ROS-概况-知识结构

    1.简介

    Robot Operating System,缩写为ROS。
    	是一种开发框架,是构建在其它操作系统之上的一种结构化的通讯层
    

    2.架构

     ROS可以分为基础设施层、通信层和应用层。其中,
     ROS的基础设施层  包括ROS中的Python、C++等运行环境、ROS文件系统与ROS包管理机制等。
     ROS的通信层 提供基础的ROS IPC机制以及ROS的数据分发服务(Data Distribution Service,DDS)等。
     ROS的应用层 是基于一个个节点所构成的计算图,
         这些节点之间可以使用ROS的通信层直接进行互相调用,
         或者通过对一些话题(topic)发布消息或者订阅消息以进行间接通信。
    

    3.概念:

    依赖: 如果用c++进行编写,需要用到ROS提供的库  roscpp 
           节点如果用python进行编写,需要用到ROS提供的库 rospy
     功能包: 功能包是ROS中软件组织的基本形式,一
         个功能包具有用于创建ROS程序的最小结构和最少内容,它可以包含ROS运行的进程(节点)、配置文件等
    	 
     01.节点(node) 主题(topic) 服务(server) 参数服务器(parameter server)
      roscore  
      rosnode  rostopic  rosservice  rosparam  rosbag  rosmsg rossrv
          rosrun  rospack
      消息记录包(bag)是一种用于保存和回放ROS消息数据的文件格式
      分布式的进程(节点),进程被封装在程序包和功能包集中
      ROS 中创建的节点是有名称的,
         C++    初始化节点 通过 API:ros::init(argc,argv,"xxxx");来定义节点名称,
        Python  初始化节点 通过 rospy.init_node("yyyy") 来定义节点名称
       02.catkin构建工具
         ROS编译系统从初期使用的rosbuild,到groovy版本之后的catkin,再到ROS2中的Ament,再到 colcon
        catkin_create_pkg
        catkin_make, 
        catkin_make_isolated, 
        catkin_tools
       03.开放的API端口
    

    01.资源和文件

    01.安装后的文件位置 
      /opt/ros
           /bin  
    	   /include 
    	   /lib 
    	   /etc 
    02.项目的文件结构
      一个ROS程序的不同组件要被放在不同的文件夹下,
        这些文件夹是根据不同的功能来对文件进行组织的
    工作空间: 源文件空间 编译空间 开发空间
    配置:源文件空间配置文件  功能包配置文件
    功能包
      功能包对应的源文件存放目录
    工具:
      Rosbags是ROS中众所周知的有用的日志记录,调试和测试工具
    

    02.进程

      roscore === 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信
      roscore 将启动:ros master  ros 参数服务器  rosout 日志节点
                 一个是roscore,一个是rosmaster,一个是rosout,
                    roscore作为父进程,启动后面两个进程,rosmaster即为节点管理器,rosout是log输出管理
    

    ROS开发

    #ROS项目的组织形式
    #ROS的情况
      roscore
      rosrun  
     查看版本
        1、先在终端输入roscore     # 后台没有运行ros,开启ROS
        2、打开新终端,再输入,rosparam list
        3、再输入rosparam get /rosdistro就能得到版本
    

    历史版本

     版本名称					发布日期		版本生命周期	操作系统平台
     ROS2   Galactic Geochelone May 23rd, 2021  November 2022
     ROS2	Foxy Fitzroy     	2020年6月5日    2023年5月       Ubuntu Linux, macOS, or Windows 10
     ROS 	Noetic Ninjemys		2020年5月	2025年5月	Ubuntu 20.04
     ROS2	Dashing Diademata 	2019年5月 	2021年5月       2的第一个长期限支持(LTS)版本
     ROS 	Melodic Morenia		2018年5月23日	2023年5月	Ubuntu 17.10, Ubuntu 18.04, Debian 9, Windows 10
     ROS 	Lunar Loggerhead	2017年5月23日	2019年5月	Ubuntu 16.04, Ubuntu 16.10, Ubuntu 17.04,Debian 9
     ----------------------------------------------	
     ROS Box Turtle         2010年3月2日--   Ubuntu 8.04, Ubuntu 9.04, Ubuntu 9.10, Ubuntu 10.04
        ROS was started in 2007	 
      说明: Get ROS Melodic Morenia on Ubuntu Linux
    	     Get ROS Noetic Ninjemys on Ubuntu Linux   (Recommended for Latest ROS 1 LTS)
    		 Get ROS Foxy Fitzroy on Ubuntu Linux, macOS, or Windows 10(Recommended for Latest ROS 2 LTS)
       ROS2 重新设计了架构实现,也考虑到了与ROS1的兼容,专门开发了一个功能包——ros1_bridge,来完成ROS2与ROS1之间的通讯
          ROS2降低了将基于ROS 2的原型转换为产品的复杂性
       ROS 1的通讯系统  基于 TCPROS/UDPROS ,强依赖于master节点的处理,
       ROS 2的通讯系统  基于 DDS 进而取消了master,同时在ROS2内部提供了DDS的抽象层实现
       ROS 1的核心主要使用C ++ 03,在其API并没有使用C++ 11功能 ROS 2广泛使用C ++ 11
       ROS 1的Python版本为2.7 3.5 ROS 2的Python版本至少为3.5,
       ROS 2使用了新的编译系统 Ament (ROS1为 Catkin) Ament 是 catkin 元编译工具的迭代, 与catkin相比,Ament没有devel目录,目前版本库开始使用 colcon, colcon是一个命令行工具
       (Data Distribution Service ,DDS)数据分发服务  低层协议
       版本参考: https://docs.ros.org/en/galactic/Releases.html#releases
                  https://wiki.ros.org/Distributions
    

    Ros安装

    1.安装方式

    1.桌面完整安装:ROS,rqt,rviz和机器人通用库   sudo apt-get install ros-melodic-desktop-full
      2D / 3D模拟器,导航和2D / 3D感知
    2.   桌面安装:ROS,rqt,rviz和机器人通用库    sudo apt-get install ros-melodic-desktop
    3.OS-Base:(Bare Bones) ROS包,构建和通信库s udo apt-get install ros-melodic-ros-base
      没有GUI工具
     4.  独立软件包:可以安装特定的ROS软件包:    s udo apt-get install  ros-melodic-PACKAGE
    
        查找包 apt-cache search ros-melodic
    

    2.安装步骤

    01.选择安装方式,并执行安装命令 sudo apt-get install ros-melodic-desktop-full
      安装依赖-- sudo apt install python3-rosdep
        或者--sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
    02.sudo rosdep init
       确保存在 /etc/ros/rosdep/sources.list.d/20-default.list
    03.rosdep update  --可以跳过这步骤
    04.设置环境变量
    echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    source  /opt/ros/melodic/setup.bash
        roscore
    

    3.注意:

    首先检查文件是否存在
    
     cd /opt/ros/melodic/bin
     ls -l
     如果没有的话,执行以下代码
      sudo apt-get install ros-melodic-desktop-full
     
     修改hosts  sudo vim /etc/hosts
    151.101.84.133 raw.githubusercontent.com
    185.199.108.133 raw.githubusercontent.com
    199.232.28.133 raw.githubusercontent.com
    151.101.228.133 raw.github.com
    

    附录

     1.编译系统:配置、编译、安装独立的功能包
     2.构建工具:将多个独立的功能包按照一定的拓扑结构进行链接
     package.xml 独立功能包之间的依赖关系,在清单文件 —package.xml中进行声明
       借助 catkin 来编译 ROS node C++ 程序。
         catkin_pkg - A Python runtime library for catkin
       可以看成是将 C++ 程序放入 ROS 框架中,以 ROS 的标准形式来编译
       cmake 指令依据 CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件.
       catkin_make 是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径
    
       -I<dir> 指定头文件的搜索路径
       -L<dir> 指定静态库的搜索路径
        头文件是包含函数声明,宏定义,类的声明的文件
           在linux中一般头文件会在/usr/include中,
    	   如果没有可以使用 locate命令查找文件所在位置
    	库文件是一种目标文件,静态库是可重定位目标文件,动态库是共享目标文件。 
    	      一般在/usr/lib、/usr/lib64、/lib、/lib64都包含库文件
    	头文件是在预处理时使用;库文件是链接时使用 头文件内容还是高级语言内容;库文件是二进制文件
    

    参考

     ROS2探索总结(八)—— What is ROS 2.0 ? https://www.guyuehome.com/2300
      ROS机器人编程实践----琐碎知识点 https://www.cnblogs.com/dingyc/p/10676756.html
  • 相关阅读:
    html页面中的转意字符
    bootstrap学习笔记3- navbar-header navbar-toggle 类 data-toggle和data-target
    DIV嵌套过程中的高度自适应问题
    <span class="icon-bar"></span> 不显示?
    CSS中定位的浮动float
    CSS 盒模型,块级元素和行内元素的区别和特性
    CSS padding
    CSS Position(定位)
    网络资料
    vue中 具名插槽+作用域插槽的混合使用
  • 原文地址:https://www.cnblogs.com/ytwang/p/15021424.html
Copyright © 2011-2022 走看看