[工业互联-14]:机器人操作系统与ROS

news2024/9/29 23:36:08

目录

 

第1章 简介

第2章 历史

第3章 特点

(1)点对点设计

(2)不依赖编程语言

(3)精简与集成

(4)便于测试

(5)开源

(6)强大的库及社区:

(7)通道:

(8)工具:

(9)强大的库:

(10)生态系统:

第4章 ROS的系统架构

第5章 ROS与Linux

5.1 ROS能安装在Linux之上吗?

5.2 Xenomai实时Linux内核

5.3 PREEMPT_RT

5.3 ROS1与ROS2区别

第6章 在Windows系统之上安装ROS:ROSOnWindows

6.1 安装步骤

6.2 ROSOnWindows(RoW)带来了以下几个好处:

6.3 ROS2能提升Windows的实时性吗?

小结


第1章 简介

随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage公司发布了开源机器人操作系统ROS(robot operating system),很快在机器人研究领域展开了学习和使用ROS的热潮。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构

它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。

ROS为Robot Operating System(机器人操作系统)的简写,是一个面向机器人开源元操作系统(open-source,meta-operating system)。它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。

ROS的运行架构是一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储。

在这里插入图片描述

第2章 历史

在这里插入图片描述

 ROS起源于2007年前后斯坦福大学人工智能实验室的STAIR(Stanford Artificial Intelligence Robot) 项目与Willow Garage公司的个人机器人项目(Personal Robotics project)之间的合作。

在2009年初推出了ROS0.4,现在所用系统的框架在这个版本中已初具雏形。经过近一年的测试后,于2010年初推出了ROS1.0版,并在当年三月份推出了正式发行版本:ROS Box Turtle,到现在(2016年5月)已经发行了10个版本,最新版本是ROS Kinetic Kame。比较有趣的是,ROS各版本均以龟作为发行代号,至今已设计出10种造型奇特的“ROS龟”。

从2008年至2013年,ROS主要由Willow Garage公司管理维护,但这并不意味着ROS是封闭的系统,相反,它是由众多学校及科研机构联合开发及维护的,这种联合开发模式也为ROS系统生态的构建与壮大带来有力的促进。2013年,Willow Garage公司被Suitable Technologies公司收购,此前几个月,ROS的开发和维护管理工作被移交给了新成立的开源基金会 Open Source Robotics Foundation。

第3章 特点

