(系列一)ROS基础配置

一、ROS简介

概要:

  ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序,ROS在某方面类似于“机器人框架”。

  ROS设计者将ROS表述为ROS=Plumbing + Tools + Capabilities + Ecosystem,即ROS是通信机制,工具依赖包,机器人高层技能以及机器人生态系统的集合体。

ROS的设计目标:

      代码复用

      分布式:ROS是进程(也称节点)的分布式框架。ROS中的进程可分布于不同主机,不同主机协同工作,从而分散计算压力。

      松耦合:ROS中的功能模块封装为独立的功能包或元功能包,便于分享。功能包内的模块以节点为单位运行,以ROS标准的I/O函数作为接口,开发者无需关注模块的内部实现,只要了解接口规则就能够实现复用,这样就实现了模块间点对点的松耦合连接。

      语言独立性:ROS目前支持Java、C++、Python等。

      精简、易于测试、大型应用、丰富的组件化工具包、免费且开源。

ROS架构:

  立足于不同的角度,对ROS架构的描述也是不同的,一般可从设计者、维护者、系统与ROS自身四个方面描述。

  1.从设计者的角度描述:

   ROS设计者讲ROS表述为ROS=Plumbing + Tools + Capabilities + Ecosystem。

       Plumbing:通信机制,实现不同节点之间的交互。

       Tools:代表工具软件包,ROS中的开发和调试工具。

       Capabilities:代表机器人高层技能,ROS中某些功能的集合,例如导航。

       Ecosystem:代表机器人生态系统(跨地域、跨硬件与软件的ROS联盟)。

  2.从维护者的角度描述ROS架构:

       main:核心部分,主要由Willow Garage和一些开发者设计、提供及维护。它包括一些分布式计算的基本工具以及整个ROS的核心程序。    

       universe:全球范围内的代码,由不同国家的ROS社区组织开发和维护。其中一种式库的代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,它们调用其下层的库;最上层的代码是应用级代码,让机器人完成某一确定的功能。

  3.从系统的角度描述ROS架构:
    (1)OS层,即经典意义的操作系统。
ROS只是元操作系统,需要依托真正意义的操作系统。目前与ROS兼容性最好的是Linux的Ubuntu,macOS和Windows也支持ROS的较新版本。
    (2)中间层,是ROS封装的关于机器人开发的中间件,例如:

           基于TCP/UDP 继续封装的TCPROS/UDPROS通信系统。

             用于进程间通信的Nodelet,它为数据的实时传输提供支持。

             机器人开发实现库,例如数据类型定义、坐标变换、运动控制等。
    (3)应用层,主要是功能包以及功能包内的节点,例如master、turtlesim的控制与运动节点等。
  4.从ROS自身的角度描述ROS架构:
    (1)文件系统。ROS文件系统指的是在硬盘上组织ROS源代码的形式。
    (2)计算图。ROS分布式系统中不同进程之间需要进行数据交互,计算图可以点对点的网络形式表现数据交互过程,计算图中的重要概念有节点(node)、消息(message)、主题(topic)和服务(service)。
    (3)开源社区。ROS的社区级概念是ROS网络上进行代码发布的一种表现形式。
             发行版(distribution)。ROS发行版是可以独立安装、带有版本号的一系列综合功能包。ROS发行版起到与Linux发行版类似的作用,这使得ROS软件安装更加容易,而且能够通过一个软件集合维持一致的版本。
             软件库(repository)。ROS依赖于共享开源代码与软件库的网站或主机服务,在这里不同的机构能够发布和分享各自的机器人软件与程序。
             ROS维基(ROS wiki)。用于记录有关ROS系统信息的主要论坛。任何人都可以注册账户、贡献自己的文件、提供更正或更新、编写教程等。网址是http://wiki.ros.org/
            错误提交系统(bug ticket system)。如果用户发现问题或者想提出一个新功能,可以利用ROS提供的这个资源做这些。
            邮件列表(mailing list)。ROS用户邮件列表是关于ROS的主要交流渠道,能够像论坛一样交流ROS软件更新到ROS软件使用中的各种疑问或信息。网址是http://lists.ros.org/
            ROS 问答(ROS answer)。用户可以使用这个资源提问题。网址是http:// answers.ros.org/questions/
            博客(blog)。用户可以看到定期更新、照片和新闻。网址是http://www.ros.org/news/。不过博客系统现在已经由ROS社区取而代之,网址是http://discourse ros.org/
ROS文件系统
  ROS文件系统指的是在硬盘上ROS源代码的组织形式,其结构大致如图所示。
