简介

本篇文章主要介绍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同时并存的情况使用。

  2. 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

文件系统使用

简介

  • 软件包(Packages):包是ROS代码的软件组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构件。
  • Manifests (package.xml): 清单(Manifest)是对软件包的描述。它用于定义软件包之间的依赖关系,并记录有关软件包的元信息,如版本、维护者、许可证等。

常用指令

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.txt
  package.xml
  1. 使用catkin_create_pkg创建ROS包,语法格式如下:
    catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
    # 举例如下:
    # catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
    
  2. 常用命令
    rospack depends1 [package_name]		# 显示ROS包的一级依赖,举例:rospack depends1 beginner_tutorials 
    rospack depends [package_name]		# 显示ROS包的所有依赖,举例:rospack depends beginner_tutorials 
    
  3. 构建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

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

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

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

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

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