机器人入门(一)

机器人入门(一)

    • 一、ROS是什么,能用来干什么?
    • 二、哪些机器人用到了ROS?
    • 三、ROS和操作系统是绑定的吗?
    • 四、ROS 1 和ROS 2的关系是什么?
      • 4.1架构
        • 中间件改变
        • API改变
        • 数据格式改变
      • 4.2特性
      • 4.3工具/生态
    • References

本篇仅作为学习总结,内容不会大而全,详细内容请见书本: ROS Robotics By Example (Second Edition) —— Carol Fairchild Dr.Thomas L.Harman

一、ROS是什么,能用来干什么?

ROS是Robot Operating System(机器人操作系统)的缩写,此操作系统是开源的。既然末尾带了OS,那自然是干操作系统的事情,它可以为你提供控制各种机器人的能力,但无需知道各种机器人的细节。

书中原文是这么描述的:“One of its main purposes is to provide communication between the user, the computer’s operating system, and equipment external to the computer.”

我个人认为上面的结构是对的,因为设备要经过ROS抽象,才能让各部件通用化,并统一将数据交给与计算机硬件打交道的操作系统进行处理。当然,user也可以直接接触Computer’s OS。
在这里插入图片描述

二、哪些机器人用到了ROS?

书中提供了这个网址:http://wiki.ros.org/Robots,点进去一看,确实包罗万象,搜一搜著名的波士顿动力机器人,Atlas,没搜到,搜搜书本上的机器人:Baxter,没搜到,于是我对着网页找了下Baxter,找到了名字叫Mobility Base的机器人,图片和书中一致,只是缺了手,所以叫Mobility Base,继续,TurtleBot2、TurtleBot3和Crazyfile也搜到了,还不错。

继续浏览的时候,我在education标签分类下,看到了Jet,于是,我好奇Jet和JetAuto之间的关系:

Jet:Jet is a smart, autonomous, low-cost robot kit based on the NVIDIA Jetson embedded development platform. 看来Jet是基于英伟达的Jetson嵌入式开发平台。

JetAuto:JetAuto是面向ROS教育场景开发的入门型ROS轮式机器人,它搭载了NVIDA Jetson Nano。

看来NVIDA的 Jetson 是款抢手货,那Jetson究竟是个什么,来到 Jetson 的wiki百科页面,阅读后得知,Jetson有几个版本分支,而Jetson Nano是其中的一种,全称是Jetson Nano Developer Kit,Nano(计量单位,纳。纳米:nanometer)是形容这东西小巧灵活 ,此产品面向的群体有制造商、初学者和开发人员,对许多流行的外设和部件都可以做到开箱即用。更多关于Jetson Nano的内容可以直接去NVIDIA官网查看,板子是好板子,就看怎么使了。

网站里给robot分了这么几类:ground(车)、manipulator(机械臂)、Aerial(飞行器)、marine(船)、component(零部件),所有东西还是在想象范围之内的:地上走的、天上飞的、水里游的,一般的robot在地球上工作,无外乎这三个地方(即便高大上如火星车也使用ROS),然后就是加些机械臂啊,摄像头啊,传感器啊,能走能跑,握得稳,看得清,听得见这就差不多齐活,至于表现的像个真人一样,那是后话。

三、ROS和操作系统是绑定的吗?

ROS和Ubuntu操作系统是有对应关系的,软件开发中这有点搞人心态,甚至升级个版本就didn’t work,后来又一想,这个问题是由于人类之间的组织互不隶属,虽然互联网让彼此之间互通有无,良好的开发文档给开发人员清晰的理解,业界通用的设计规范使工程师之间有共同语言,但究竟是谁说服谁,this is a question。工作后发现,哪怕组织是隶属的,写出垃圾代码的企业也是一抓一大把。

ROS 1与Linux之间的对应关系可以在REP 3(ROS Enhancement Proposal,ROS进阶提案)里找到[2],这里只列举部分。

ROS 1LinuxEOL(End of Life) date
ROS Noetic NinjemysUbuntu Focal Fossa (20.04,代表2020年4月份发行)2025年5月
ROS Melodic MoreniaUbuntu Artful (17.10)
Ubuntu Bionic (18.04)
2023年6月27日
ROS Lunar LoggerheadUbuntu Xenial (16.04)
Ubuntu Yakkety (16.10)
Ubuntu Zesty (17.04)
2019年5月
ROS Kinetic KameUbuntu Wily (15.10)
Ubuntu Xenial (16.04)
2021年4月
ROS Jade TurtleUbuntu Trusty (14.04)
Ubuntu Utopic (14.10)
Ubuntu Vivid (15.04)
2017年5月
ROS Indigo lglooUbuntu Saucy (13.10)
Ubuntu Trusty (14.04 LTS)
2019年4月
ROS Hydro MedusaUbuntu Precise (12.04 LTS)
Ubuntu Quantal (12.10)
Ubuntu Raring (13.04)
2015年5月
ROS Groovy GalapagosUbuntu Oneiric (11.10)
Ubuntu Precise (12.04 LTS)
Ubuntu Quantal (12.10)
2014年7月

