计算机组成原理|第一章(笔记)
目录
- 第一章 计算机系统概论
- 1.1 计算机系统简介
- 1.1.1 计算机的软硬件概念
- 1.1.2 计算机系统的层次结构
- 1.1.3 计算机组成和计算机体系结构
- 1.2 计算机的基本组成
- 1.2.1 冯 · 诺伊曼计算机的特点
- 1.2.2 计算机的硬件框图
- 1.2.3 计算机的工作过程
- 1.3 计算机硬件的主要技术指标
- 1.3.1 机器字长
- 1.3.2 运算速度
- 1.3.3 存储容量
第一章 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机系统是由 软件
和 硬件
两大部分组成的。
硬件
:指计算机的实体部分,它由看得见摸得着的各种电子元器件、各类光、电、机设备的实物组成,如主机、外设等等。软件
:它是看不见摸不着的,由人们事先编制成具有各类特殊功能的信息组成。通常把这些信息,诸如各类程序寄寓于各类媒体中,如 RAM、ROM、磁带、磁盘、光盘等。
计算机的软件通常又可分为两大类:系统软件
和应用软件
。
系统软件
:又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,确保高效运行。它包括:表中程序库、语言处理程序、操作系统、服务性程序、数据库管理系统、网络软件等等。应用软件
:又称为应用程序,它是用户根据任务需要所编制的各种程序。如科学计算程序、数据处理程序、过程控制程序、事务管理程序等等。
硬件是计算机的物理基础,它决定了计算机系统的瓶颈在哪,而软件又决定了可以将硬件的性能发挥到什么样的程度,所以,计算机性能的好坏取决于 “软”、“硬” 件功能的总和。
1.1.2 计算机系统的层次结构
计算机的解题过程:
现代计算机的解题过程通常是先由用户用高级语言编写程序(称作源程序),然后将它和数据一起送入计算机内,再由计算机将其翻译成机器能识别的机器语言程序(称作目标程序),机器自动运行该机器语言程序,并将计算结果输出。
早期只有机器语言
,用户编写的机器语言程序,直接在机器上执行,我们把直接执行机器语言的实际机器称 M1 。
20 世纪 50 年代开始出现了符号式的程序设计语言,即汇编语言
,它使程序员摆脱了繁杂而又易错的二进制代码编写程序,但是没有机器能直接识别这种汇编语言程序,必须先将汇编语言程序翻译成机器语言程序后,才能被机器接受并自动运行。我们把具有翻译功能的汇编程序的计算机看作一台 M2 机器。
两级层次结构的计算机系统:
20 世纪 60 年代开始出现了各种面向问题的高级语言
,如 FORTRAN、BASIC、Pascal、C 等等。这类高级语言对问题的描述十分接近人们的习惯,给程序员带来了极大的方便,当然,M1 机器本身是不能识别高级语言的,因此,在进入 M1 机器运行前,必须先将高级语言程序翻译成汇编语言程序,然后再将其翻译成机器语言程序。我们把将高级语言程序直接翻译成汇编或者机器语言程序的机器称为 M3 。
三级层次结构的计算机系统:
由于软件的发展,使实际机器 M1 向上延伸构成了各级虚拟机器。同理 M1 机器内部也可向下延伸而形成下一级的微程序机器 M0 。M0 机器是直接将 M1 机器中的每一条机器指令翻译成一组微指令
,即构成一个微程序。微程序机器 M0 可看作是对实际机器 M1 的分解,即用 M0 的微程序解释并执行 M1 的每一条机器指令。
四级层次结构的计算机系统:
实际上再实际机器 M1 与虚拟机器 M2 之间,还有一级虚拟机器,它是由操作系统
软件构成的。操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制并管理系统硬件和软件全部资源的作用。
五级层次结构的计算机系统:
1.1.3 计算机组成和计算机体系结构
计算机体系结构
是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性
,通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O 机理等等,大都属于抽象的属性。
计算机组成
是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是不知道的硬件细节。
1.2 计算机的基本组成
1.2.1 冯 · 诺伊曼计算机的特点
1945 年数学家 冯·诺依曼
等人,在研究 EDVAC 机时,提出了 “存储程序
” 的概念。以此概念为基础的各类计算机,统称为 冯·诺依曼机
。它的特点可归结为:
- 计算机由
运算器
、存储器
、控制器
和输入设备
、输出设备
五大部件组成 - 指令和数据以同等地位存放于
存储器
内,并可按地址寻访 - 指令和数据均以
二进制码
表示 - 指令由
操作码
和地址码
组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置 存储程序
,指令在存储器内按顺序存放- 机器
以运算器为中心
,输入输出设备与存储器的数据传送通过运算器
1.2.2 计算机的硬件框图
冯 · 诺伊曼计算机结构框图:
典型的冯·诺依曼计算机是以运算器
为中心的。其中,输入、输出设备与存储器之间的数据传送都需通过运算器。图中实线为数据线,虚线为控制线和反馈线。
各组件的功能:
- 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
- 存储器:用来存放数据和程序
- 控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果
- 输入设备:将信息转换成机器能识别的形式,比如键盘、鼠标等
- 输出设备:将结果转换成人民熟悉的形式,比如打印机输出,显示器输出等
这个结构存在两个问题:
- 以运算器为中心,导致运算器成为系统的瓶颈
- 不具有层次化的特征
以存储器为中心的计算机硬件框图:
以存储器为中心,实现输入和输出设备与存储器之间直接的信息交换,图中实现为控制线,虚线为反馈线,双线为数据线。
现代计算机硬件框图:
由于运算器
和控制器
在逻辑关系和电路结构土联系十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往制作在同一芯片上,因此,通常将它们合起来统称为中央处理器
(Central Processing Unit),简称 CPU
。把输入设备
与输出设备
简称为 IO设备
(Input/Output equipment)。
这样,现代计算机可认为由三大部分组成:CPU
、IO设备
及主存储器M.M
(Main Memory)。CPU
与 M.M
合起来又可称为主机
,IO设备
可叫作外部设备
。
主存储器 M.M
是存储器子系统中的一类,用来存放程序和数据,它可以直接与CPU
交换信息。另一类叫辅助存储器
,简称辅存
,又叫外存
。
ALU
(Arithmetic Logic Unit)叫做算术逻辑运算单元
(简称算逻部件
),用来完成算术逻辑运算。CU
(Control Unit)叫做控制单元
,用来解释存储器中的指令,并发出各种操作命令来执行指令。ALU
和 CU
是 CPU
的核心部件。
I/O设备
也受 CU
控制,用来完成相应的输入、输出操作。
可见,计算机有条不紊地自动工作,都是在控制器
统一指挥下完成的。
系统复杂性管理的方法(3Y):
- 层次化(Hierachy):将被设计的系统划分为多个模块或子模块
- 模块化(Modularity):有明确定义(well-defined)的功能和接口
- 规则化(Regularity):模块更容易被重用
1.2.3 计算机的工作过程
用计算机解决一个实际问题,通常包含两大过程:上机前的各种准备
和上机运行
。
- 上机前的准备
- (1)建立数学模型
- (2)确定计算方式
- (3)编制解题程序
- 计算机的解题过程
存储器的基本组成:
主存储器(简称主存
或内存
)包括存储体
、各种逻辑部件
及控制电路
等。存储体
由许多存储单元
组成,每个存储单元
又包含若干个存储元件
(或称存储基元、存储元),每个存储元件
能寄存一位二进制代码 “0
” 或者 “1
”。一个存储单元
可存储一串二进制代码,称这串二进制代码为一个存储字
,这串二进制代码的个数叫做存储字长
。
每个存储单元
会被赋予一个编号,叫做存储单元的地址号
。主存的工作方式就是按存储单元的地址号来实现对存储字各位的存、取。这种存取方式叫做按地址存取
,也即按地址访问存储器
(简称访存
)
为了能实现按地址访问的方式,主存中还必须配置两个寄存器 MAR
和 MDR
。
- MAR(Memory Address Register):
存储器地址寄存器
,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数(如 MAR 为 10 位,则有 210=1024 个存储单元,记为 1K)。 - MDR(Memory Data Register):
存储器数据寄存器
,用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。
运算器的基本组成及操作过程:
运算器包括三个寄存器和一个算逻电路 ALU
。其中 ACC (Accumulator)
为累加器
,MQ (Multiplier-QuotientRegister)
为乘商寄存器
,X
为操作数寄存器
。这三个寄存器在完成不同运算时,所存放的操作数类别也各不相同。
不同机器的运算器结构可能不同。
以下简要分析这种结构的运算器其加、减、乘、除四则运算的操作:
设:M 表示存储器的任意地址号
[M] 表示对应 M 地址号单元中的内容
X 表示 X 寄存器
[X] 表示 X 寄存器中的内容
ACC 表示累加器
[ACC] 表示累加器中的内容
MQ 表示乘商寄存器
[MQ] 表示乘商寄存器中的内容
假设 ACC 中已存有前一时刻的运算结果,并作为下述运算中的一个操作数。则:
- 加法操作过程:
- [M] -> X
- [ACC] + [X] -> ACC
即将 [ACC] 看作被加数,先从内存中取一个存放在 M 地址号内的加数 [M],送至运算器的 X 寄存器中,然后将被加数 [ACC] 与加数 [X] 相加,其结果和保留在累加器 ACC 中。
- 减法操作过程:
- [M] -> X
- [ACC] - [X] -> ACC
即将 [ACC] 看作被减数,先取出减数 [M] 送入 X,再作 [ACC] - [X],其结果差保留在 ACC 中。
- 乘法操作过程:
- [M] -> MQ
- [ACC] -> X
- 0 -> ACC
[X]
×[MQ] -> ACC//MQ(ps:// 表示两个寄存器串联)
即把 [ACC] 看作被乘数,先把在 M 号单元中的乘数 [M] 送入乘商寄存器 MQ,再把被乘数送入 X 寄存器,并将寄存器 A 清 “0”,然后 [X] 和 [MQ] 相乘,其结果积的高位保留在 ACC 中,积的低位保留在 MQ 中。
- 除法操作过程:
- [M] -> X
- [ACC] ÷ [X] -> MQ
- 余数 R 在 ACC 中
即将 [ACC] 看作被除数,先将在 M 号单元内的除数 [M] 送至寄存器,然后 [ACC] 除以 [X],其结果商暂留于MQ,[ACC] 为余数 R。若需要将商保留在 ACC 中,只需做一步 [MQ] - ACC 即可。
控制器的基本结构:
控制器
是计算机组成的神经中枢,它指挥全机各部件自动、协调地工作,它的主要功能是解释指令
和保证指令的按序执行
。
完成一条指令操作由取指
、分析
和执行
三阶段组成。
- 取指阶段:命令存储器读出一条指令,这叫取指过程(也称取指阶段)
- 分析阶段:对取出来的指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,这叫做分析过程(也称分析阶段)
- 执行阶段:根据操作数所在的地址,取出操作数并完成某种操作,这叫作执行过程(也称执行阶段)
控制器由程序计数器 PC(Program Counter)
,指令寄存器 IR(Instruction Register)
以及控制单元 CU
几部分组成。
- PC:用来存放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路,且具有计数功能,即可自动形成下一条指令的地址。
- IR:用来存放当前的指令,内容来自主存的 MDR,用来分析指令
- CU:用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象
主机完成一条指令的过程:
- 以取数指令为例
- PC 将指令的地址送给 MAR
- 再由 MAR 送给存储体
- 在控制器的控制下,存储体把指令存储单元当中保存的那条取数指令取出来,送入 MDR 当中
- MDR 再将指令送到 IR ,IR 保存当前正在执行的这条指令,完成取指的操作
- 将指令寄存器 IR 当中的操作码部分送给 CU,CU 内部分析指令、译码
- 在控制器的控制之下,需要把指令当中的地址部分送给存储器,以便将数据从存储体当中取出来,因为 IR 保存了当前指令和当前指令操作数的地址,所以从 IR 的地址码部分,把地址取出,送入 MAR
- 然后由 MAR 将该地址送往存储体
- 在控制器的控制下,从存储体中将取数指令要取的数取出来存入到 MDR
- 最后送到 ACC ,完成取数的操作
- 以存数指令为例
- PC 将指令的地址送给 MAR
- 再由 MAR 送给存储体
- 在控制单元 CU 的控制下,从存储体指定的存储单元当中将指令取出来放入到 MDR 当中
- MDR 再将指令送到 IR,IR 保存当前正在执行的这条指令,完成取指的操作
- 将指令寄存器 IR 当中的操作码部分送给 CU,CU 内部分析指令、译码
- CU 控制,将 IR 当中地址码部分送到 MAR
- MAR 再送入到存储体
- 将 ACC 中的内容送到 MDR
- 将 MDR 中的数据保存到存储体中
I/O 的基本结构:
I/O 子系统包括各种外部设备及相应的接口。每一种设备都是由 I/O 接口与主机联系的,他接受 CU 发出的各种控制命令完成相应的操作。如键盘由键盘接口电路与主机联系;打印机由打印机接口电路与主机联系。
1.3 计算机硬件的主要技术指标
1.3.1 机器字长
机器字长
是指 CPU 一次能处理数据的位数
,通常与 CPU 的寄存器位数
有关。机器的字长会影响机器的运算速度,倘如 CPU 字长较短,又要运算位较多的数据,那么需要经过两次或多次的运算才能完成,这样势必会影响整机的运行速度。
1.3.2 运算速度
计算机的运算速度与许多因素有关,如:
- 主频
- 核数:每个核支持的线程数
- 吉普森法:综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比
- CPI:执行一条指令所需时钟周期数
- MIPS:每秒执行百万条指令
- FLOPS:每秒浮点运算次数
1.3.3 存储容量
存储容量的大小可以用存放二进制信息的总位数
进行衡量。
存储器的容量包括主存容量
和赋存容量
。
- 主存容量:是指主存中存放二进制代码的总数
- 衡量方法
- 存储单元个数 × 存储字长
- 字节数
- 衡量方法
- 辅存容量
- 衡量方法
- 字节数
- 衡量方法
相关文章:

