笔记79:ROS入门之前的准备

一、ROS是什么

  • ROS其实是一个伪操作系统,是基于Liunx操作系统的一个用于机器人各个节点之间通信的系统;ROS制定了一系列规则使得每个节点之间遵循相同的通信规则,使得每个人都可以有一个守则区遵守开发自己的节点,也能和别人开发的节点完美配合;
  • 不同的Ubuntu系统支持不同的ROS版本;

参考视频:

  1. 机器人操作系统 ROS 快速入门教程_哔哩哔哩_bilibili
  2. 零基础,如何学习机器人操作系统ROS_哔哩哔哩_bilibili

二、Ubuntu系统的安装(双系统安装)

参考视频:

  1. 学习ROS,安装Ubuntu,虚拟机和双系统如何选择_哔哩哔哩_bilibili
  2. Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibili

三、一些基础的Ubuntu命令

基础命令:

  • ls:列出当前目录下的所有文件/文件夹
  • ls -a:仅使用ls是不会列出当前目录下的隐藏文件的,需要加上参数-a

  • mkdir + <文件夹名称>:在当前目录下建立一个新的文件夹
  • cd + 路径:改变当前路径到指定位置
  • cd + ~:直接回到主目录(=根目录-->home-->lkw)
  • cd + ..:回到上一级目录
  • gedit + <文件名>:gedit是一个Ubuntu自带的文本编辑器(Vim也是),使用这个指令可以在当前目录下创建一个新的文件/打开已有文件
  • echo + <任意内容>:执行这行命令,就会在终端上显示指定的<任意内容>
  • source + <文件名.sh>:在Linux中经常把一连串指令写到.sh文件中,通过source指令加载运行整个文件

介绍一个文件夹:

  • .bashrc:是终端窗口的启动脚本(在主文家夹中,但是一个隐藏文件,需要使用ls -a才能看到);每次打开终端窗口的时候就会先执行这个脚本,完成一些环境变量的赋值工作;

Ubuntu的权限机制:

  • sudo:在Ubuntu中每个用户只能操作自己“主文件夹”中的内容(对我来说就是lkw文件夹),在主文家夹外移动/删除/新建文件都会显示权限不足,这是一种保护机制,避免误删重要文件导致系统崩溃;但是通过在终端输入的指令前加上sudo前缀,可以使我们在执行这条终端命令时可以以管理员权限执行本条指令,使得权限扩大,可以在其他位置上进行修改;

参考视频:

  1. 从没接触过Ubuntu,如何上手ROS开发_哔哩哔哩_bilibili

四、安装ROS

注意:Ubuntu的版本是20.04,所需下载的ROS版本为Noetic

官网教程:noetic/Installation/Ubuntu - ROS Wiki

1. Configure your Ubuntu repositories:

  • 作用:配置Ubuntu的软件仓库(软件源,即对 /etc/apt/sources.list 文件进行修改),这个文件在安装Ubuntu的时候已经自动自动配置好了;我们也可以通过添加阿里云的软件源来加快安装速度;

2. Setup your sources.list

  • 作用:将ROS的安装源添加到这个 .list 文件中,相当于给Ubuntu装了个ROS的应用商店(注意命令里面给出的网站时国外网站,我们也可以使用提供的清华镜像源进行下载);
  • 注意:第二步和第一步中配置的 .list 文件是不一样的;第一步中配置的是 /etc/apt/sources.list 文件;第二步配置的是 /etc/apt/sources.list.d/ros-latest.list 文件;
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

3. Set up your keys

  • 作用:设置安装密钥(从网上的服务器获取安装密钥);
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

4. Installation

  • 作用:更新软件的索引列表 + 从更新后的索引列表中安装ROS(安装ROS主体);
sudo apt update
sudo apt install ros-noetic-desktop-full

5. Environment setup

  • 作用:将ROS的环境设置脚本添加到终端程序的初始化脚本(/.bashrc)里;这样每次打开终端程序都会自动进行ROS系统环境的初始化;
  • 解释:每次我们要使用ROS系统的时候(即在终端中运行 roscore 命令时),都需要预先在终端中输出环境初始化脚本;因为ROS这个操作系统时有很多依赖的功能包的,如果想要启动ROS,那就要先把依赖项启动完成,所以我们需要把这些依赖功能包所在的路径( /opt/ros/noetic/setup.bash )添加到终端启动文件中,使得ROS启动前终端可以找到这些软件包的位置,然后把这些软件包加载进去,这样才能成功启动ROS;
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
使用 gedit 打开 .bashrc 文件后,可以发现已经被添加成功

