基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建
简介
本篇文章主要介绍ROS入门基础,通过此篇文章,可以学习到安装配置、文件系统使用、ROS包创建和构建相关内容。
ROS资源网站
- ROS官网:http://wiki.ros.org/,可以这么说,市面上的绝绝大多数ROS教程都是参考了这个官网的资料进行翻译转载的。所以非常非常有价值,一定要看,包含了介绍、安装、使用教程、文答等内容。
注意这个网站大部分文档是有中文的,我曾经看了好长一段时间的英文文档,后来才发现原来有中文,点击下图这个位置,就可以切换为中文,这里发出来提醒一下:
- ROS源代码在Github上:https://github.com/ros
- 有三个地方可以找到你问题的答案。第一个就是Wiki。尝试右上角的搜索(Search)功能。
如果找不到解决问题的方法,就尝试搜索http://answers.ros.org或者邮件列表归档。也可以在http://answers.ros.org/questions/ask上提问。
ROS版本介绍
- 在安装使用ROS之前,就听过catkin、melodic这些名字,其实这些就是ROS的发行版名称,并不是按传统的数字表示版本,而是用英文单词进行表示,有点类似于树莓派的一些发行版,比如buster、stretch等等,关于ROS的版本,官网有介绍,这里直接给出链接:http://wiki.ros.org/Distributions
- 实际使用上melodic是截止目前(2021)较新一点的ROS发行版(2018年发布),catkin是上一代发行版(2016年发布)这两版使用操作上,对于新手来说,几乎没有什么区别,可以随便选择,不用担心会不会刚学会就过时了这种问题。
- 现在有最新的ROS2发布,不过现在应用相对较少,现在市面上的绝大部分智能机器人都是使用了上述的两种版本,所以我现在也还没有进行ROS 2的学习,后面工作中有机会用到了再研究。
安装和配置
- ROS安装,参考官网安装指引,非常详细,不过是英文的。我这边目前安装了melodic和Kinetic两个版本。
官网指引:http://wiki.ros.org/ROS/Installation - 初始化rosdep
sudo rosdep init
rosdep update
rosdep是ROS包依赖相关的内容,是安装ROS模块必备的组建,所以ros安装完成使用前都需要先初始化该模块。
- 启动配置
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
这一步是为了配置ROS自启动,是通过修改系统 .bashrc文件来完成的,这个文件会在每个shell窗口启动初始化的时候运行。如果不配置这一项,就每次启动shell后都需要手动运行
source /opt/ros/kinetic/setup.bash
这条指令才行,适合多个ROS同时并存的情况使用。
- ROS 环境检查
printenv | grep ROS
在输出的内容中,检查ROS_ROOT,ROS_PACAGE_PATH等环境变量的配置
这些配置决定了ROS环境和指令能否正常使用。这一步的环境变量配置,大多数是安装ROS过程中就已经配置好了的,也有部分是在.bashrc中配置的,上一步的source指令使其生效。
创建工作空间
- 在使用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级目录看一下,给大家看一下
- 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包
- ROS包必须具有以下特征:
- 这个包必须有一个符合catkin规范的package.xml文件
- 这个包必须有一个catkin版本的CMakeLists.txt文件
- 每个包必须有自己的目录
所以最简单的包结构如下:
my_package/CMakeLists.txtpackage.xml
- 使用catkin_create_pkg创建ROS包,语法格式如下:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
# 举例如下:
# catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
- 常用命令
rospack depends1 [package_name] # 显示ROS包的一级依赖,举例:rospack depends1 beginner_tutorials
rospack depends [package_name] # 显示ROS包的所有依赖,举例:rospack depends beginner_tutorials
- 构建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
- 至此为止就完成了ROS包的创建并使其生效。
·
·
·
欢迎各位老铁一键三连,本号后续会不断更新树莓派、人工智能、STM32、ROS小车相关文章和知识。
大家对感兴趣的知识点可以在文章下面留言,我可以优先帮大家讲解哦
欢迎大家光临我的淘宝小店,会定期推出教程中使用的物美价优的硬件,你的光临就是对我的支持
原创不易,转载请说明出处。
基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建相关推荐
- JBPM4.4入门学习一:JBPM安装配置及构建数据库环境
好久不写博客了... JBPM一直是一个令我头疼的东西,想去学习确不知道如何下手.最近这两天上网搜了许多关于JBPM的东西,今天先整理一篇. 该篇文章主要介绍了使用JBPM的前期准备.创建数据库环境及 ...
- symfony入门学习资料之十六:Symfony框架启动过程介绍
symfony入门学习资料之十六:Symfony框架启动过程介绍 Symfony框架的核心本质是把Request转换成Response的一个过程.从入口文件(web_dev.php)的源码可以看个大概 ...
- symfony入门学习资料之九:YAML格式介绍
symfony入门学习资料之九:YAML格式介绍 由于EDUSOHO的项目原因,中断了对symfony框架的继续学习,今天回顾了前面的总结,总结了八节.从建立简单的页面.控制器.路由.模板等,甚至包括 ...
- 近200篇机器学习深度学习资料分享
编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定期的更新,望看到文章的朋友能够学到更多. <Brief History of Machine Le ...
- 近200篇机器学习深度学习资料分享(含各种文档,视频,源码等)(1)
原文:http://developer.51cto.com/art/201501/464174.htm 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定 ...
- symfony入门学习资料之十:YAML——基本语法
symfony入门学习资料之十:YAML--基本语法 本节的学习,继续介绍YAML的语法,进一步深入的学习.在symfony框架中,yml格式的文件用的非常普遍,所以在本系列的学习中,要多花些篇幅进行 ...
- 【OpenCV】入门学习资料汇总
opencv入门学习资料汇总页面 自制python版的正在撰写中- ?浅墨_毛星云,<OpenCV3编程入门>的作者,为初学者详细讲解了环境搭建.库.工程的配置等等头疼的问题,并有18个配 ...
- 零基础如何去入门学习UI设计?学习步骤是什么?
本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 零基础如何去入门学习UI设计?学习步骤是什么?零基础如何规划好学习UI设计呢,菜鸟学习UI设计有什么步骤.下面兔课菌 ...
- EDEM入门学习教程—界面介绍
大家好,这个假期比较无聊,以EDEM2022为例,码一篇EDEM入门学习的教程.先介绍EDEM界面. 打开EDEM,上面这一块是标题栏,右面是图形界面,左边是模型树. 先看标题栏,主要介绍中间这一条, ...
最新文章
- [UML]UML系列——用例图中的各种关系(include、extend)
- pat1094. The Largest Generation (25)
- 计算机考研数据结构重点
- warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
- 如何使用sklearn优雅地进行数据挖掘?
- Django ORM 数据库操作
- UI设计灵感|挑战经典!不一样的注册登录页
- 2017-2018-2 20155315《网络对抗技术》Exp3:免杀原理与实践
- Java项目:ssm房屋租赁管理系统
- 做项目的一些思路(针对小白)
- python自动加减法_python实现随机加减法生成器
- 英国议会上院AI报告AI in the UK-ready, willing and able附原文183页(赞赏后下载ZIP包)
- 国务院:推进太阳能光伏项目国际合作
- Android后端工程师的要求,后端工程师的岗位职责和能力
- c++编译报错 error c2248: “xxx:xxx“:无法访问private成员(在“xxx“类中声明)
- 操作系统原理实验(5):内存管理
- 共同父域下的单点登录
- 正则校验必须由数字 字母 和 特殊符号组成的正则
- 直流无刷电机c语言程序,无位置传感器的直流无刷电机调速控制程序(一)
- 自然二进制与格雷码的转换