【ROS概述】概念及环境搭建
学习途径:
教程:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
课程视频:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
机器人体系

要完全实现一个机器人的系统研发,几乎是“全栈”开发,从硬件到软件无不涉及,而学习ros主要接触的就是软件方面:即嵌入式和上层软件设计。用一个不太恰当的比喻就是上层软件就像大脑用来接受外界的信息并下达指令给嵌入式软件,而嵌入式软件更像是小脑、下丘脑等接收大脑的指令从而在机器人的各个部位进行响应,比如小脑可以维持身体平衡,下丘脑可以进行体温调节。
ROS的诞生原因
ROS全称:Robot Operating System,是一个类似于安卓系统、IOS的操作系统,但不是底层意义的操作系统,而是仍需要依赖于底层的操作系统比如Linux的二级操作系统,也叫做元操作系统,存在形式是软件。

借助上面这张图可以明白为什么会有ROS,比如我们都想要建一个自行车,刚开始的时候都是从零开始闭门造车,但是随着时代发展和交流的便捷,大家意识到将复用性很高的程序打包、并且互相协作会提高开发效率,在这之后就可以有更多的新点子诞生。机器人领域也是如此,ROS就是这样一款可以复用很多功能的软件集成,也可以叫做机器人通用软件框架,是机器人领域的标准。
ROS的简要介绍
ROS的设计者这样描述它:
ROS = Plumbing + Tools + Capabilities + Ecosystem
即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。
软件版本发展:命名有一定规律,按照26个英文字母顺序,图标是一只乌龟。每个版本都有使用有效期

软件安装
由于ros的历史版本有很多都不支持window系统,所以我们选择Ubuntu系统来下载ros。有两种方式可以实现,一是选择在电脑上直接下载Ubuntu,这样的话Windows和Ubuntu就是在电脑上以双系统的形式存在;二是选择在虚拟机上安装Ubuntu。我们采取第二种方案,虽然前者会比后者在与硬件交互上有优势,而且我们后面实操时也需要与硬件进行交互(比如摄像头、雷达等),但是后者比前者在与Windows交互有优势,并且对小白比较友好。
虚拟机的安装
若还不了解虚拟机是什么的伙伴可以移步我专栏里专门对虚拟机的介绍,这里就直接上手安装。
虚拟机主要有两种:virtualbox 或 VMware,因为后者需要钱$_$所以我们选择前者。
下载网址:https://www.virtualbox.org/wiki/Downloads
选择最新版本的进行安装。

安装步骤比较简单,一直点“下一步”即可。界面类似于这样:

然后我们开始在虚拟机上虚拟一台计算机出来:
按照要求进行按需配置即可



Ubuntu的安装
这里可以下载最新版本:22.04
Ubuntu 22.04.5 LTS (Jammy Jellyfish)
下载完之后就开始在虚拟机上配置Ubuntu


然后配置Ubuntu





配置时间:东八区




为了方便以后的ros软件安装需要确保以下按钮开启:

使用体验:虚拟机按住Ctrl+F可以全屏,Ctrl+C可以缩放视图;Win+空格(同时)可以切换中英文输入法;Ctrl+alt+T可以打开命令行。
安装ros
打开终端(命令行)之后,输入下面的命令(建议在虚拟机上打开此教程,然后方便复制粘贴)
- 添加软件源
echo "deb [trusted=yes arch=amd64] http://deb.repo.autolabor.com.cn jammy main" | sudo tee /etc/apt/sources.list.d/autolabor.list
- 更新源
sudo apt update
- 安装
sudo apt install ros-noetic-autolabor
当出现 ros-noetic-autolabor installed 的字样,意味着安装已经完成。
验证安装
打开一个新的终端,输入
roscore
再打开一个新的终端,输入:
rosrun rviz rviz

当看到以上界面就说明已经安装成功了。
测试ROS
ROS里内置了一些案例,可以通过测试看看我们安装的ros环境是否可用。
分别打开三个终端,依次输入:
roscore
rosrun turtlesim turtlesim_node(此时会弹出图形化界面)
rosrun turtlesim turtle_teleop_key(鼠标停在此命令所在的终端可以通过上下左右方向键控制2中图形化界面中乌龟的运动)

