ROS-概况-知识结构

1.简介

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

历史版本

 版本名称					发布日期		版本生命周期	操作系统平台
 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

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就能得到版本

版本
    ROS-Base   ros-noetic-ros-base
    Desktop    ros-noetic-desktop
	    ROS-Base的全部组件,还有一些工具,比如rqt和rviz。
    Desktop-Full ros-noetic-desktop-full
	    除了桌面版的全部组件外,还包括2D/3D模拟器(simulator)和2D/3D 感知包(perception package)
     ROS官方镜像只安装了ros-core、ros-base等核心的ROS软件包
     docker pull ros:noetic-robot	
     使用开源基金 docker pull osrf/ros:noetic-desktop-full	

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都包含库文件
	头文件是在预处理时使用;库文件是链接时使用 头文件内容还是高级语言内容;库文件是二进制文件

docker 环境下使用 ROS

开源机器人基金会 (OSRF - Open Source Robotics Foundation)
    Robot Operating System (ROS)
	   Gazebo 是一个机器人仿真工具,模拟器 Gazebo支持很多开源的物理引擎比如最典型的OD
	   RViz(the Robit Visualization tool)机器人可视化工具,呈现接收到的信息。rviz 3D visualization tool for ROS
	   调试与可视化由Rviz、rqt来实现
	    命令行打开新的终端直接输入$ rviz 打开工具。
	Rosdep rosdep的主要用途是安装工作空间中ros包的依赖 可以使用apt或pip进行安装
	   rosdep和catkin一样都可以用来构建ros包
	   rosdep 可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。
	   rosinstall 是ROS中一个独立分开的常用命令行工具	

参考

 ROS2探索总结(八)—— What is ROS 2.0 ? https://www.guyuehome.com/2300
  ROS机器人编程实践----琐碎知识点 https://www.cnblogs.com/dingyc/p/10676756.html
  http://www.autolabor.com.cn/book/ROSTutorials/
  https://github.com/ros-perception
 Getting started with ROS and Docker  http://wiki.ros.org/docker/Tutorials/Docker
 https://hub.docker.com/r/osrf/ros    
  https://hub.docker.com/r/osrf/ros2   docker pull osrf/ros2
 https://hub.docker.com/_/ros?tab=tags
  ROS(机器人操作系统)教程  http://www.autolabor.com.cn/book/ROSTutorials/
posted @ 2021-07-16 18:21  辰令  阅读(421)  评论(0编辑  收藏  举报