计算机组成原理|第一章(笔记)
目录第一章 计算机系统概论1.1 计算机系统简介1.1.1 计算机的软硬件概念1.1.2 计算机系统的层次结构1.1.3 计算机组成和计算机体系结构1.2 计算机的基本组成1.2.1 冯 诺伊曼计算机的特点1.2.2 计算机的硬件框图1.2.3 计算机的工作过程1.3 计算机硬件的主要技术指标1.3.1 机器字…...

[ vulnhub靶机通关篇 ] Empire Breakout 通关详解
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

IP定位离线库有什么作用?
IP离线是什么意思?我们以丢失手机为例来寻找它,现在手机都有IP定位功能,只要手机开通了IP定位,就能找到手机。iPhone定位显示离线一般是iPhone手机关机了或者iPhone手机中“查找我的iPhone”功能关闭了。如果手机在手中的话可以打…...

[C++]vector模拟实现
目录 前言: 1. vector结构 2. 默认成员函数 2.1 构造函数 无参构造: 有参构造: 有参构造重载: 2.2 赋值运算符重载、拷贝构造(难点) 2.3 析构函数: 3. 扩容 3.1 reserve 3.2 resize…...

DevOps实战50讲-(2)Jenkins配置
1. Docker镜像方式安装拉取Jenkins镜像docker pull jenkins/jenkins编写docker-compose.ymlversion: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/首次启动会因为数据…...