6. Dependencies for building packages

  • 作用:rosdep初始化;对ROS的依赖包工具进行初始化,方便以后安装第三方的扩展软件包;
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo rosdep init
rosdep update

参考视频:机器人操作系统ROS的安装心得以及rosdep问题的处理_哔哩哔哩_bilibili


五、什么是ROS中的apt源

我的另一篇文章有详细的解释:


参考文献:

  1. 机器人操作系统 ROS 快速入门教程_哔哩哔哩_bilibili
  2. 零基础,如何学习机器人操作系统ROS_哔哩哔哩_bilibili
  3. 学习ROS,安装Ubuntu,虚拟机和双系统如何选择_哔哩哔哩_bilibili
  4. 从没接触过Ubuntu,如何上手ROS开发_哔哩哔哩_bilibili
  5. 机器人操作系统ROS的安装心得以及rosdep问题的处理_哔哩哔哩_bilibili
  6. APT源,ROS的软件包应用商店_哔哩哔哩_bilibili
  7. 在Github上寻找安装ROS软件包_哔哩哔哩_bilibili
  8. 8.ROS 开发神器 Visual Studio Code 的安装和设置_哔哩哔哩_bilibili
  9. 9.超级终端Terminator ROS开发得力助手_哔哩哔哩_bilibili

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

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

相关文章

Linux -- 线程概念和控制

一 什么是线程 1.1 线程的引出 我们开始理解一下Linux中的线程。我们以前说过&#xff0c;一个进程被创建出来&#xff0c;要有自己对应的进程PCB的&#xff0c;也就是 task_struct&#xff0c;也要有自己的地址空间、页表&#xff0c;经过页表映射到物理内存中。所以在进程角…

基于java ssm springboot女士电商平台系统

基于java ssm springboot女士电商平台系统源码文档设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…

WebPack自动吐出脚本

window.c c; window.res ""; window.flag false;c function (r) {if (flag) {window.res window.res "${r.toString()}" ":" (e[r] "") ",";}return window.c(r); }代码改进了一下&#xff0c;可以过滤掉重复的方…

web基础05-jQuery

目录 一、jQuery 1.概述 2.原生js与jQuery对比 3.特点 4.使用 &#xff08;1&#xff09;入口函数 &#xff08;2&#xff09;语法 &#xff08;3&#xff09;jQuery选择器 5.方法 &#xff08;1&#xff09;获取属性值&#xff1a; &#xff08;2&#xff09;删除属…

WinForm 修改TableControl背景和标签

在界面设计中&#xff0c;TableControl控件经常使用。默认设置中&#xff0c;TabControl的背景和标签样式。接下来我们将学习如何修改TableControl的标签选项、修改TabControld的背景色或背景图片。页面效果如下&#xff1a; 简述原理 TableControl项目属性DrawMode&#xff0c…

【开源工程】数字孪生工厂~工业上楼解决方案

飞渡科技数字孪生轻工厂管理平台&#xff0c;基于数字孪生技术驱动的智能&#xff0c;结合物联网IOT实现的联接&#xff0c;以及大数据分析生成的融合共享数据&#xff0c;实现生产过程的智能化监控和管理&#xff0c;实现设备之间的互联互通和协同工作。 通过智能算法&#xf…

前端报错404,nginx正常、gateway没有转发请求

问题描述&#xff1a;前端报错 404 Not Found 原因&#xff1a;nacos中对应服务没有上线&#xff0c;下线后&#xff0c;可以启动本地服务&#xff0c;然后在测试上调试代码。&#xff01;&#xff01; 记住重启对应服务&#xff0c;也不会自动上线。

简单了解TCP/IP四层模型

什么是计算机网络&#xff1f; 计算机网络我们可以理解为一个巨大的城市地图&#xff0c;我们想从A地前往B地&#xff0c;其中要走的路、要避开的问题都交给计算机网络解决&#xff0c;直到我们可以正常的到达目的地&#xff0c;那么我们会把其中的过程抽象成一个网络模型&…

