机器人技术(3)机器人操作系统ROS简单教程
1 ROS简介(Xu, Chen et al. 2016)
机器人操作系统(ROS)是一个用于编写机器人软件的灵活框架。它是一系列工具,库和约定,旨在简化在各种机器人平台上创建复杂而强大的机器人行为的任务。
为什么?因为创建真正强大的通用机器人软件是很难的。从机器人的角度来看,对于人类来说似乎微不足道的问题在任务和环境的实例之间经常变化很大。处理这些变化是非常困难的,没有一个人,实验室或机构可以希望自己去做。
因此,ROS是从头开始构建的,以鼓励协作机器人软件开发。例如,一个实验室可能有专家来绘制室内环境,并且可以贡献世界一流的地图制作系统。另一组可能有使用地图导航的专家,而另一组可能已经发现了一种能够很好地识别小物体的计算机视觉方法。ROS是专门针对这些团体设计的,以协作和建立彼此的工作,如本网站所述。
本篇是我们机器人底盘开发教学的第二篇,将会介绍ROS系统的安装与配置,以及讲述一些简单的例程,让大家可以体验到ROS系统的神奇之处,同样,我们也需要在PC和嵌入式硬件上都安装ROS,但是,由于两者步骤相同,在这里将简化为一章介绍。
2 安装ROS系统
ROS到目前为止已经发行了许多个版本,他们之间的安装过程除了一些细微的差别之外,大体相同,其中最稳定,资源最丰富的版本就是indigo,这里先介绍indigo的安装过程,其他版本的区别将会后面一一提到。
2.1 安装前的准备
设置你的locale
Boost和一些ROS工具需要系统locale被设置,你能如下设置它:
sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX
设置软件中心
在菜单中找到如下窗口,将"restricted," "universe," and "multiverse."的软件源全部勾选,如下图所示,并保存。
Ubuntu 14.04(Trusty armhf)设置镜像源命令如下:
sudo sh -c 'echo"deb http://packages.ros.org/ros/ubuntu trusty main" >/etc/apt/sources.list.d/ros-latest.list'
设置你的秘钥
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudoapt-key add -
更新的Debian包索引
sudo apt-get update
2.2 安装ROS
所有版本的ROS都提供3种方式的安装,分别是基本版、完整版和添加特定的工具包,安装命令分别如下:
完全版安装:(推荐):包括ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知
sudo apt-get install ros-indigo-desktop-full
基本版安装:ROS,rqt,rviz和机器人通用库
sudo apt-get install ros-indigo-desktop
单个软件包:您还可以安装特定的ROS软件包
sudo apt-get install ros-kinetic-PACKAGE
PACKAGE用包的名字替换掉,例如:
sudo apt-get install ros-kinetic-slam-gmapping
要找各种工具包的名字,使用:
apt-cache search ros-kinetic
对于刚接触ROS系统的使用者来说,这里推荐完整版安装,可以节省我们去配置各种工具包的时间。
2.3 安装完成之后的配置
由于完整的ROS系统比较大,安装过程需要等待比较长的时间,一般在数个小时左右,当安装完成之后,我们就可以着手对其进行配置,让它更加方便使用。
开机自动启动
将ROS的系统变量自动添加到~/.bashrc中,每次启动shell时自动加载:
echo "source/opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
初始化
在使用ROS之前,您需要初始化rosdep。rosdep使您能够轻松地为要编译的源安装系统依赖关系,并且需要在ROS中运行一些核心组件。
sudo rosdep init
rosdep update
获得rosinstall
rosinstall是一个经常使用的ROS单独发行的命令行工具。用这个命令使你可以轻松地下载许多源代码树的ROS包。
在ubuntu上加载这个工具,运行:
sudo apt-get install python-rosinstall
确认系统信息,输入:
lsb_release –a
回显如下:
说明已经安装配置完成。下面我们可以开始运行几个简单的例程,开始体验ROS系统的有趣之处了~~
注意:如果想要安装其他版本的ROS系统,只需要将上述教程中的“indigo”换成你想要安装的版本的名字即可,例如groovy, hydro, kinetic等。
3 ROS入门初体验
本教程介绍ROS文件系统概念,包括命令行工具roscd、rosls和rospack的使用。我们将会用到ros-tutorials程序包,请先安装:
sudo apt-get install ros-<distro>-ros-tutorials
将 <distro> 替换成你所安装的版本(比如Jade、Indigo、hydro、groovy、fuerte等)。
3.1 ROS系统中的基本指令介绍
文件系统概念:
Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。
Manifest (package.xml): 清单,是对于'软件包'相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。
文件系统工具
程序代码是分布在众多ROS软件包当中,当使用命令行工具(比如ls和cd)来浏览时会非常繁琐,因此ROS提供了专门的命令工具来简化这些操作。
rospack允许你获取软件包的有关信息。在本教程中,我们只涉及到rospack中find参数选项,该选项可以返回软件包的路径信息。
用法:
rospack find [包名称]
例如:
rospack find roscpp
会输出:
YOUR_INSTALL_PATH/share/roscpp
使用roscd
roscd是rosbash命令集中的一部分,它允许你直接切换(cd)工作目录到某个软件包或者软件包集当中。
用法:
roscd [本地包名称[/子目录]]
例如:
roscd roscpp
为了验证我们已经切换到了roscpp软件包目录下,现在我们可以使用Unix命令pwd来输出当前工作目录:
Pwd
你应该会看到:
YOUR_INSTALL_PATH/share/roscpp
你可以看到YOUR_INSTALL_PATH/share/roscpp和之前使用rospack find得到的路径名称是一样的。
注意,就像ROS中的其它工具一样,roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包,要查看ROS_PACKAGE_PATH中包含的路径可以输入:
echo $ROS_PACKAGE_PATH
3.2 创建一个工作空间
本节教程假设使用者已经安装了catkin(安装好的ROS一般是自带的)并获取了你的环境。在进行ROS的开发之后,我们通常会把我们开发出来的项目放到同一个目录下方便管理,这个目录就是我们的工作空间,但首先,我们需要创建一个工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
即使工作区是空的(“src”文件夹中没有包,只有一个CMakeLists.txt链接),您仍然可以编译工作区:
cd ~/catkin_ws/
catkin_make
catkin_make命令可以非常方便地编译catkin工作区。现在你可以开始在这个工作空间中创建自己的ROS包了
3.3 创建一个catkin程序包
一个程序包要想称为catkin程序包必须符合以下要求:
•该程序包必须包含catkin compliant package.xml文件
◦这个package.xml文件提供有关程序包的元信息。
•程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。
•每个目录下只能有一个程序包。 ◦这意味着在同一个目录下不能有嵌套的或者多个程序包存在。
最简单的程序包也许看起来就像这样:
my_package/
CMakeLists.txt
package.xml
开发catkin程序包的一个推荐方法是使用catkin工作空间,但是你也可以单独开发(standalone)catkin软件包。一个简单的工作空间也许看起来像这样:
4 最后
如果全部步骤完成,树莓派和PC均能正常连接如局域网,则可以认为Ubuntu系统已经配置完成,并进入到下一章《ROS系统入门》。
机器人技术(3)机器人操作系统ROS简单教程相关推荐
- 使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
参考链接:https://github.com/bunchofcoders/basic_bocbot 本文为使用ROS 2和Gazebo9搭建仿真机器人详细指南. 确保已按如下说明安装ROS和Gaze ...
- 机器人技术与人工智能有什么区别?
机器人技术是人工智能的一部分吗?人工智能是机器人技术的一部分吗?机器人技术和人工智能(AI)的目的截然不同.但是,我们经常将它们混淆. 机器人技术与人工智能有什么区别? 什么是机器人技术? 机器人技术 ...
- ROS新手教程【一】ROS开源机器人操作系统简介
导师是机器人方向的,毕设就让我ROS的研究,网上有几篇新手教程,我自己照着做也行,但想了想,一直没有写博客的习惯,索性就从这次开始,主要参考是wiki,其实我建议看得懂英文的照着做就好,不理解得地方再 ...
- python机器人编程教程入门_机器人操作系统(ROS)入门必备:机器人编程一学就会
本书是针对机器人操作系统(ROS)初学者的入门教程,从基础的如何安装ROS,到ROS的框架介绍和C/C++.Python编程基础概念介绍,直至完整搭建一个机器人项目,每一个部分都有详细的操作过程和相应 ...
- 干货:机器人开源操作系统ROS
导读:前不久,John 为大家介绍过物联网开源操作系统,或许大家还记忆犹新.今天,要介绍的是一款机器人领域的开源操作系统:ROS. 简介 ROS,英文全称 Robot Operating System ...
- 关于机器人操作系统(ROS)学习前须知二三
ROS基础资料 1.什么是ROS? ROS(机器人操作系统,Robot Operating System),是专为机器人软体开发所设计出来的一套电脑作业系统架构.它是一个开源的元级操作系统(后操作系统 ...
- 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载
原文:机器人操作系统ROS-深度相机+激光雷达实现vSLAM建图与导航_wx5d23599e462fa的技术博客_51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航. ...
- 在Windows10安装和使用机器人操作系统ROS补充说明
适用于Windows的ROS: https://microsoft.github.io/Win-RoS-Landing-Page/# 人们一直对机器人着迷.今天,先进的机器人正在改变我们的生活,无论是 ...
- 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能
博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练. 这篇博文围绕windows系统展开,之前也写 ...
最新文章
- Adam真的是最好的优化器吗?
- Java循环读取文件夹下文件
- python一箭穿心代码怎样复制,Python Decimal copy_sign()用法及代码示例
- 高级SQL优化(二) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》
- ensp中ap获取不到ip_对比网络模拟器软件,Cisco Packet Tracer、华为eNSP、H3C Cloud Lab...
- 云原生环境下对“多活”架构的思考
- I love exam HDU - 6968
- 乡村野生草药_官方野生蝇群流口水分数
- Open vSwitch实验常用命令
- 源码-03-九宫格 封装 懒加载 plist
- robocopy 备份_windows下使用RoboCopy命令进行文件夹增量备份
- 用 Mixly 玩 ESP8266(ESP-01模块)之二
- python自带的库有哪些_python自带库
- 压缩图片的三种方式(Java)
- sqlplus 执行脚本经验总结
- winedit注册码
- php短网址还原,短网址还原 API 接口调用请求
- java里面怎么开根号_新手求解呀!!!!!!!怎么开根号,为嘛我开不了
- 中小型企业开发门户网站我建议你选择阿里云的云速美站
- android 2k 屏幕 字体模糊,2k显示器怎么会字体模糊
热门文章
- 按键精灵加密html,按键精灵HtmlCheck 选择/清除网页中的单选框或复选框 | 学步园...
- 使用exe4j+inno setup打包exe文件踩坑记录
- 以太坊智能合约项目开发——Web3.py库安装及错误解决方案
- flink教程-聊聊 flink 1.11 中新的水印策略
- my read law / notarization / gongzheng
- 2007年IT产业回顾:划时代的一年 一个变革的时代
- 使用vue-i18n实现中英文切换
- 虚拟机桌面快捷方式不见了……
- 如何1人5天开发完3D数据可视化大屏 【一】
- 什么是BI、数据仓库、数据湖和数据中台,他们有什么差异?