LC-1599. 经营摩天轮的最大利润(贪心)
1599. 经营摩天轮的最大利润 难度中等39 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩天轮每次轮转都恰好转动 1 / 4 周。…...

Umi使用百度地图服务
需求描述 需要在前端页面中使用地图定位功能,所以在前端umi项目中使用百度地图服务,由于umi项目默认没有入口的html文件,所以无法通过常规的在head中加入外链js的方式使用 百度ak zyqeLCzvQPCCNImRu9yRGOqWlEUicxxGreact使用百度api 链接:…...

js中getBoundingClientRect()方法
getBoundingClientRect()返回值是一个 DOMRect 对象,是包含整个元素的最小矩形(包括 padding 和 border-width)。该对象使用 left、top、right、bottom、x、y、width 和 height 这几个以像素为单位的只读属性描述整个矩形的位置和大小。除了 …...
Unity记录2.2-动作-动画、相机、Debug与总结
文章首发及后续更新:https://mwhls.top/4453.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 汇总:Unity 记录 摘要:重写了动画触…...

分享十个前端Web3D可视化框架附地址
Three.js:Three.js是一个流行的3D库,提供了大量的3D功能,包括基本几何形状、材质、灯光、动画、特效等。它是一个功能强大、易于使用的框架,广泛用于Web3D可视化应用程序的开发。Three.js:https://threejs.org/Babylon…...