ROS的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(即“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。

ROS在某些程度上和其他常见的机器人架构有些相似之处,如:Player、Orocos、CARMEN、Orca和Microsoft Robotics Studio。对于简单的无机械手的移动平台来说,Player是非常不错的选择。ROS则不同,它被设计为适用于有机械臂运动传感器移动平台(倾角激光、云台、机械臂传感器)。与Player相比,ROS更有利于分布式计算环境。当然,Player 提供了较多的硬件驱动程序,ROS则在高层架构上提供了更多的算法应用(如集成OpenCV的视觉算法)。

ROS的主要特点可以归纳为以下几条:

(1)点对点设计

ROS通过点对点设计以及服务和节点管理器等机制可以分散由于计算机视觉和语音识别等功能带来的实时计算压力,这种设计能适应服务机器人遇到的调战。

(2)不依赖编程语言

ROS支持多种现代高级编程语言,C++、Python和Lisp语言已经在ROS中实现编译,并得到应用,Octave和Java的测试库也已经实现。

为了支持多语言编程,ROS采用了一种语言中立的接口定义语言(language-neutral interface definition language,IDL )来实现各模块之间的消息传送。


(3)精简与集成

ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,这就允许了对简单的代码超越原型进行移植和重新使用。作为一种新加入的有优势,单元测试当代码在库中分散后也变得非常的容易,一个单独的测试程序可以测试库中很多的特点。

ROS不修改用户的主函数,所以代码可以被其他的机器人软件使用。其优点是ROS很容易和其他的机器人软件平台集成。例如,在计算机视觉方面,ROS已经与OpenCV实现集成。在驱动、导航和模拟器方面,ROS已经与Player系统实现集成。在规划算法方面,ROS也已与OpenAVE系统实现集成。

(4)便于测试

机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、经费有限等因素,不一定随时有机器人可供使用。ROS提供两种策略来解决上述问题。 

1. 精心设计的ROS系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以使用模拟器替代底层硬件模块,独立测试顶层部分,提高测试效率。 

2. ROS另外提供了一种简单的方法可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测试机会。例如,可以记录传感器的数据,并通过多次回放测试不同的数据处理算法

(5)开源

ROS遵从BSD协议,这给了使用者很大的自由,使开发者可以清楚的查看、自由的使用源代码,如果有需要,可以根据不同的系统及硬件环境对源代码进行修改,或者进行二次开发。

(6)强大的库及社区:

ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。同时由于其开源特性,ROS的支持与发展依托着一个强大的社区。其官方网站尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

(7)通道:

ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系。

(8)工具:

ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统。

(9)强大的库:

ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。

(10)生态系统:

ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

第4章 ROS的系统架构

ROS系统是用于编写机器人软件程序的一种具有高度灵活性的软件架构;它包含了大量工具软件、库代码和约定协议。

ROS包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。

ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。

ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。

ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图,行动规划,感知,模拟等等。

第5章 ROS与Linux

5.1 ROS能安装在Linux之上吗?

ROS(Robot Operating System)可以安装在Linux操作系统之上。事实上,ROS最常用的版本是针对Ubuntu Linux发行版进行开发和测试的。ROS支持多个Ubuntu版本,包括16.04(Xenial)、18.04(Bionic)和20.04(Focal)。安装ROS需要根据特定的Ubuntu版本和ROS版本进行操作,具体的安装步骤可以参考ROS官方文档和教程。

Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。

伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。

5.2 Xenomai实时Linux内核

Xenomai是一个开源的实时操作系统(Real-Time Operating System,RTOS)框架,旨在为Linux系统提供可预测性和低延迟的实时性能。它通过在Linux内核之上构建一个实时性的内核扩展,提供了一个分层的实时架构。

Xenomai允许开发人员在Linux上同时运行实时和非实时任务,实时任务可以以确定性的方式响应外部事件,并确保任务的执行时间可靠和准确。它提供了两种实时任务调度方式:

  1. Cobalt:Cobalt是Xenomai的核心部分,提供了与硬实时性能相匹配的API和调度器。Cobalt任务利用严格的优先级调度策略,确保实时任务的最小延迟和高优先级。使用Cobalt API可以编写实时任务并与其他非实时任务交互。

  2. Native:Xenomai还提供了一种称为Native的调度方式,它与Linux内核的调度器集成。Native调度器允许简单的实时任务运行在Linux内核上,而无需额外的内核模块。这种方式提供了一些限制,但仍比传统的Linux调度器具有更好的实时性能。

Xenomai广泛应用于需要高实时性能的系统和应用,如机器人控制、自动化系统、数据采集系统、实时音频和视频处理等。它为实时任务提供了强大的基础设施,并允许开发人员编写可靠且高效的实时应用程序。

需要注意的是,集成Xenomai可能需要对操作系统进行定制和内核配置,因此在使用Xenomai时,建议参考官方文档和社区资源以获得更详细的指导和支持。

5.3 PREEMPT_RT

PREEMPT_RT(Preemptible Real-Time)是一个针对Linux内核的补丁,旨在提供可预测性和可配置的实时性能。它通过增加内核抢占性,使得Linux内核具备实时性能,能够满足实时任务对于低延迟和可预测性的需求。

PREEMPT_RT补丁的主要目标是减少Linux内核的不可抢占性(non-preemptibility),即减少内核运行时不可被中断的时间。通过将关键的内核代码段和操作转换为可抢占的形式,PREEMPT_RT使得实时任务能够在特定时间约束下得到及时响应。

PREEMPT_RT补丁具有以下特点和优势:

  1. 高实时性能:PREEMPT_RT补丁降低了内核的不可抢占性,减少了内核代码的执行时间,从而提供了更低的延迟和更高的实时性能。

  2. 系统可预测性:PREEMPT_RT补丁使得内核中的任务响应时间更可预测,减少了不可控的延迟和抖动。这对于需要确保实时任务可靠和准时执行的应用程序非常重要。

  3. 灵活性和可配置性:PREEMPT_RT补丁提供了多种配置选项,可以根据应用程序的实时需求进行调整。可以选择不同的内核预定义选项或自定义选项,以满足具体应用的实时性能要求。

PREEMPT_RT补丁被广泛应用于需要高实时性能和可预测性的系统,如机器人控制、数据采集、自动化和嵌入式系统等。然而,使用PREEMPT_RT补丁需要注意的是,在应用补丁之前,需要仔细评估应用程序的需求、硬件平台的支持以及可能引入的系统稳定性和兼容性问题。此外,PREEMPT_RT补丁并非官方支持的Linux内核版本,需要额外的维护和更新,以保持与最新内核版本的兼容性。

5.3 ROS1与ROS2区别

ROS(Robot Operating System)是一个用于机器人开发的开源框架。

ROS1和ROS2是ROS的两个主要版本,它们之间有一些重要的区别。

  1. 通信机制:ROS1使用了TCP/IP和XMLRPC作为基本的通信机制。这种机制在小规模系统上运行良好,但在大规模系统中存在一些限制。而ROS2引入了一种名为Data Distribution Service(DDS)的新的通信机制,该机制基于发布-订阅模式,支持更灵活、可靠和实时的通信。

  2. 支持语言:ROS1主要支持C++和Python两种编程语言,而ROS2扩展到了更多的编程语言,包括C++, Python, Java, C#, JavaScript和Ruby,使得开发人员可以使用自己熟悉的语言进行开发。

  3. 实时性:ROS1在实时性方面存在一定的局限性。而ROS2通过DDS通信机制的引入,支持实时性使得ROS2可以在对实时性要求更高的应用中使用。

  4. 可移植性:由于ROS1的设计目标是用于研究和实验室环境,因此在可移植性方面存在一些限制。ROS2则在设计时考虑了可移植性使得它更容易在不同平台上运行,包括嵌入式系统和实时操作系统。

  5. 安全性:ROS2在设计时考虑了安全性,并提供了一些安全功能,如认证和加密传输。这些功能使得ROS2更适合应用于对安全性要求较高的场景,如军事和医疗应用。

需要注意的是,

ROS1和ROS2是两个并行的项目,它们之间没有直接的升级路径。因此,在将ROS1应用迁移到ROS2时,需要进行适当的修改和重写代码。同时,目前还有许多ROS1的库和工具尚未迁移到ROS2,因此在选择版本时需要考虑到项目的特定需求和可用资源。

第6章 在Windows系统之上安装ROS:ROSOnWindows

ROSOnWindows(简称RoW)是一个官方支持的项目,旨在将ROS2引入Windows操作系统

通过RoW,开发人员可以在Windows上使用ROS2进行机器人开发。

RoW 最早在 Windows 10 中的 Windows Subsystem for Linux (WSL 2) 上进行了实现,后来也支持了原生的 Windows 10 和 Windows Server 2019。

6.1 安装步骤

以下是使用RoW在Windows上安装和使用ROS2的一般步骤:

  1. 安装WSL 2:首先,确保您的Windows 10 版本支持WSL 2,并将其启用。然后,从Microsoft Store中安装一个适合的Linux发行版,如Ubuntu 20.04。

  2. 安装RoW工具:在WSL 2环境中,运行PowerShell并执行以下命令来安装RoW工具:

    Invoke-WebRequest -Uri https://aka.ms/rosinstall | Out-File rosinstall
    
  3. 安装ROS2:在WSL 2环境中,运行PowerShell并执行以下命令来下载并安装ROS2:

    wsl -- ./rosinstall
    
  4. 在Windows上使用ROS2:安装完成后,您可以在WSL 2环境中使用ROS2。可以参考ROS2的官方文档和教程来学习如何使用ROS2进行机器人开发。

请注意,由于RoW还是一个相对较新的项目,一些ROS2的功能和工具可能在Windows上有一些限制或不完全支持。因此,在使用RoW时,建议使用ROS2官方文档中针对Windows的特定部分,并遵循Windows上的最佳实践和建议。

有关更详细的安装和使用RoW的信息,您可以参考ROS官方文档中的ROSOnWindows部分:https://index.ros.org/doc/ros2/Releases/Release-Eloquent-Elusor/Installation/Windows-Install-Binary/

6.2 ROSOnWindows(RoW)带来了以下几个好处:

  1. Windows生态系统支持:RoW使得在Windows操作系统上使用ROS2成为可能。这对于那些已经在Windows平台上进行开发的用户来说具有很大的吸引力,他们可以利用Windows上的开发工具和生态系统来构建和调试机器人应用程序

  2. 跨平台开发和部署:RoW允许开发人员在Windows上进行ROS2开发,并轻松地将其应用程序部署到其他支持ROS2的平台,如Linux和嵌入式系统。这提供了更大的灵活性和便利性,使开发人员能够在不同的硬件配置和操作系统上进行机器人应用程序的开发和测试。

  3. 工具和资源共享:通过RoW,Windows用户可以访问和共享ROS2社区中存在的各种工具、库和资源。这些资源包括各种ROS2软件包、仿真工具、开发工具、教程和示例代码等。RoW为Windows用户打开了与全球ROS2开发者社区合作和共享的大门。

  4. ROS2和Windows生态系统的互补性:对于那些在Windows平台上使用传感器、驱动器、图像处理和机器学习库以及其他各种硬件和软件的用户来说,RoW提供了将这些技术集成到ROS2生态系统中的机会。这种互补性可以使ROS2与Windows上可用的广泛工具和库无缝集成,从而打开更多的机器人应用领域。

虽然RoW使得在Windows上使用ROS2变得更加便利,但仍需注意其中的一些限制和注意事项。

在使用RoW时,建议参考ROS官方文档和RoW特定文档,以获得最佳的安装、配置和使用指南。

6.3 ROS2能提升Windows的实时性吗?

相对于ROS1,ROS2在实时性方面有所改进,并且提供了一些功能来支持实时应用。然而,需要明确的是,ROS2本身并不能显著提升Windows操作系统的实时性。

Windows操作系统并非实时操作系统(Real-Time Operating System,RTOS),它的调度器和内核设计并不专注于实时性能。尽管Windows提供了一些实时性能改进的功能,如实时时钟、实时优先级和调度策略,但它仍不具备传统实时操作系统的严格实时保证。

在ROS2中,针对实时性的改进主要体现在通信层面。ROS2引入了一种名为Data Distribution Service(DDS)的通信机制,该机制基于发布-订阅模式,支持更灵活、可靠和实时的通信。DDS协议本身支持实时性,并提供了使用QoS(Quality of Service)配置来满足实时性要求的方法。

使用ROS2的实时性特性需要结合支持实时性的系统和硬件平台,并进行适当的配置和调整。这通常涉及使用专门的实时操作系统、硬件加速以及优化和调整ROS2应用程序的参数和配置。在Windows上,并非所有实时性的需求都能够得到满足。

因此,要在Windows上获得更高的实时性能,建议考虑使用专门的实时操作系统,如Linux的实时内核(如PREEMPT-RT或Xenomai)或专为实时应用设计的实时操作系统(如VxWorks或RTOS)。这样的操作系统更适合需要严格实时保证的应用程序,并能与ROS2集成以提供更高的实时性能。

小结

随着技术的发展及人们需求的提高,机器人集成了越来越多的功能、传感器,对用户来说这越来越方便,但对开发者来说恰恰相反,功能的增加带来开发与集成难度迅速上升,机器人操作系统的出现有效缓解了这种问题。从计算机和智能手机的发展过程来看,合适与成熟的操作系统是智能机器人行业大规模发展和在人们的生活中普及的必要条件。

可以预见,未来几年将会出现众多机器人操作系统,在经过充分的发展竞争后将会有为数不多的几个操作系统会发展壮大并占据绝大部分市场,就像曾经的计算机操作系统和现在的手机操作系统。

在这里插入图片描述

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

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

相关文章

LVS-DR负载群集的优势和部署实例

目录 一、DR模式数据包流向分析 二、DR模式的特点 三、DR模式中需要解决的问题 四、LVS-DR部署实例 1.配置NFS共享存储器 2.配置节点web服务(两台的配置相同) 3.配置LVS负载调度器 一、DR模式数据包流向分析 1.Client 客户端发送请求到 Director …

OpenCV库实现了一个简单的图像放缩工具

这里是详细的代码解析: #include <opencv2/opencv.hpp> // 引入OpenCV主要库。 #include <opencv2/highgui/highgui.hpp> // 引入高级GUI模块,它包含用于显示图像和获取用户输入的函数。 #include <opencv2/imgproc/imgproc.hpp> // 引入图像处理模块,它…

mysql数据类型char和varchar的区别

&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&…

如何将Windows的文件存储到铁威马NAS里?

总是能听到小伙伴问&#xff0c;有没有办法可以省去登入TOS的操作就可以直接存取铁威马NAS上的文件及资料呢&#xff1f;很简单&#xff0c;其实只要将NAS的共享文件夹映射到Windows的网络驱动器&#xff0c;就饿可以让我们节省登入TOS的操作直接存取TNAS的文件&#xff0c;编辑…

如何打造工程师文化?

目录 一、打造工程师文化的步骤&#xff1a;二、成功案例&#xff1a;三、失败案例及教训&#xff1a; 打造工程师文化是一个复杂而又关键的任务&#xff0c;它需要公司在组织结构、价值观、领导风格以及员工福利等方面做出全面的调整。下面是一个针对打造工程师文化的详细步骤…

[mj_robot_sim]多关节机器人仿真软件介绍

全称&#xff1a;Multi-Joints Robot Simulator 代码地址&#xff1a;https://github.com/Jelatine/mj_robot_sim 设计目的 个人学习opengl的技术落地尝试设计一个跨平台、轻量级的机器人仿真软件&#xff0c;方便调试机器人 特性 轻量级&#xff0c;接口简单易用跨平台&…

管理类联考——逻辑——技巧篇——形式逻辑的三大理论基石

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

​LeetCode解法汇总445. 两数相加 II

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每…

[RocketMQ] Broker asyncPutMessage处理消息以及存储的高性能设计措施 (十一)

asyncPutMessage方法真正的用来存储消息。 文章目录 1.asyncPutMessage存储普通消息1.1 checkStoreStatus检查存储状态1.2 checkMessage检查消息 2.CommitLog#asyncPutMessage异步存储消息2.1 处理延迟消息2.2 获取最新mappedFile2.2.1 tryCreateMappedFile创建新的MappedFile2…

使用凌鲨进行数据标注

在AI研发团队中&#xff0c;数据的数量和质量通常比算法本身更重要。为了获得大量高质量的数据&#xff0c;标注软件是必不可少的。目前许多开源标注软件在权限、任务管理和审核方面都存在较大问题。 在凌鲨(linksaas)0.3.8版本中增加了数据标注功能&#xff0c;支持 音频分类…

基于matlab使用车载激光雷达数据在惯性测量单元读数帮助下构建地图(附源码)

一、前言 此示例演示如何处理来自安装在车辆上的传感器的 3-D 激光雷达数据&#xff0c;以便在惯性测量单元 &#xff08;IMU&#xff09; 读数的帮助下逐步构建地图。这样的地图可以促进车辆导航的路径规划&#xff0c;也可以用于定位。为了评估生成的地图&#xff0c;此示例…

国内环境安装Atlas OS步骤与网络问题解决

国内环境安装Atlas OS步骤与网络问题解决 Atlas 是一个开源、透明的项目&#xff0c;它修改了 Windows&#xff0c;并消除了影响游戏性能的所有负面缺点。我们是减少系统延迟、网络延迟、输入延迟和保持系统私密性的绝佳选择&#xff0c;同时仍然关注性能。我不久前在安装时遇…

【论文基本功】【LaTeX】参考文献中常见属性的用法及特点(bib文件)【IEEE论文】

【论文基本功】【LaTeX】参考文献中常见属性的用法及特点&#xff08;bib文件&#xff09;【IEEE论文】 一、author&#xff08;作者&#xff09;1. 使用方法用法1&#xff1a;作者名字的两种写法用法2&#xff1a;使用and连接不同作者姓名用法3&#xff1a;超过3个作者时如何使…

Excel如何在运算中过滤重复数据?

来百度APP畅享高清图片 问题&#xff1a;两个对比表格内的数据实际是有重复的但是不是完全重复&#xff0c;比如a-b 和b-a 只是顺序换了但是条件格式就无法筛选了&#xff0c;只能筛选出a-b a-b 的相同数据。 需求&#xff1a;要筛选出a-b a-b b-a的重复数据&#xff0c;或者把…

3.2.cuda运行API-第一个运行时程序,hello-cuda

目录 前言1. hello-cuda总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习精简 CUDA 教程-第一个运行时程序&#xff0c;hell…

助力打造“先锋城市” 中国数字智能生态大会在深圳举行

随着数字经济的深入发展&#xff0c;以人工智能、大数据、数字孪生等新技术所产生的社会价值日益凸显&#xff0c;以“技术红利”牵引带动“改革红利”&#xff0c;形成广泛共识。 7月5日下午&#xff0c;以供需对接、链接合作为特色的 CDEC2023中国数字智能生态大会深圳站活动…

logstash grok解析Java log实践

针对Java配置的日志格式如下: <property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %mm{sessionId} %-5level %logger{50} [%file:%line] - %P{traceId} - %msg%n"/> %d表示日期, %thread表示线程名, %-…

在vue中全局修改滚动条样式

在App.vue中加入以下样式代码&#xff1a; ::-webkit-scrollbar {-webkit-appearance: none;width: 6px;height: 6px; } ::-webkit-scrollbar-track {background: rgba(0, 0, 0, 0.1);border-radius: 0; } ::-webkit-scrollbar-thumb {cursor: pointer;border-radius: 5px;bac…

【MySQL库表操作】

一、数据库Market中创建表customers 1、创建数据库 #创建数据库 mysql> create database Market; mysql> use Market;2、创建数据表 #创建数据表 mysql> create table customers(-> c_num int(11) primary key auto_increment,-> c_name varchar(50),-> c_…

【SQL】查找多个表中相同的字段

--查找字段所在 SELECTbb.TABLE_NAME,bb.COLUMN_NAME ,aa.COLUMN_ID,aa.DATA_TYPE,aa.DATA_LENGTH ,bb.COMMENTS FROMuser_tab_cols aa JOIN user_col_comments bb ONaa.TABLE_NAME bb.TABLE_NAMEAND aa.COLUMN_NAME bb.COLUMN_NAME JOIN dba_objects cc ONbb.TABLE_NAME cc…