笔记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;经过页表映射到物理内存中。所以在进程角…

python基础练习 Fibonacci数列

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 Fibonacci数列的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xf…

基于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;也不会自动上线。

Linux-TCP并发模型-013

1【TCP】多线程模型 2【IO】模型 2.1阻塞IO 没有数据到来时&#xff0c;可以让任务挂起&#xff0c;节省CPU资源开销&#xff0c;提高系统效率2.2非阻塞IO 程序未收到数据时一直执行&#xff0c;效率很低2.3异步IO 只能绑定一个文件描述符用来读取数据2.4多路复用IO 2.4.…

电商数据分析19——数据分析在电商平台价格弹性研究中的应用

目录 写在开头1. 价格弹性的基本理论1.1 价格弹性的定义1.2 价格弹性对销售和利润的影响1.2.1 如何通过价格弹性预测销量变化1.2.2 价格弹性高和低对企业策略的影响2 数据分析方法在价格弹性研究中的应用2.1 收集与处理销售和价格数据2.1.1 收集数据2.1.2 数据处理2.2 使用统计…

linux设置开机启动慎用nohup

我机器ubuntu9,设置开机启动我的应用程序&#xff0c;这个大家都知道只要在/etc/rc.local中加上一条shell启动命令就可以了。 但我确碰到了一个奇怪的问题&#xff1a;无法启动我的应用程序。 由于我的程序是java写的&#xff0c;一直怀疑是classpath问题&#xff0c;检查多次没…

简单了解TCP/IP四层模型

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

矩阵求导笔记

文章目录 1. ML中为什么需要矩阵求导2. 向量函数与矩阵求导初印象3. YX 拉伸术3.1 f(x)为标量&#xff0c;X为列向量3.2 f(x)为列向量&#xff0c;X 为标量3.3 f(x)为列向量&#xff0c;X 为列向量 4. 常见矩阵求导公式4.1 Y A T X YA^TX YATX4.2 Y X T A X YX^TAX YXTAX 1…

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

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

ssl域名转发配置

需要申请一个域名&#xff0c;然后将服务器地址配置到一个另ip上。 1.阿里云服务器&#xff1a;数字证书管理服务/SSL 证书 新建一个免费子域名&#xff08;须在原有主域名下,把www可以改为test等字符&#xff09;&#xff0c;等待审核通过&#xff08;1分钟左右&#xff09…

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组件。…