简介

本篇文章主要介绍ROS入门基础,通过此篇文章,可以学习到安装配置、文件系统使用、ROS包创建和构建相关内容。

ROS资源网站

  1. ROS官网:http://wiki.ros.org/,可以这么说,市面上的绝绝大多数ROS教程都是参考了这个官网的资料进行翻译转载的。所以非常非常有价值,一定要看,包含了介绍、安装、使用教程、文答等内容。
    注意这个网站大部分文档是有中文的,我曾经看了好长一段时间的英文文档,后来才发现原来有中文,点击下图这个位置,就可以切换为中文,这里发出来提醒一下:
  2. ROS源代码在Github上:https://github.com/ros
  3. 有三个地方可以找到你问题的答案。第一个就是Wiki。尝试右上角的搜索(Search)功能。
    如果找不到解决问题的方法,就尝试搜索http://answers.ros.org或者邮件列表归档。也可以在http://answers.ros.org/questions/ask上提问。

ROS版本介绍

  1. 在安装使用ROS之前,就听过catkin、melodic这些名字,其实这些就是ROS的发行版名称,并不是按传统的数字表示版本,而是用英文单词进行表示,有点类似于树莓派的一些发行版,比如buster、stretch等等,关于ROS的版本,官网有介绍,这里直接给出链接:http://wiki.ros.org/Distributions
  2. 实际使用上melodic是截止目前(2021)较新一点的ROS发行版(2018年发布),catkin是上一代发行版(2016年发布)这两版使用操作上,对于新手来说,几乎没有什么区别,可以随便选择,不用担心会不会刚学会就过时了这种问题。
  3. 现在有最新的ROS2发布,不过现在应用相对较少,现在市面上的绝大部分智能机器人都是使用了上述的两种版本,所以我现在也还没有进行ROS 2的学习,后面工作中有机会用到了再研究。

安装和配置

  1. ROS安装,参考官网安装指引,非常详细,不过是英文的。我这边目前安装了melodic和Kinetic两个版本。
    官网指引:http://wiki.ros.org/ROS/Installation
  2. 初始化rosdep
sudo rosdep init
rosdep update

rosdep是ROS包依赖相关的内容,是安装ROS模块必备的组建,所以ros安装完成使用前都需要先初始化该模块。

  1. 启动配置
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

这一步是为了配置ROS自启动,是通过修改系统 .bashrc文件来完成的,这个文件会在每个shell窗口启动初始化的时候运行。如果不配置这一项,就每次启动shell后都需要手动运行source /opt/ros/kinetic/setup.bash这条指令才行,适合多个ROS同时并存的情况使用。

  1. ROS 环境检查
printenv | grep ROS

在输出的内容中,检查ROS_ROOT,ROS_PACAGE_PATH等环境变量的配置

这些配置决定了ROS环境和指令能否正常使用。这一步的环境变量配置,大多数是安装ROS过程中就已经配置好了的,也有部分是在.bashrc中配置的,上一步的source指令使其生效。

创建工作空间

  1. 在使用ROS之前,需要先创建一个工作空间,接着编译,然后才能在工作空间下创建包、节点等ros文件,ROS才能真正使用起来,首先我们创建工作空间(可以理解为创建一个专属的ROS文件夹)
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make

catkin_make命令在catkin工作空间中是一个非常方便的工具。在你的工作空间中第一次运行它时,它会在src目录下创建一个CMakeLists.txt的链接。
实际上运行catkin_make这个指令后,会在工作目录下创建很多ROS相关的文件,这里我使用Tree工具只展开2级目录看一下,给大家看一下

  1. source工作空间,使用如下指令将工作空间设置在环境的最顶层,可以理解为使工作空间生效,这里也可以将工作空间按前文(安装配置-> 3)步骤将工作空间配置到.bashrc文件中,使其在shell启动过程中就自动生效。指令如下:
source ~/catkin_ws/devel/setup.bash

这里我们可以看到source前后环境变量的变化,截图如下:

此处需要确认两个目录已经加入到ROS_PACAGE_PATH中,可以用如下指令 echo $ROS_PACKAGE_PATH检查,两个目录为:/home/xtark/catkin_ws/src, /opt/ros/kinetic/share

文件系统使用

  1. 简介

    • 软件包(Packages):包是ROS代码的软件组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构件。
    • Manifests (package.xml): 清单(Manifest)是对软件包的描述。它用于定义软件包之间的依赖关系,并记录有关软件包的元信息,如版本、维护者、许可证等。
  2. 常用指令
rospack find [package_name]      # ROS包查找:按包名称查找 ROS 包,举例:rospack find roscpp
roscd [locationname[/subdir]]   # ROS包跳转:直接切换当前目录到指定报名的位置,举例:roscd roscpp
rosls [locationname[/subdir]]   # ROS包列表:直接按包名显示包内的文件列表,举例:rosls roscpp

创建ROS包

  1. ROS包必须具有以下特征:

    • 这个包必须有一个符合catkin规范的package.xml文件
    • 这个包必须有一个catkin版本的CMakeLists.txt文件
    • 每个包必须有自己的目录
      所以最简单的包结构如下:
my_package/CMakeLists.txtpackage.xml
  1. 使用catkin_create_pkg创建ROS包,语法格式如下:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
# 举例如下:
# catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
  1. 常用命令
