软件环境基础(ROS、CMake)

news2025/6/19 14:57:33

参考视频:【全】无人驾驶系列知识入门到提高
本文旨在对视频内容规划控制方面做一些学习记录,希望帮助有需要的人学习提高。不对处,望指正。

0 ROS介绍

ROS特点:

  • 点对点设计(比如一个结点读取相机数据,传送给相应的处理程序。)
  • 优点:可以分散实时计算的压力
  • 分布式设计(节点可以放在多个设备上面)
  • 多语言(官方支持C++、python)
  • 轻量级
  • 免费且开源
  • 社区完善
    在这里插入图片描述

1)消息一种publish/subscribe的方式传递
2)节点可以在给定的主题中发布/订阅消息
3)一个节点可以订阅/发布多个不同的主题
4)允许多个节点订阅/发布同一个主题
5)订阅节点和发布节点并不知道相互之间的存在

1 Cmake

ROS 的编译系统

  1. ROS对CMake进行了拓展
  2. 适合ROS进行大型项目,多包,多节点的场景下进行批量编译
    在这里插入图片描述
    Cmake是预编译,make是编译
1.1 Packages & Catkin Workspaces
  1. packages:ROS系统中最底层最基本的组织,里面保存着各种文件库、工具、可执行文件等
  2. Catkin workspaces:包的顶层工作目录,一个catkin workspace 包含一个工程下面多个ros package
  3. Package.xml:每个包的描述文件,都需要放置在包的根目录下,对包的名字/版本/作者/依赖关系进行说明。其中,最重要的是下面的depend
  4. CMakeList.txt:定义一个包的编译指令,cmake不会找package.xml文件.依据cmakelist.txt文件编译需要清晰指出头文件和库文件的指向

catkin_package(CATKIN_DEPENDS roscpp) 声明依赖本包同时需要的其他ros包
find_package(catkin REQUIRED COMPONENTS …) 声明编译本包所需要的其他ros包
add_executable 声明编译本包生成的可执行文件
target_link_libraries 链接可执行文件和依赖库

1.2 ROS Node

常用命令:

rosnode list:查看当前注册到ros master的所有节点
rosnode info:查看某个节点的具体信息

1.3 ROS Topic

节点之间通过一个ROS topic来相互通信

  • 通过publicer声明所发布topic名称
  • 通过subscriber声明所需要监听的topic名称

常用命令:

rostopic list:查看当前注册到ros master 的所有topic列表
rostopic echo:把当前topic输出到控制台,方便调试和查看

1.4 ROS param

rosparam命令允许我们在ROS参数服务器上存储和复制数据。参数服务器可以存储整数、浮点数、布尔值、字典和列表值

一个小型的KV库

常用命令:

rosparam set:设置参数
rosparam get:获取参数
rosparam list:查看当前服务器上的参数

1.5 catkin_make生成的build&devel文件夹

build:存放编译的缓存文件
devel:存放编译完成的文件

对应devel文件,需要将其setup.bash到.bashrc文件中,也就是设置环境变量,让系统能够找到该工作空间。当然,更新了.bashrc文件后,需要执行一次 source ~/.bashrc 命令,或者bash 一下终端窗口,目的是让系统重新读取一次 .bashrc 文件。

2 Docker

关键:docker的安装,自行百度ubuntu 20.04+docker+install
注意点:

  1. 工作空间的数据关联,
  2. 查询容器的id
  3. 进入目标容器
  4. 退出目标容器操作
  5. 编译前环境变量的设置
2.1 Docker
  • docker基于容器技术的轻量级虚拟化解决方案
  • docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进行封装抽象,为用户提供了创建和管理容器的便捷界面(包含命令行和API)
  • Docker是一个开源项目,诞生于2013年初,基于Google公式推出的Go语言是实现
2.2 Docker可以做什么
  • 隔离系统环境(docker类似虚拟机,但比虚拟机更加轻量级,一个系统可以装上千个docker,但是不能装上千个虚拟机;docker占用资源相对很低,虚拟机占用资源相对很高)

  • 极简的安装和部署方式

  • 让复杂系统安装配置成为历史

2.3 Docker优点

传统程序分发:

  1. 源码分发:需要用户自己编译,解决依赖问题
  2. 解决依赖时,对系统又侵入性,可能解决了这个依赖,其他的程序又不能运行,python2&python3等case案例
  3. 可执行文件分发:多平台多次编译,跨平台受限

docker分发:
要求用户安装docker即可,环境,依赖均独立,不影响系统原有库

2.4 Docker概念
  1. Docker Images(类似镜像)

Docker images 是Docker container 最基本的模板。Image通过容器使系统和应用易于安装,Docker image是用来运行的容器。http://hub.docker.com/找到许多images(多种操作系统和软件已经被安装好的docker)

  1. Docker container(以类做近似对比的话,image是class,container是image类的一个实例)

