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
原文地址:https://www.cnblogs.com/ytwang/p/15021424.html