95dc7ae883854bceae940f05bbe79201.jpeg
  第一层是workspace,它是自定义的工作空间。
  第二层如下:
         src:源码。
         build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。
         devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态和静态链接库、可执行文件等。
  第三层是package,即功能包,它是ROS的基本单元,包含多个节点、库与配置文件。包名中的字母均为小写,且只能由字母、数字与下画线组成。
  第四层如下:
         CMakeLists.txt:配置编译规则,例如源文件、依赖项、目标文件。
         package.xml:包信息,例如包名、版本、作者、依赖项等(在以前的版本manifest.xml)。                             scripts:存储Python文件。                                        msg:消息通信格式文件。                                          srv:服务通信格式文件。                                            include:头文件。                                                      src:存储C++源文件。                                               launch:可一次性运行多个节点。                               action:动作格式文件。                                             config:配置信息。

ROS文件系统相关命令

  1.与增加功能包有关的命令:

catkin_create_pkg  自定义包名   依赖包                              创建新的ROS功能包

sudo apt install xxx               安装ROS功能包

  2.删除功能包的命令:

sudo apt purge xxx

  3.与查找有关的命令:

rospack list                             列出所有功能包

rospack find 包名                                           查找某个功能包是否存在,如果存在则返回安装路径

roscd 包名                                进入某个功能包

rosls 包名                           列出某个包下的文件

apt search xxx                         搜索某个功能包

  4.修改功能包文件的命令:

rosed 包名 文件名

    需要安装vim。

  5.执行:

   (1)roscore:roscore是ROS的系统先决条件节点和程序的集合,必须运行roscore才能使ROS节点进行通信。roscore将启动ROS Master、ROS参数服务器和rosout日志节点。命令格式如下:

roscore

       也可指定端口号:

roscore -p xxxx

 (2)  rosrun:运行指定的ROS节点的命令如下:

rosrun 包名 可执行文件名

(3)roslaunch:执行某个包下的launch文件

roslaunch 包名 launch 文件名

二、ROS配置

一、Ubuntu20.04

  安装略。

二、ROS系统安装

一、法一(需科技)

  版本:Noetic

  下载网址https://www.ros.org/

15bcbdaef99b40c296f2a52514156658.png

9f68a8d32c484565b997ce3ccb5b0bcd.png

dd5e11009be84a7b8722013929664f76.png

0bd4fb7b7450453b90fc680dadd69c9d.png

二、法二推荐教程https://www.bilibili.com/video/BV1aP41137k9/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=40339b8f27fa2fe9a81201ee41eec9ef

 三、APT源(应用商店的使用)

  网址:https://index.ros.org/

  761e75b90c064feb9fdf1821c4491918.png

(注意版本选择)

下载步骤实例:

  寻找rqt_robot_steering软件包

  1.打开终端,输入:sudo apt install ros-noetic-rqt-robot-steering

  2.打开另一个终端,启动ROS,输入:roscore

  10db6c4dc49242f8953169dc78087e47.png

  出现上图则成功启动。

3.回到上一个终端,输入:rosrun rqt_robot_steering rqt_robot_steering

  f072e09bfa614428b825d9bddbed5e31.png

  如图。

运行小乌龟:

  1.打开新的终端,输入:rosrun turtlesim turtlesim_node

  6ea7a3b087b9415d8405c54a0dedb011.png

2.5c21e88faab84d5d93b882f93f4b7ee9.png

  完毕。

四、在Github上寻找安装ROS软件包

 注:一、二进行一次即可。

  网址:https://github.com/

  与APT不同的是,Github上的软件包为源码,需要编译才能运行,所以需要先建立一个工作空间,来进行源代码的编译。

一、建立工作空间:

  1.打开终端,输入:mkdir catkin_ws

  2.输入:cd catkin_ws

  3.输入:mkdir src

   源代码工程需要放置在src子目录里面才能正常编译。

 二、安装工具

  1.继续使用上一个终端,输入:cd src

  2.输入:sudo apt install git

  三、下载源码包,进行编译

  举例:

  1.在网站搜索栏中输入:wpr_simulation

  4c4f79be47e5461fbac33f7093ece576.png

  6ba2f83390aa49afb8e050052156ea60.png

2.继续使用上一个终端程序,(注意需要在src子目录下)

  输入:git clone (复制的链接)

  下载完成。

 3. 进入scripts文件(通常放置脚本文件和python程序):使用脚本安装编译需要的依赖库。

    右键,点击在终端中打开,输入:./install_for_noetic.sh

4.打开新的终端,在catkin_ws目录下运行catkin_make进行编译。

 5.打开软件

注:首先把catkin_ws工作空间里的环境参数加载到终端程序里,否则运行会提示找不到软件包。

  进入终端:进入catkin_ws,输入source ~/catkin_ws/devel/setup.bash

  输入:roslaunch wpr_simulation wpb_simple.launch(要编译的软件)

 成功后出现三维界面(即下载软件)

c2187ae10dac438091f85cad1358b08b.png

四、设置工作空间环境参数的source指令,添加到终端程序初始化的脚本~/.bashrc文件中,这样每次打开终端就可以马上运行ROS程序。

  1.在终端中输入gedit ~/.bashrc

a6308c780aac47eab0f7980a579b082c.png

    2.进行图中操作。