【计算机考研】408究竟有多难?

408的难点在于他涉及的范围太广了&#xff0c;备考408&#xff0c;你要准备四门课程&#xff0c;分别是数据结构&#xff0c;计算机组成原理&#xff0c;操作系统和计算机网络。 这四门课程的书加起来很厚&#xff0c;需要复习的知识点很多&#xff0c;虽然408有考纲&#xff…

PostgreSQL - 查看表膨胀空间

目录 使用pgstattuple插件查看表膨胀空间 死元组&膨胀系数清理 查看表占用磁盘空间大小是如何组成的 什么是fms和vm&#xff1f; 什么是TOAST&#xff1f; 查看表和其关联的TOAST表的oid的关系 方法一 方法二 参考文档 使用pgstattuple插件查看表膨胀空间 select…

<Linux> 初识线程

目录 前言&#xff1a; 一、什么是线程 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;线程理解 &#xff08;三&#xff09;线程与进程的关系 &#xff08;四&#xff09;简单实用线程 &#xff08;五&#xff09;重谈虚拟地址空间 1. 页表的大小 2…

检测虚拟机环境的常见技术

下面列出检测 VMware 虚拟机的常见技术&#xff1a; #include <iostream> #include <windows.h> #include <sysinfoapi.h> #include <comdef.h> #include <Wbemidl.h> #include <ShlObj.h> #include <LM.h> #include <TlHelp32.…

【C++】了解一下STL

个人主页 &#xff1a; zxctscl 如有转载请先通知 STL 1. 什么是STL2. STL的版本3. STL的六大组件4. STL的重要性5. 如何学习STL6. STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件…

Php和h5等静态文件的服务容器化部署(下)

一、接着上文 上文介绍了php/h5程序的部署过程&#xff0c;最后是通过slb把不同的服务暴露给外部。 本文试着把外部的配置交待清楚&#xff0c;包括&#xff1a; kong配置ingress配置 部署逻辑图见下&#xff1a; 总结&#xff1a; 去掉slb&#xff0c;引入ingress组件。…

蓝桥杯真题讲解:接龙序列

蓝桥杯真题讲解&#xff1a;接龙序列 一、视频讲解二、暴力代码三、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;接龙序列 二、暴力代码 // 暴力代码&#xff1a;DFS&#xff08;2^n&#xff09; #include<bits/stdc.h> #define endl \n #define deb(x) cout &…

零基础自学C语言|自定义类型:结构体

✈结构体类型的声明 前面我们在学习操作符的时候&#xff0c;已经学习了结构体的知识&#xff0c;这里稍微复习一下。 &#x1f680;结构体回顾 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 &#x1fa82;结构的声明 例如&a…

李彦宏:程序员职业将不复存在,会说话就能当程序员;ChatGPT 日耗电超 50 万度丨 RTE 开发者日报 Vol.161

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…

中国社会科学院与美国杜兰大学金融管理硕士——二月二,抬头皆是惊喜

在繁忙的都市生活中&#xff0c;每个人都在为自己的未来打拼&#xff0c;寻找着属于自己的那片天空。二月二&#xff0c;龙抬头&#xff0c;象征着春天的到来&#xff0c;万物复苏。在这个特殊的日子里&#xff0c;对于那些追求学术与职业双重成就的人来说&#xff0c;&#xf…

AIGC——DreamTuner通过单张图片生成与该图片主题风格一致的新图像

简介 DreamTuner的能力在于从单个图像生成主体驱动的新通用方法&#xff0c;这意味着用户只需提供一张图片&#xff0c;DreamTuner就能帮助他们生成与原始图片在主题和风格上一致的新图像。 算法重要之处在于其通用性和个性化定制的能力。无论是需要根据特定主题或条件创建个…

【深度学习笔记】优化算法——学习率调度器

学习率调度器 &#x1f3f7;sec_scheduler 到目前为止&#xff0c;我们主要关注如何更新权重向量的优化算法&#xff0c;而不是它们的更新速率。 然而&#xff0c;调整学习率通常与实际算法同样重要&#xff0c;有如下几方面需要考虑&#xff1a; 首先&#xff0c;学习率的大…