基于WSL2和Clion搭建Win下C开发环境
系列文章目录 一、基于WSL2和Clion搭建Win下C开发环境 二、make、makeFile、CMake、CMakeLists的使用 三、全面、详细、通俗易懂的C语言语法和标准库 文章目录系列文章目录前言WSL2安装WSL常用命令VSCode连接WSLroot密码以systemd启动配置sshClion结语前言 Win下C语言开发环境…...

考研第一天,汤家凤基础班,连续与极限复习笔记
函数连续极限性质保号性证明极值点:夹逼准则二项式展开根号下,大于一,小于一的讨论直接放缩求和分子分母齐次,且分母大一次,用积分单调有界存在极限几个重要的切线放缩证明有界,然后放缩求单调证明有界&…...
聊一聊代码重构——关于变量的代码实践
提炼变量 其目标是将一个复杂表达式或语句分解成更小的部分,并将其存储在变量中。提高代码可读性和复用性 复杂的表达式 有些时候为了方便我们会把业务处理的逻辑写在一起,如果参与处理的内容较多时我们就会创造出一个非常长且难以理解的表达式。当其他…...

Spring之基于注解方式实例化BeanDefinition(1)
最近开始读Spring源码,读着读着发现里面还是有很多很好玩的东西在里面的,里面涉及到了大量的设计模式以及各种PostProcessor注入的过程,很好玩,也很复杂,本文就是记录一下我学习过程中的主干流程。 在开始我们源码解读…...