Docker容器(docker container)是一个image,在运行docker image上读取和写入。Docker是一个联合的文件系统作为容器后台,容器任何变化,都将保存在一个基本的image新的层上。我们安装应用程序的层就是容器。每个主机上运行的容器都是独立的,因此,提供了一个安全的应用平台。

  1. Docker Registry

Docker registry 是为Docker images提供的库。它提供了公共和私有库。公共docker库被叫做Docker Hub。这里我们能够上传push和pull自己的images。

2.5 使用Docker

终端运行:

sudo docker pull ros:noetic

Sudo docker images  //显示对应版本的大小等等信息则表示安装本地成功
cd ~/catkin_ws
sudo docker run -itd -v$(pwd):/data ros:noetic
// -itd  表示一直可以在后台运行
// -v  表示将数据集和虚拟机的文件系统关联起来
// pwd  表示当前目录
// /data  表示的是虚拟机目录

//查看当前的docker运行的镜像,获取container的ID
Sudo docker ps -a 
//进入docker镜像,编译程序
Sudo docker exec -it container的ID /bin/bash
// exec  表示使用container执行一行命令
// -it  表示执行命令时,需要获取一个terminal
// /bin/bash表示执行的命令

//进入了一个docker目录下  
// /data/src  指的是原工作空间数据

//然后,docker目录下,新建一个同名的工作空间  mkdir catkin_ws
//把原工作空间的内容拷贝到新建的工作空间中    
cp –r /data/src ./catkin_ws
//进入工作空间中   
cd ./catkin_ws
//在编译之前需要配置环境变量
echo 'opt/ros/noetic/setup.bash' >> /root/.bashrc

//可以通过指令 cat /root/.bashrc  查看环境变量是否添加成功
//这时候,使用指令   
source /root/.bashrc
//开始编译,   
catkin_make

//如果想要退出docker目录,使用指令    
exit

把自己封装的Docker镜像(image)打包导出操作

//还是在最原始的工作空间(不是docker上)下,首先查看刚才container的ID
Sudo docker ps –a

//查看了id

Sudo docker commit container的ID myimage(自定义镜像名字)

Sudo docker images   查看自己打包的镜像(myimage)

//这时候,可以使用该镜像进行安装,并可以使用其中的所有功能程序了

记录了一些基础的知识,更详细的ROS讲解推荐B站赵虚左老师的视频。

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

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

相关文章

yolo配置(windows)