五、以下步骤可以找到ROS软件包源码。

b93588c58db64d91b0bc1af60a432023.png

0a5dfee8db6d41648b05b4843bed4beb.png

五、使用开发工具VS Code

一、下载

  1.在官网下载Ubuntu版本软件包(.deb)

  2.af4c570662f246c58ea3c306697e2d7e.png

3.输入:sudo dpkg -i code(tab键补全)

 4.输入code启动

二、导入工作空间

0f9b7c16c8384c5ba20a27e1e45d911c.png

注:应导入catkin_ws目录下的src文件夹

d4ba0803d4614b9f963970318bd9c8d3.png

快捷键:ctrl+shift+B 编译文件

具体配置推荐教程:https://www.bilibili.com/video/BV1rg411S7k3/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=40339b8f27fa2fe9a81201ee41eec9ef

六、使用超级终端Terminator

快捷键:

08c114cebec84081a0836860581b2218.png

2dee282a98d3465a8c413c79ac6c540e.jpeg

推荐教程:https://www.bilibili.com/video/BV1Ee4y1o7Vo/?spm_id_from=333.788&vd_source=40339b8f27fa2fe9a81201ee41eec9ef

七、文件夹展示

745ad187dede4162926af845a8abc274.png

5205808458704976bd3739cee4320fde.png

c063ed9270814dde96ba9af178e1df59.png

三、ROS节点配置

一、Node节点和Package包

  最小的进程单元就是节点(node)。

  一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点。

  包是ROS代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构件。

二、实现简单的包和节点

  以实现超声波传感器的节点为例:

1.工作空间设置

  详见四、在Github上寻找安装ROS软件包

2.创建Package包

  (1)打开终端,输入:

1.cd catkin_ws/src/

2.catkin_create_pkg ssr_pkg rospy roscpp std_msgs         

    创建在~/catkin_ws/src文件夹里

    catkin_create_pkg <包名> <依赖项列表>

    rospy:python;roscpp:c++;std_msgs:标准消息包。

  结果如下图

9de2668d67b241168bab3dd3b66926dd.png2a140eed693c4bec8bf3ba3a499a62d0.png  打开VSCode

  a9c19da9fdf64ae8ab74b9eb731aaaa5.png  34454c88c15f4c52b0c2fd48414a104e.png  4cc6e303faee4abaa01d233ec85d0b3a.png

3.回访依赖项

  前文提到的依赖项rospy 、roscpp 、std_msgs也为Package包。

  在终端输入

1.roscd roscpp

2.ls

3.code package.xml

38641859a17d4ce1bbf4ec8a858b33b9.png

863dd28717864348b8556cca86dbc866.png

证明依赖项roscpp等为Package软件包。

其文件目录

f365d4d4dffc4966965c4bfa28951541.png

  此目录下存放的均为Package包,都可直接运行,而catkin工作空间中的软件包都是源码文件,需要编译成可执行文件才能运行。

9993f495afe742928972ba7e47112717.png

4.创建Node节点

  bab21ad212154ef59f8e48e134c51555.png

14c114673fb04d9193cbe2cfa846d473.png

##

c399dee1e5744619b4a6352903329788.png

上图操作为解决误报语法错误问题方法,删除后重新打开VScode即可。

##

3b6a0f040e12403587282bbdbc1738b1.png

上图表明为保存,保存快捷键 ctrl+s,小圆点变成“x”后保存成功。编译之前必须保存!

5.源码编译

  (1)打开CMakeLists.txt文件(描述编译条件的配置文件)添加编译规则,

  a214ff891f9d4dd28e13986dce16dfa7.png

e81ae0f3dca34751a0157a9fd30abc0d.png

5f04d6749bc545649c2e581e7b867a75.png

保存,ctrl+shift+B编译。如下则成功。

76acb2f00c3b4449b30645a906b8f9db.png

注:若没有编译快捷键,可以打开新的终端,输入:

1.cd catkin_ws

2.catkin_make

同样能完成编译操作。

6.Node节点运行

  (1)启动ROS核心,打开终端输入:

roscore

    (2)运行节点 ,打开新的终端,输入:

rosrun ssr_pkg chao_node

    rosrun <包名> <节点文件名>

  如下图则成功390edc75eb87455199e65a982d3a9a2c.png

 改成正式的ROS节点:如图

6a9b0eaaf8224c45b06a95d4121866a8.png

19e24b9cfe1842198a5680708b1b1cbf.png

f2121d2a8c1c43a5a13579b611865141.png

保存,编译,运行

7370d16ec34c409e84b28b0bf778c72e.png

四、参考资料

《ROS机器人理论与实践》——清华大学出版社,赵虚左等著。

ROS快速入门教程——机器人工匠阿杰。https://www.bilibili.com/video/BV1BP4y1o7pw/?spm_id_from=333.999.0.0

维基百科

百度百科

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

断了的弦320

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值