rospack depends1 [package_name]      # 显示ROS包的一级依赖,举例:rospack depends1 beginner_tutorials
rospack depends [package_name]      # 显示ROS包的所有依赖,举例:rospack depends beginner_tutorials
  1. 构建ROS包:这一步一般直接构建整个ROS工作空间,就会自动重新构建没有完成构建的ROS包,使用命令catkin_make,在构建之前先进入到ROS工作空间,操作命令如下:
cd ~/catkin_ws/
catkin_make

执行完成后会输出构建日志,截图解释如下:

上述命令会构建src目录下的所有catkin项目。该过程遵循REP128的建议。如果你的源代码不在默认位置(catkin_ws/src),比如说存放在了my_src中,那可以这样来使用catkin_make: catkin_make --source my_src

  1. 至此为止就完成了ROS包的创建并使其生效。

·
·
·

欢迎各位老铁一键三连,本号后续会不断更新树莓派、人工智能、STM32、ROS小车相关文章和知识。

大家对感兴趣的知识点可以在文章下面留言,我可以优先帮大家讲解哦

欢迎大家光临我的淘宝小店,会定期推出教程中使用的物美价优的硬件,你的光临就是对我的支持

原创不易,转载请说明出处。

基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建相关推荐

  1. JBPM4.4入门学习一:JBPM安装配置及构建数据库环境

    好久不写博客了... JBPM一直是一个令我头疼的东西,想去学习确不知道如何下手.最近这两天上网搜了许多关于JBPM的东西,今天先整理一篇. 该篇文章主要介绍了使用JBPM的前期准备.创建数据库环境及 ...

  2. symfony入门学习资料之十六:Symfony框架启动过程介绍

    symfony入门学习资料之十六:Symfony框架启动过程介绍 Symfony框架的核心本质是把Request转换成Response的一个过程.从入口文件(web_dev.php)的源码可以看个大概 ...

  3. symfony入门学习资料之九:YAML格式介绍

    symfony入门学习资料之九:YAML格式介绍 由于EDUSOHO的项目原因,中断了对symfony框架的继续学习,今天回顾了前面的总结,总结了八节.从建立简单的页面.控制器.路由.模板等,甚至包括 ...

  4. 近200篇机器学习深度学习资料分享

    编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定期的更新,望看到文章的朋友能够学到更多. <Brief History of Machine Le ...

  5. 近200篇机器学习深度学习资料分享(含各种文档,视频,源码等)(1)

    原文:http://developer.51cto.com/art/201501/464174.htm 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定 ...

  6. symfony入门学习资料之十:YAML——基本语法

    symfony入门学习资料之十:YAML--基本语法 本节的学习,继续介绍YAML的语法,进一步深入的学习.在symfony框架中,yml格式的文件用的非常普遍,所以在本系列的学习中,要多花些篇幅进行 ...

  7. 【OpenCV】入门学习资料汇总

    opencv入门学习资料汇总页面 自制python版的正在撰写中- ?浅墨_毛星云,<OpenCV3编程入门>的作者,为初学者详细讲解了环境搭建.库.工程的配置等等头疼的问题,并有18个配 ...

  8. 零基础如何去入门学习UI设计?学习步骤是什么?

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 零基础如何去入门学习UI设计?学习步骤是什么?零基础如何规划好学习UI设计呢,菜鸟学习UI设计有什么步骤.下面兔课菌 ...

  9. EDEM入门学习教程—界面介绍

    大家好,这个假期比较无聊,以EDEM2022为例,码一篇EDEM入门学习的教程.先介绍EDEM界面. 打开EDEM,上面这一块是标题栏,右面是图形界面,左边是模型树. 先看标题栏,主要介绍中间这一条, ...

最新文章

  1. [UML]UML系列——用例图中的各种关系(include、extend)
  2. pat1094. The Largest Generation (25)
  3. 计算机考研数据结构重点
  4. warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
  5. 如何使用sklearn优雅地进行数据挖掘?
  6. Django ORM 数据库操作
  7. UI设计灵感|挑战经典!不一样的注册登录页
  8. 2017-2018-2 20155315《网络对抗技术》Exp3:免杀原理与实践
  9. Java项目:ssm房屋租赁管理系统
  10. 做项目的一些思路(针对小白)
  11. python自动加减法_python实现随机加减法生成器
  12. 英国议会上院AI报告AI in the UK-ready, willing and able附原文183页(赞赏后下载ZIP包)
  13. 国务院:推进太阳能光伏项目国际合作
  14. Android后端工程师的要求,后端工程师的岗位职责和能力
  15. c++编译报错 error c2248: “xxx:xxx“:无法访问private成员(在“xxx“类中声明)
  16. 操作系统原理实验(5):内存管理
  17. 共同父域下的单点登录
  18. 正则校验必须由数字 字母 和 特殊符号组成的正则
  19. 直流无刷电机c语言程序,无位置传感器的直流无刷电机调速控制程序(一)
  20. 自然二进制与格雷码的转换

热门文章

  1. 各种光流算法介绍和原理
  2. 吸拖一体机和扫地机器人哪个好,吸拖一体机值得买吗
  3. APP是怎么精确统计下载数量?
  4. 跟相亲对象微信聊什么?聊天绝学四步走一试便知有没有
  5. 柬埔寨招聘中文计算机,柬埔寨ll中文老师1000美金+招聘机会来啦,快来围观!!!...
  6. excel表格中18位身份证号码如何转换成出生日期
  7. 保姆教程:mac ssh密钥连接Linux
  8. sipp介绍与脚本撰写(一)
  9. 让前辈再次激励我不断进步
  10. 取模(余)%运算详解