只要相应版本的Ubuntu停止支持,该版本对应的ROS也将停止支持工作,还有些其它规矩。

Release rules

  • ROS release timing is based on need and available resources
  • All future ROS 1 releases are LTS, supported for five years(看发行时间确实如此,没猜错的话,这个时间也是根据Ubuntu的维护时间来的,但文章没明确说)
  • ROS releases will drop support for EOL Ubuntu distributions, even if the ROS release is still supported.

Side effects of the release policy:

  • Every ROS release will be supported on exactly one Ubuntu LTS.
  • LTS releases will not share a common Ubuntu release with any previous releases.
  • ROS releases will not add support for new Ubuntu distributions after their release date.

These simplified rules and side effects are subject to change with changes to the underlying Ubuntu release policy.

此文档也说了它推荐的一些Fedora发行版(Fedora是软呢帽的意思,Red Hat的logo即它,颇具浪漫主义气质),Fedora各版本的下载地址与ROS 2各个发行版清单的访问地址在文末的References给出。

四、ROS 1 和ROS 2的关系是什么?

此问题下的内容主要来自于文章ROS 1 vs ROS 2 What are the Biggest Differences? [5],二者的不同体现在三方面:架构、特性、工具/生态。

4.1架构

中间件改变

ROS 1使用了ROS主从架构和XML-RPC(Remote Procedure call)中间件。这个中间件是一种远程过程调用方法,使用XML格式并通过socket,在程序之间传递数据[8]

API改变

ROS 1的两个libraries是互相独立的,支持C++的roscpp,以及支持Python的rospy,并且二者功能还不等价。

而ROS 2则干脆许多了,library有一个用C写的rcl(ROS client library),Github上也有其官方用C++编的rclcpp,其余的libraries都是构建在此基础上,因此这也是ROS 2可以提供更多语言支持的关键。

数据格式改变

ROS 2的rosbags就序列化方面,比ROS 1更具便捷性,剩余内容请看原文。

4.2特性

ROS 2支持多线程执行,实时处理功能,剩余内容请看原文。

4.3工具/生态

ROS 2取消了Catkin,代之用Ament作为系统构建工具;ROS 2有一个辅助工作空间,在不影响现有的工作空间情况下,有助于在不影响现有配置的情况下进行新包测试。

另外在系统生态方面,ROS 2不兼容ROS 1。ROS 1主要是为Ubuntu构建的,而ROS 2可以运行在MacOS,Windows,Ubuntu和其它OS上。

最后,文章作者建议逐步从ROS 1迁移至ROS 2,因为ROS 1将在2025年停止支持。

References

[1] Jetson Nano - NVIDIA官网

[2] REP 3 - Target Platforms

[3] Fedora各版本的下载地址

[4] ROS 2各个发行版的清单

[5] ROS 1 vs ROS 2 What are the Biggest Differences?

[6] Changes between ROS 1 and ROS 2

[7] Ros 2 how is it better than Ros 1?

[8] XML-RPC COMMUNICATION

[9] Fedora - wiki

[10] ROS官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/92188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前缀、中缀、后缀表达式相互转换工具

目录 1. 界面一览 2. 使用说明 3. 实例演示 3.1 输入中缀 3.2 输入前缀 3.3 输入后缀 3.4 选择错误的类型 4. 代码 5. 资源地址 关于什么是前缀、中缀、后缀表达式,相信你不知道这个东西,那你也不会点进来这篇博客,当然,…

计算机竞赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 🔥 优质竞赛项目系列,今天要分…

CentOS上网卡不显示的问题

文章目录 1.问题描述 1.问题描述 ifconfig下看不到ens33网卡了。systemctl status network #查看网卡状态报下面的问题网上说的解决方式有以下三种: 第一种: 和 NetworkManager 服务有冲突,这个好解决,直接关闭 NetworkManger 服…

竞赛选题 大数据疫情分析及可视化系统

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫…

【Linux】——基操指令(二)

个人主页 代码仓库 C语言专栏 初阶数据结构专栏 Linux专栏 LeetCode刷题 算法专栏 目录 前言 man指令 cp 指令 mv指令 echo指令 cat指令 more指令 less指令 head和tail指令 head指令 tail指令 前言 上篇文章给大家讲解了Linux环境下的一点基操指令&#xf…

消息队列实现进程之间通信方式代码,现象

消息队列 #include <myhead.h> //消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds; #define SIZE sizeof(Msg_ds)-sizeof(long) //正文大小int main(int argc, const char *argv[]) {//1、创建key值key_t …

搭建全连接网络进行分类(糖尿病为例)