【STM32】入门(十四):FreeRTOS-任务
1、简述 FreeRTOS应用程序由一组独立的任务构成。 在任何时间点,应用程序中只能执行一个任务,FreeRTOS调度器负责决定所要执行的任务。 每个任务在自己的上下文中执行,不依赖于系统内的其他任务或 FreeRTOS的调度器本身。 FreeRTOS调度器负责…...
apscheduler 的基本介绍和使用
APScheduler有四大组件: 1、触发器 triggers : 触发器包含调度逻辑。每个作业都有自己的触发器,用于确定下一个任务何时运行。除了初始配置之外,触发器是完全无状态的。 有三种内建的trigger: (1)date: 特定…...

Oracle中merge Into的用法
Oracle中merge Into的用法 使用场景 在操作数据库时,数据存在的情况下,进行update操作;不存在的情况下,进行insert操作;在Oracle数据库中,能够使用merge into来实现。 基本语法 merge into table_name …...

JDK19下载、安装与测试的完整图文教程
一、下载JDK 1、官网获取:https://www.oracle.com/ 1.1 点击“Products”; 1.2 选择“Java”; 1.3 选择“Download Java”; 1.4 选择“Java downloads”,这里以最新版(JDK19)为例ÿ…...

Vector - CAPL - 获取相对时间函数
在自动化开发中,无论是CAN通信测试,还是网络管理测试,亦或是休眠唤醒等等存在时间相关的,都可能会使用相关的时间函数;今天主要介绍的就是获取当前时间,我们知道vector工具的最大优势就是稳定和精确度高&am…...
C++编程语言STL之unordered_map介绍
本文主要介绍 C 编程语言的 STL(Standard Template Library) 中 unordered_map 的相关知识,同时通过示例代码介绍 unordered_map 的常见用法。1 概述C标准库提供了四个无序关联容器(unordered associated container)&a…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...