赞
踩
机器人学(英语:robotics)是一项涵盖了机器人的设计、建造、运作、以及应用的跨领域科技[1],就如同电脑系统之控制、感测回授、以及资讯处理。这些科技催生出能够取代人力的自动化机器,在危险境或制造工厂运作,或塑造成外表、行为、心智的仿人机器人。如今许多的机器人受到自然界的启发,贡献于生物启发的机器人学的领域。
创造可自动运转的机器的概念可追溯至古典时代,但是直到20世纪以前,机器人的功能和潜在应用开发及研究没有持续地成长[2]。纵观历史,机器人常见于模仿人类行为,且常以类似的方法管理事务。时至今日,机器人学成为一个快速成长的领域,同时先进技术持续地研发、设计、以及建造用来达成各种实用目的新款机器人,例如家庭用机器人、工业机器人或军用机器人。许多机器人从事对人类来讲非常危险的工作,如拆除炸弹、地雷、探索沉船等。机器人学还被用于STEM教育(科学Science, 技术Technology, 工程Engineering, 和数学Mathematics) 作为教学辅助。
如图 一个采用气动人工肌肉的机器人腿。
驱动器就像一个机器人的"肌肉",可将储存的能量转化成移动。到目前为止,最常被使用的驱动器为转动轮子或齿轮的电动马达,以及控制在工厂中的工业用机器人的线性驱动器。然而,近期有一些不同型态的先进驱动器,其动力来源可为电力、化学反应、或压缩空气。
感应器使得机器人能够接收关于一些环境或内部元件的量测资讯。感测能力是机器人执行任务以及基于任何环境变化来动作以计算适当的反应的基本条件。感测器提供各种不同形式的量测,如给机器人安全警报或故障讯号,以及提供工作执行状况的即时资讯。
目前的机器手及义肢能接收的体感或触觉资讯远少于人类的手。近期的研究已开发出一个触觉感测阵列,可模仿人类手指的机械特性以及接触感受器 [6][7]。此感应阵列由装载导电液的合成橡胶皮,环绕在一个硬件核心周围来构成。多个电极装置在硬核的表面并连接至硬件核内部的阻抗量测装置。当人工外皮接触一个物件,电极周遭的电解液路径被变形,因而产生相应于来自此物件外力的阻抗变化。研究学者们期望这样的人工手指的重要功能,将可以调整机器人拿起物件时的握力程度。
计算机视觉是让机器可以看见的科技。作为一门学科,计算机视觉关注人造系统背后的从图像中提取信息的理论。图像数据可以采取许多形式,如来自摄像机的影像画面序列和图片。
在最实用的计算机视觉应用中,计算机是基于被预先编程的方法来解决特定的任务,但是,基于学习的方法在现在变得越来越普遍。
其他常见的机器人感应形式使用激光雷达(LIDAR),雷达和声纳。
更多信息:Mobile manipulator
机器人需要操作物件:拾起、修改、销毁、或是产生其他的效应。当机器人的操作处理器被视为"臂"时[8],机器末端作用器则被视为机器人的"手"[9]。大部分机器人手臂拥有可置换的作用器,每一个作用器可以执行一些范围的工作。一些机器人有固定不可置换的操作处理器,同时也有少数有非常通用性质的操作器,例如人形手臂。
About ROS :https://www.ros.org/about-ros/
The Robot Operating System (ROS) is a flexible framework for writing robot software. It is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms.
Why? Because creating truly robust, general-purpose robot software is hard. From the robot's perspective, problems that seem trivial to humans often vary wildly between instances of tasks and environments. Dealing with these variations is so hard that no single individual, laboratory, or institution can hope to do it on their own.
As a result, ROS was built from the ground up to encourage collaborative robotics software development. For example, one laboratory might have experts in mapping indoor environments, and could contribute a world-class system for producing maps. Another group might have experts at using maps to navigate, and yet another group might have discovered a computer vision approach that works well for recognizing small objects in clutter. ROS was designed specifically for groups like these to collaborate and build upon each other's work, as is described throughout this site.
正如文章“Robot Operating System (ROS): The key to the future of robotics programming”,机器人操作系统ROS是未来机器人编程的关键。
Robot Operating System (ROS): The key to the future of robotics programming:
https://opencloudware.com/robot-operating-system-ros-the-key-to-the-future-of-robotics-programming/
ROS机器人操作系统是一个完全开源的机器人操作系统。它更像是一个元操作系统或中间件,帮助从软件中抽象出硬件。它背后的主要思想是避免连续的重造轮子和提供标准化的功能,这样你就不会因为别人以前做过而在硬件抽象层上浪费时间。它为业余爱好者和非专业人士提供了一个简单的进入机器人编程领域。
ROS 是由加州 Willow Garage 公司于2006年开发的。其目的是建立一个可用于一般目的的框架,从那时起,它就由他们维护和开发。ROS 有许多版本或发行版(称为发行版) ,每个新的 Ubuntu 操作系统版本都会推出这些版本。最新的一个是 ROS Noetic 忍者系统,它是针对 Ubuntu 20.04 LTS 版本的。
有许多替代品,如 MRPT,CARMEN,LCM,Player,Microsoft RDS。尽管如此,它们在设计缺陷方面还是失败了,比如语言支持的限制,未经优化的通信,或者缺乏对各种设备的硬件支持,这又是一个相当令人担忧的问题。ROS 使软件开发人员不需要考虑硬件设计或硬件工作原理就可以创建程序。它提供了一种将进程网络与中央集线器或主集线器连接的方法。除此之外,ROS 支持许多编程语言,这使得它比其他框架更加灵活。
ROS 还使得开发人员可以很容易地集成已经由其他人开发的节点。举个例子,假设你已经构建了一个机械臂,它包括一个运动节点和一个控制节点。假设有人制作了一个由视觉节点和运动节点组成的基于视觉的目标跟踪车。如果你愿意,你可以把汽车的视觉节点加入到你的机械臂中,然后你就有了一个具有目标检测/视觉功能的机械臂。就是这么简单。
ROS 正在慢慢地致力于成为机器人中间件的行业标准。据 ABI 研究公司称,“2024年,近55% 的商用机器人,超过91.5万台,将安装至少一个 ROS 软件包”,创造了一个相当大的具有 ROS 功能的机器人安装基地。发言人说: 「 ROS 之所以成功,是因为它与其他开放源码计划有广泛的互用性和兼容性。」。ROS 1.0利用 Orocos 实现实时通信,OpenCV 利用机器视觉模型,”ABI Research 首席分析师 Lian Jye Su 表示。
Robot Operating System has many useful tools which help the user to get an idea about how the system will work in the real world. One of them is RViz, which is a prevalent 3-D visualization tool. It takes the software parameters as input and visualizes them based on the type of input. This helps us to see the environment from the perspective of the robot.
机器人操作系统有许多有用的工具,可以帮助用户了解系统在现实世界中将如何工作。其中之一是 RViz,它是一个流行的三维可视化工具。它以软件参数作为输入,并根据输入类型可视化它们。这有助于我们从机器人的角度来看待环境。
(Image source: ROS Programming: Building Powerful Robots by Anil Mahtani, Luis Sanchez, Enrique Fernandez, Aaron Martinez, Lentin Joseph) (图片来源: ROS Programming: Building Powerful Robots by Anil Mahtani,Luis Sanchez,Enrique Fernandez,Aaron Martinez,lutin Joseph)
在可视化效果良好之后,我们可以使用所有的物理参数在三维世界中进行模拟。这个模拟是在 Gazebo 的帮助下完成的,Gazebo 是一个支持 ROS 的三维模拟器。通过在这些模拟中快速测试我们的算法和设计,我们可以节省大量的时间和金钱。
(Image source: Moose UGV tutorials by Clearpath Robotics) (图片来源: Moose UGV 教程由 Clearpath Robotics 提供)
机器人操作系统需要一个基于 linux 的环境来运行。处理器和内存需求的类型完全取决于您的项目。一般来说,最常用于小型 ROS 项目的计算机是 Raspberry Pi。这是由于它对 Linux 内核的支持和板的低成本。最近,以 RP2040为特色的 Raspberry Pi Pico 发布了,它也支持微活性氧。假设您的项目需要大量计算,比如基于 slam 的自主导航或计算机视觉应用程序。在这种情况下,你应该选择功能强大的主板,比如 Nvidia Jetson TX2或者 Intel NUC。
至于传感器,ROS 具有与大多数传感器兼容的库。许多产品都支持 ROS,例如 RPLIDAR a1m8360度激光扫描仪,英特尔 Realsense 深度相机,等等。
学习ROS的关键是——多实践!
ROS是一个机器人研发中的重要工具,“学以致用”才是我们学习的最终目的:给学习赋能的就是实践!而实践就是不断进行知行合一的各种尝试!
现在关于ROS的资料已经非常多了,无论是图书、视频还是博客,都可以找到很多学习的资源,但是ROS的学习曲线还是有点陡峭,很多初学者还没来得及在ROS的世界走一走,就半路放弃回了头。
1.背景知识
ROS需要基于Ubuntu使用,涉及的编程语言主要是C++和Python,另外还需要对所研究的机器人理论有一定了解。
这些是对初学者背景知识的要求,但千万不要抱出一本《C++ primer》开始研读,这些知识都需要在实践中打磨,所以建议在网上找一些速成教程,花几天时间大概了解知识框架和重点即可。
2.ROS安装
ROS安装当然是开始动手的第一步,在Ubuntu官网下载镜像,根据百度指引完成系统的安装。
Get Ubuntu | Download | Ubuntu
接下来就是ROS的安装了,按照ROSwiki上的安装教程,完成桌面完整版的安装。
http://wiki.ros.org/melodic/Installation/Ubuntu
安装完毕之后运行一下“roscore”,如果没有问题,恭喜你,安装成功!
3.wiki基础教程
ROS wiki是ROS资源最丰富的地方,20新手教程非常详细,对代码都有解释,花一天时间把这些教程好好学习下。
结束新手教程后,相信你的小海龟例程也已经可以跑起来了,虽然你不一定明白为什么要有这只海龟的存在。
其实,小海龟背后几乎包含了所有ROS核心通信相关的原理,可以多花两天时间,配合《A Gentle Introduction to ROS》这本书,加深对这只小海龟的理解,熟悉ROS基础工具的使用,比如你可能会用到:rqt_graph、rostopic、rosservice、rosnode等。
4. 编程学习
ROS使用的编程语言主要是C++和python,所以也有针对这两种语言的功能支持包roscpp和rospy,看完上面的教程也可以看看这两种语言的基础教程。
rospy_tutorials - ROS Wiki
roscpp/Tutorials - ROS Wiki http://wiki.ros.org/rospy_tutorials
努力学习完上面的这些内容,你至少应该明白ROS里面的节点和消息是干什么用的了吧,如果还没理解,那就再结合小海龟多试几次吧!
ROS不仅为机器人开发提供了分布式通信框架,而且还提供了大量实用的组件工具,了解这些工具是后续使用它们的基础,这里列出部分常用的组件工具:
1. launch启动文件
到目前为止,每当运行一个ROS节点或工具时,都需要打开一个新的终端运行一个命令。当系统中的节点数量不断增加时,每个节点一个终端的模式会变得非常麻烦。
启动文件(Launch File)是ROS中一种同时启动多个节点的途径,还可以自动启动ROS Master节点管理器,而且可以实现每个节点的各种配置,为多个节点的操作提供了很大便利。
roslaunch/XML - ROS Wiki
ROS探索总结(五十六)—— launch文件
2、tf
坐标变换是机器人系统中常用的基础功能,ROS中的坐标变换系统由TF功能包维护。
TF是一个让用户随时间跟踪多个坐标系的功能包,它使用树型数据结构,根据时间缓冲并维护多个坐标系之间的坐标变换关系,可以帮助开发者在任意时间,在坐标系间完成点、向量等坐标的变换。
tf - ROS Wiki http://wiki.ros.org/tf
ROS探索总结(十八)--重读tf - 古月居
ROS探索总结(二十二)--设置机器人的tf变换 - 古月居
3.rviz
rviz是ROS中一款强大的3D可视化工具,在后面可是要频繁用到的。
我们可以在里面创建自己的机器人,并且看到机器人动起来,还可以创建地图,显示3D点云等等,总之,想在ROS中显示的东东都可以在这里显示出来。
当然这些显示都是通过消息的订阅来完成的,机器人通过ROS发布数据,rviz订阅消息接收数据,然后显示,这些数据也是有一定的数据格式。
4.urdf
上面的机器人模型是不是很酷,在rviz中,这样的机器人模型是通过urdf文件描述的。
URDF(Unified Robot Description Format,统一机器人描述格式)是ROS中一个非常重要的机器人模型描述格式,后续的开发中也将频繁用到。
5.gazebo
(Image source: Moose UGV tutorials by Clearpath Robotics) (图片来源: Moose UGV 教程由 Clearpath Robotics 提供)
gazebo是一款功能强大的三维物理仿真平台,其中的机器人模型与rviz使用的模型相同,但是需要在模型中加入机器人和周围环境的物理属性,例如质量、摩擦系数、弹性系数等。机器人的传感器信息也可以通过插件的形式加入仿真环境,以可视化的方式进行显示。
simulator_gazebo/Tutorials - ROS Wiki
更多功能和工具还需要我们在不断的学习过程中熟悉,比如action、plugin、smach等等。
以上都是ROS的基本功能和使用方法,了解之后的关键还是要进入实践阶段,综合应用以上功能,完成机器人的开发。
这一步我们可以不用真实机器人,从以上提到的ROS教程中选一本,包括配套的源代码,按照书上的操作,一步一步实现,其中必然会遇到很多问题,灵活应用google是正道。
实现之后当然不是结束,挑选自己感兴趣或者需要研究的章节,一定要把这些源码的实现原理搞明白,仔细研究每一个节点、launch、config文件是如何实现并完成配置的,最好自己动手调试一下,熟悉之前提到的各种工具的使用方法。
除了书本上的内容,这里也给大家推荐几款常用的机器人,都配有仿真环境和使用说明,挑选一款搞明白即可,其他都是大同小异。
1.turtlebot
TurtleBot可以说是ROS中最为重要的机器人之一,它伴随ROS一同成长,一直都作为ROS开发前沿的机器人,几乎每个版本的ROS测试都会以TurtleBot为主,包括ROS2也率先在TurtleBot上进行了大量测试。
所以TurtleBot是ROS支持度最好的机器人之一,可以在ROS社区中获得大量关于TurtleBot的相关资源,很多功能包都能直接复用到我们自己的移动机器人平台上,绝对是使用ROS开发移动机器人的重要资源。
Robots/TurtleBot - ROS Wiki
ROS探索总结(四十九)——ROS机器人实例 (TurtleBot)
2.Husky
这款机器人是室外轮式移动机器人,同样有丰富的学习资料:
3.Universal Robots
Universal Robots(优傲机器人)是一家引领协作机器人全新细分市场的先驱企业,近几年在机械臂领域用的非常多,对于ROS的支持也比较友好。
universal_robot - ROS Wiki
ROS探索总结(五十)——ROS机器人实例 (Universal Robots)
4.PR2
PR2是ROS中元老级的机器人平台,所有软件代码依托于ROS,并且全部在ROS社区中开放源代码,为我们学习、应用ROS提供了丰富的资源。
Robots/PR2 - ROS Wiki
ROS探索总结(四十八)——ROS机器人实例 (PR2)
相信你已经迫不及待的想找一台真实机器人练练手啦,如果你所在的实验室或者公司有相关的机器人给你玩,千万不要放过这个机会,SLAM、navigation、Image、MoveIt全都跑起来!!!
这里先用ROS已有的功能包把需要的功能实现了,然后肯定会发现结果不令人满意,此时再来分析是哪个部分的原因,可以进入下边的第五个步骤。
如果周围没有这样的环境,也不要灰心,仿真环境可以满足你绝大部分的需求,如果实在手痒痒,那还是败个家吧,淘宝上的ROS机器人很丰富,选择一款适合自己的,为了梦想还是值得的。
还有很多心灵手巧的小伙伴,可以自己买各种原材料攒一台机器人出来,这个挑战更大,需要自己实现很多嵌入式底层方面的驱动和控制功能,ROS在这部分没有太多指导,需要大家参考一些嵌入式开发和电机控制相关的资料。
ROS探索总结(五十一)——ROS机器人实例 (HRMRP)
经过九九八十一难来到这里,说明你已经“衣带渐宽终不悔,为伊消得人憔悴”啦!
1. 一个launch文件敲下去,终端里各种红色的错误飞出来,无数包和节点找不到
2. 机器人还没跑起来,tf相关的错误已经搞的晕头转向
3. slam过程中机器人飘的厉害,地图和真实环境相去甚远
4. 导航的时候满地打转,机器人已经不知道何去何从
5. 机械臂运动规划略显随意,同样的路径点每次走出的轨迹却不一致
......
这些问题大部分原因是和ROS配置相关的。
回想一下我们最开始为什么要学习ROS,是为了研究slam、研究导航、研究运动规划、研究人工智能等,但是我们好像花了很多时间在配置环境、写launch、改yaml参数,和开始的目标有点偏离了,自己的研究并没有多大进展。
千万不要满足于用ROS已有的功能包调试出一个八九不离十的效果就可以了。
ROS是一个工具,可以帮助我们快速搭建起机器人应用的原型,接下来我们的重点应该集中在你自己的研究上,做slam的就来实现自己的算法和gmapping对比,做navigation的就来优化move_base的导航效果,做运动规划的就用自己的规划算法替换ompl。
在这个过程中,下边这些书应该是我们参考的重点(优先选择英文原版):
正确认识和使用ROS,或许是我们在学习路上要不断精进的一项内功。
它已经成为很多机器人开发者的一种生活方式,每当遇到机器人问题,都会想到用google搜索关键词“ROS + 问题”,找到资源后就是试用、学习、消化、重造。但ROS并不完美,问题还非常多,也不代表机器人开发的全部。
参考:https://www.zhihu.com/question/35788789/answer/580258849
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。