拿来练手&#xff0c;大神请绕道。 1.网上的代码大多都写在一个函数里&#xff0c;但是其实很多好论文都是把网络&#xff0c;数据训练等分开写的。 2.分开写就是有一个需要注意的事情&#xff0c;就是要import 要用到的文件中的模型或者变量等。 3.全连接的回归也写了&#…

ChatGPT的截图识别功能测评:开启图像中的文字与信息的新纪元

文章目录 根据截图&#xff0c;识别菜品根据截图&#xff0c;识别数学公式根据截图生成前端UI代码可视化图像复现案例一案例二 更多可以使用的方向 制作人&#xff1a;川川 辛苦测评&#xff0c;如果对你有帮助支持一下书籍&#xff1a;https://item.jd.com/14049708.html 根据…

自动化测试-友好的第三方库

目录 mock furl coverage deepdiff pandas jsonpath 自动化测试脚本开发中&#xff0c;总是会遇到各种数据处理&#xff0c;例如MOCK、URL处理、JSON数据处理、结果断言等&#xff0c;也会遇到所采用的测试框架不能满足当前需求&#xff0c;这些问题都需要我们自己动手解…

Flink CDC MySQL同步MySQL错误记录

1、启动 Flink SQL [appuserwhtpjfscpt01 flink-1.17.1]$ bin/sql-client.sh2、新建源表 问题1&#xff1a;Encountered “(” 处理方法&#xff1a;去掉int(11)&#xff0c;改为int Flink SQL> CREATE TABLE t_user ( > uid int(11) NOT NULL AUTO_INCREMENT COMME…

若依不分离+Thymeleaf select选中多个回显

项目中遇到的场景&#xff0c;亲测实用 表单添加时&#xff0c;select选中多个&#xff0c;编辑表单时&#xff0c;select多选回显&#xff0c;如图 代码&#xff1a; // 新增代码 <label class"col-sm-3 control-label">通道&#xff1a;</label><…

计算机图形学、贝塞尔曲线及绘制方法、反走样问题的解决(附完整代码)

贝塞尔曲线 1. 本次作业实现的函数及简单描述&#xff08;详细代码见后&#xff09;2. 与本次作业有关的基础知识整理3. 代码描述&#xff08;详细&#xff09;4. 完整代码5. 参考文献 &#xff08;本篇为作者学习计算机图形学时根据作业所撰写的笔记&#xff0c; 如有同课程请…

LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机

LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机 随着全球风电装机容量的快速增长&#xff0c;雷电活动对风力发电机组造成的损害受到更多关注&#xff0c;特别是在雷电活动强烈的地区。在冬季闪电期间&#xff0c;风力涡轮机等高层结构会受到向上的雷击。众所周知&#x…

Acwing 837. 连通块中点的数量

Acwing 837. 连通块中点的数量 题目描述思路讲解代码展示 题目描述 思路讲解 大家看y总这段代码时要注意&#xff0c;在C操作时&#xff0c;y总先把a&#xff0c;b的根结点取出来了&#xff1a;a find(a), b find(b);&#xff0c;因此接下来是先将集合a接到集合b下再把a的连通…

Android修行手册 - Activity 在 Java 和 Kotlin 中怎么写构造参数

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

构建捡垃圾机器人的 ROS 2 项目

一、说明 本系列是关于学习如何使用 ROS2、Docker 和 Github 设计、设置和维护机器人项目。 先决条件 — ROS2 软件包的基本知识、实现发布者、订阅者、操作并连接它们。 我们之前在 ROS2 中了解了不同的部分。但是&#xff0c;在我们转向实际的基于硬件的项目之前&#xff0c;…

阿里云ECS服务器无法发送邮件问题解决方案

这篇文章分享一下自己把项目部署在阿里云ECS上之后&#xff0c;登录邮件提醒时的邮件发送失败问题&#xff0c;无法连接发送邮箱的服务器。 博主使用的springboot提供的发送邮件服务&#xff0c;如下所示&#xff0c;为了实现异步的效果&#xff0c;新开了一个线程来发送邮件。…

基于 SpringBoot 2.7.x 使用最新的 Elasticsearch Java API Client 之 ElasticsearchClient

1. 从 RestHighLevelClient 到 ElasticsearchClient 从 Java Rest Client 7.15.0 版本开始&#xff0c;Elasticsearch 官方决定将 RestHighLevelClient 标记为废弃的&#xff0c;并推荐使用新的 Java API Client&#xff0c;即 ElasticsearchClient. 为什么要将 RestHighLevelC…

Windows的批处理——获取系统时间、生成当天日期日志

Windows批处理基础https://coffeemilk.blog.csdn.net/article/details/132118351 一、Windows批处理的日期时间 在我们进行软件开发的过程中&#xff0c;有时候会使用到一些批处理命令&#xff0c;其中就涉及到获取系统日期、时间来进行一些逻辑的判断处理&#xff1b;那么我们…

Tomcat启动后的日志输出为乱码

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…