最终效果如上所示。
相关文章:
【ROS概述】概念及环境搭建
学习途径: 教程:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 课程视频:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 机器人体系 要完全实现一个机器人的系统研发,几乎是“全栈”开发,…...
MongoDB Shell 基本命令(三)生成学生脚本信息和简单查询
一、生成学生信息脚本 利用该脚本可以生成任意个学生信息,包括学号、姓名、班级、年级、专业、课程名称、课程成绩等信息,此处生成2万名学生,学生所有信息都是给定范围后随机生成。 生成学生信息后,再来对学生信息进行简单查询。…...
java核心技术点都有哪些
1. 面向对象编程(OOP) 核心概念:类、对象、继承、封装、多态。 比喻:面向对象编程就像是在搭建一个积木城堡。类(Class)是城堡的设计图纸,它定义了城堡的结构和功能;对象(…...
4404 - 提高:二分与三分:曲线(三分)
明明做作业的时候遇到了n个二次函数Si(x)=ax22+bx+c,他突发奇想设计了一个新的函数F(x)=max(Si(x)), i=1,2...n。 明明现在想求这个函数在[0,10000]的最小值,要求精确到小数点后四位四舍五入。 输入 输入包含T 组数据 (T<10) ,每组第一行一个整数 n(n≤10000) ,之后n行…...
软件工程--需求分析与用例模型
面向对象分析(ObjectOrientedAnalysis,简称OOA) 分析和理解问题域,找出描述问题域所需的类和对象,分析它们的内部构成和外部关系,建立独立于实现的OOA模型,暂时忽略与系统实现有关的问题。 主要使用UML中的以下几种图…...
预测房价学习
1. 实现函数来方便下载数据 import hashlib import os import tarfile import zipfile import requestsDATA_HUB dict() DATA_URL http://d2l-data.s3-accelerate.amazonaws.com/def download(name, cache_diros.path.join(.., data)):"""下载一个DATA_HUB中…...
电脑无法上网,但是微信、QQ可以正常使用
这种情况一般是由于DNS服务器配置错误,或者已有的DNS服务器无法正常解析地址造成的。 按下winR打开运行,输入ncpa.cpl,点击确定。 在打开的网络连接窗口中找到对应的网卡,双击打开。一般有线网是“以太网”,无线网&am…...
C++11新特性(列表初始化与右值引用折叠与完美转发)
c11 列表初始化c98的{}c11的{}std::initializer_list 右值引用和移动语义左值和右值的概念左值引用和右值引用引用延长临时对象生命周期左值和右值的参数匹配左值引用的主要使用场景移动构造和移动赋值引用折叠完美转发 列表初始化 c98的{} 在C98中,大括号 {} 的使…...
基于SSH的物流运输货运车辆管理系统源码
基于经典的ssh(Spring Spring MVC Hibernate)框架与SaaS(软件即服务)模式,我们为运输企业与物流公司打造了一款开源且易用的车辆管理系统。 该系统主要包含以下核心模块: 档案管理 财务管理 借款管理 保…...
基于RabbitMQ,Redis,Redisson,RocketMQ四种技术实现订单延时关闭功能及其相关优缺点介绍(以12306为主题)
目录 1. 延迟关闭订单 1.1 订单延时关闭功能技术选型 1.1.1 定时任务 1.1.2 RabbitMQ 1.1.3 Redis 过期监听 1.1.4 Redisson 1.1.5 RocketMQ 1.2 RocketMQ订单延时关闭发送方实现 1.3 RocketMQ订单延时关闭的消费方实现 1. 延迟关闭订单 用户发起订单后,如…...
HarmonyOS ArkTS与C++数据类型转换
1. HarmonyOS ArkTS与C数据类型转换 本文介绍了C与TS各自数据类型与互相之间的数据类型转换,在需要使用C模块时可以快速上手对各种数据类型进行转换。 1.1. 概述 HarmonyOS的主力开发语言是ArkTS,也提供了C语言的支持,对于一些能力ÿ…...
腾讯云或阿里云centos7安装Redis,并解决端口无法访问的问题
问题背景 最近自建的网站JeecgFlow在云环境安装redis时候,出现端口无法远程进行访问。 浪费好了好久时间进行排查, 记录一下Redis在云环境centos7环境下如何安装,并且远程访问。 Redis安装 //安装c 用于编译redis yum install gcc-c//在/u…...
【小问题】距离估计和频率估计的方差下界推导出距离估计的方差下界
【1】OFDM Radar Algorithms in Mobile Communication Networks pp34 文章目录 1. 频率和距离之间的关系2. 计算 d ^ \hat{d} d^ 对 n ^ \hat{n} n^ 的导数3. 将频率的方差转化为距离的方差4. 从频率的 CRB 获得 var [ n ^ ] \operatorname{var}[\hat{n}] var[n^]5. 将 …...
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
介绍 在当今数据驱动的世界中,抓取动态网页内容变得越来越重要,尤其是像抖音这样的社交平台,动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容,Selenium爬虫技术则是一…...
Z-BlogPHP显示错误Undefined array key 0 (set_error_handler)的解决办法
今天打开博客的时候,意外发现页面,打开均显示错误:Undefined array key 0 (set_error_handler)。 博客程序采用的是Z-BlogPHP。百度了一圈没有找到解决办法,在官方论坛里也没找到解决办法。 于是开始自己排查原因。我服务器采用…...
java-实例化一个List,然后添加数据的方法详解
在Java中,实例化一个 List 并向其中添加数据非常简单。List 是一个接口,因此我们通常使用它的常见实现类 ArrayList 或 LinkedList。以下是一些常见的操作方法: ### 1. 使用 ArrayList 实例化并添加数据 java import java.util.ArrayList; …...
【Linux系统】Ubuntu的简单操作
什么是 Ubuntu? Ubuntu(乌帮图)是一个非洲词汇,它的意思是“人性对待他人”或“群在故我在”。Ubuntu发行版将Ubuntu精神带到软件世界之中。 目前已有大量各种各样基于GNU/Linux的操作系统,例如:Debian,SuSE,Gentoo,R…...
标准日志插件项目【C/C++】
博客主页:花果山~程序猿-CSDN博客 文章分栏:项目日记_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,项目介…...
SpingBoot原理
SpingBoot原理 在前面十多天的课程当中,我们学习的都是web开发的技术使用,都是面向应用层面的,我们学会了怎 么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇,主要偏向于底 层原理。 我们今天的课程…...
Cout输出应用举例
Cout输出应用 在main.cpp里输入程序如下: #include <iostream> //使能cin(),cout(); #include <stdlib.h> //使能exit(); #include <sstream> #include <iomanip> //使能setbase(),setfill(),setw(),setprecision(),setiosflags()和res…...
Markdown全能助手:OpenClaw+GLM-4.7-Flash文档处理流水线
Markdown全能助手:OpenClawGLM-4.7-Flash文档处理流水线 1. 为什么需要自动化文档流水线 去年参与一个开源项目时,我每天要花3小时处理技术文档——从收集issue反馈到整理API变更,最后生成更新日志。最痛苦的是手动调整Markdown格式&#x…...
认知雷达基础概念与核心理念总结
一、认知雷达的基础概念与核心理念认知雷达是一种全新的雷达技术范式,由 Haykin 和 Guerci 提出,借鉴了与知识相关的心理能力和认知过程的特性,核心理念是通过发射机与接收机之间持续且协调的反馈,让传感器算法根据实际运行环境和…...
Kronos金融预测模型:当AI学会“阅读“K线语言
Kronos金融预测模型:当AI学会"阅读"K线语言 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 想象一下,当你面对上千只股票…...
SAMPart3D:三维模型智能分割技术的颠覆性突破
SAMPart3D:三维模型智能分割技术的颠覆性突破 【免费下载链接】SAMPart3D SAMPart3D: Segment Any Part in 3D Objects 项目地址: https://gitcode.com/gh_mirrors/sa/SAMPart3D 在工业设计领域,工程师需要花费数小时手动标注机械零件的每个组件&…...
基于ChatGPT GPTs的AI辅助开发实战:从零构建智能代码生成器
背景痛点:传统开发流程中的效率瓶颈 作为一名开发者,我们每天都在与代码打交道。但你是否也经常遇到这些令人头疼的场景? 需求理解偏差:产品经理用自然语言描述了一个复杂功能,你花了大半天时间反复沟通,…...
2026年专业深度测评:防蛀牙儿童牙膏排名前五权威榜单
核心结论: 基于对产品配方科学性、成分安全性、防蛀功效验证及品牌专业资质的四维量化评估,德国原装进口的宝儿德儿童牙膏在本次权威测评中综合表现位列榜首,其经百年验证的经典防蛀配方、全面的“无有害添加”体系及适配儿童误吞的安全性设计…...
OpenClaw硬件推荐:流畅运行nanobot镜像的最低配置与性价比方案
OpenClaw硬件推荐:流畅运行nanobot镜像的最低配置与性价比方案 1. 为什么需要关注硬件配置? 去年夏天,我第一次尝试在笔记本上部署OpenClaw时遭遇了惨痛的失败。那台搭载i5-8250U的轻薄本在启动nanobot镜像后,风扇立刻像直升机一…...
Docker Compose 实践:多容器应用的配置与管理
Docker Compose 实践:多容器应用的配置与管理 前言 哥们,别整那些花里胡哨的理论。今天直接上硬菜——我在大厂一线使用 Docker Compose 的真实经验总结。作为一个白天写前端、晚上打鼓的硬核工程师,我对容器编排的追求就像对鼓点节奏的把控一…...
包含多体型模板的AI虚拟智能试衣系统源码
温馨提示:文末有资源获取方式在电商竞争日益白热化的今天,商品展示图的质量直接决定了点击率与转化率。对于服装类目而言,传统模特拍摄不仅面临模特、摄影、场地的高昂成本,更受限于漫长的拍摄周期。为了解决这一行业痛点…...
DirectSPI:STM32寄存器级零开销SPI驱动库
1. DirectSPI 库概述DirectSPI 是一个面向特定 STM32 微控制器系列的超高速、零抽象层 SPI 驱动库。其设计哲学与标准 HAL/LL 库截然不同:不封装寄存器访问,不引入中间状态机,不进行参数校验,不依赖 CMSIS 启动文件或系统时钟配置…...