文章目录 一、下载Anaconda和pycharm1 、Anaconda官方下载地址:1.2 Anaconda 的安装 下载好之后双击打开可执行安装文件:1.3 进入到安装界面:1.4 这里建议两个都勾选(第一个选项是将 Anaconda 添加到环境变量中,不勾选…

火山引擎 ByteHouse:双十一即将到来,直播商家如何用数据“点播成金”?

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 “双十一”电商大促脚步渐近,各大平台的战火又将燃起。直播电商以低成本、高转化率等优势备受商家青睐。据智研咨询数据显示,2022 年我国直播…

iOS——JSONModel的使用与JSONModel的嵌套

什么是JSONModel JSONModel是一个解析JSON数据的开源库,可以将JSON数据直接解析成自定义的model 使用 JSONModel 非常简单,只需要将你的 model 类继承自 JSONModel ,而同时 model 中的属性名又恰巧可以和 JSON 数据中的 key 名字一样的话,那么非常恭喜你,你的工作…

10.16作业

头文件 #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include<QDebug> #include<QIcon> #include<QPushButton> #include<QLineEdit> #include<QLabel> #include<QMovie> #include<QCheckBox> #include<QPa…

MyCAT:回顾当年的热潮,探寻这款备受欢迎的数据库中间件的核心特性

什么是 MyCAT &#xff1f; 根据 MyCAT 官网 - http://mycat.io/ 的描述可以知道&#xff0c; MyCAT 是如下的一个东东&#xff1a; 一个彻底开源的&#xff0c;面向企业应用开发的大数据库集支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群的企业级数据库…

银河麒麟你服务x86访问ftp服务器上的文件

打开我的电脑 地址栏输入 ftp地址 可以选择需要的文件复制出来了

PyQt 小程序

设备管理程序 v0.0.1.0, 终于出了一个基础版本,… … 两个字典的键值判断 辛亏用的是Python 这个编码时间大大缩短了

node+vue+mysql后台管理系统

千千博客系统&#xff0c;该项目作为一套多功能的后台框架模板&#xff0c;适用于绝大部分的后台管理系统开发。基于 vue.js&#xff0c;使用 vue-cli3 脚手架&#xff0c;引用 Element UI 组件库&#xff0c;数据库直连mysql方便开发快速简洁好看的组件。 功能包含如下&#…

电子杂志制作不求人:简单易用的工具推荐

​如果你想要制作一份精美的电子杂志&#xff0c;但是又不想花费太多的时间和金钱&#xff0c;也不想求及朋友帮忙制作&#xff0c;那么可以试试这个网站制作电子杂志&#xff0c;展现出的效果跟专业级设计师的效果没什么区别哦 赶快收藏吧-------FLBOOK在线制作电子杂志平台&a…

iOS代码混淆和加固技术详解

目录 摘要&#xff1a; 本文介绍了iOS开发中常用的代码混淆和加固技术&#xff0c;包括数据加密、应用加壳和代码混淆。其中&#xff0c;重点讨论了代码混淆的实现方法和注意事项&#xff0c;并推荐了一些相关的工具和库。 引言 代码混淆和加固 数据加密 应用加壳 代码混…

易基因:细菌微生物基因表达调控表观研究方案|原核三代甲基化+转录组

1、原核甲基化 原核生物中的DNA甲基化 原核生物甲基化为什么基于三代测序&#xff1f; 第三代DNA测序为原核细菌的甲基化和表观遗传的研究开辟了一条新的途径&#xff0c;能够在基因组的水平上获取整个表观遗传的序列信息&#xff0c;绘制全基因组甲基化组。 细菌中DNA甲基化…

使用python中xird进行读取文件以及遇到的报错

由于平日系统导出的文档均为.xls的execel&#xff0c;故本文主要讲如何使用xlrd进行读取表格以及操作过程遇到的报错以及对应解决版本 一、基本使用 准备“成绩表.xlsx”文件&#xff0c;如下&#xff1a; 1、读取文件并获得文件的sheet名字 &#xff08;1&#xff09;代码 …

Python 作为开发语言可以吗?怎么掌握 python 才能提升自己

Python 作为开发语言好吗&#xff1f;怎么掌握 python 才能提升自己&#xff1f;下面就跟小编一起来看看吧&#xff01; 很多朋友都是零基础&#xff0c;在选择编程语言的时候&#xff0c;不知道哪种语言才是适合自己去深入学习的。现在全世界有非常多的 Python 语言用户&…

精美的早安问候语,暖心祝福,开心每一天

1、 美好的祝福&#xff0c;成了清晨的主题。相互问候&#xff0c;是一天的开始。让我们伴着不老的岁月&#xff0c;永远开心快乐。早晨好&#xff01; 2、 心宽似海&#xff0c;百福皆来&#xff0c;世事看淡&#xff0c;内心安然。随缘即福&#xff0c;随遇而安&#xff0…

全局事件总线

全局事件总线 功能&#xff1a;可以解决所有组件之间通信传数据的问题原理&#xff1a;通过一个共享对象&#xff0c;将所有组件全部绑定到对象上&#xff0c;即可通过这个对象实现组件与组件之间的传递数据&#xff0c;而这个共享对象叫做全局事件总线。 如何分清楚谁是发送方…

超级干货 | 一些常用的api接口

在工作或是学习中我们经常会使用到一些api&#xff0c;这些api是该网站用于查询或者是测试的接口。有了它们&#xff0c;我们甚至不需要登录该网站就能完成自己所想的目标。今天我就将一些常用的api进行总结&#xff0c;涵盖各个方面&#xff0c;大家需要的时候翻阅使用就可以了…

易云维智慧工业云平台助力广西国企培育数字产业化平台,打造数字化产业生态

2022年6月6日&#xff0c;广西壮族自治区人民政府国有资产监督管理委员会出台了《国有企业数字化转型工作实施意见》&#xff0c;明确了总体要求、主要目标、重点推进国有企业数字化转型的任务和保障措施。 《意见》预计&#xff0c;到2025年底&#xff0c;广西基本实现自治区级…

数据加密中,采用密钥管理系统相比加密机的好处

密钥管理系统与加密机都能提供数据加解密&#xff0c;那么针对具体的应用加密&#xff0c;采用密钥管理系统比单纯使用加密机有哪些优点&#xff0c;列表如下&#xff1a; 集中化管理&#xff1a;密钥管理系统可以对加密算法和密钥进行集中化管理&#xff0c;使得企业可以对加…

宁夏企业过等保选哪家测评机构好?选哪家堡垒机好?

最近不少宁夏小伙伴在问&#xff0c;宁夏企业过等保选哪家测评机构好&#xff1f;选哪家堡垒机好&#xff1f;今天我们小编就给大家来简单说说哈&#xff01; 宁夏企业过等保选哪家测评机构好&#xff1f; 目前宁夏正规具有资质的等保测评机构只有3家&#xff0c;分别为中电信…

虹科分享丨DevOps 是否已死?AI 和大语言模型给云计算和 DevOps 带来了哪些影响?

来源&#xff1a;虹科云科技虹科分享丨DevOps 是否已死&#xff1f;AI 和大语言模型给云计算和 DevOps 带来了哪些影响&#xff1f;云计算创新已经从革命性阶段过渡到了进化性阶段&#xff0c;重点在于迁移和重构工作负载。https://mp.weixin.qq.com/s/mx67vqxoEoMLMrbvE-D8_w …