上位机图像处理和嵌入式模块部署(树莓派4b安装dockerros1、ros2)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们讨论过树莓派4b安装ros的问题,当时的解决方案就是利用docker来安装ros。我们都知道,每一个ros版本都是和特定的ubuntu版本bind在一起的。但是树莓派4b的镜像是一直在update的,不可能一直停在过去的某一个版本上。那这个时候,怎么解决在树莓派4b上安装ros的问题呢,方法就是docker。docker相当于在file system这一层做了软件隔离。也就是说,通过docker,我们可以让不同版本的ros、不同版本的debian、不同版本的ubuntu同时运行,并且赋予它们不同的额度的cpu资源、ram资源、存储资源和网络资源,这就是docker的优势所在。

        当然不仅如此,docker的另外一个优势就是软件部署。在嵌入式开发板部署软件是一个麻烦的事情,但是有了docker,我们就可以把相关的软件、配置文件和资源打包成一个镜像来处理。这样有了这个打包好的镜像之后,就再也不用因为软件配置的事情而烦恼了。

1、下载docker软件

        下载的方法比较简单,直接运行一行命令就可以。它会首先下载一个脚本,然后执行这个脚本,

sudo apt-get install docker
sudo curl -sSL https://get.docker.com | sh

        一般docker安装好之后,我们可以通过ifconfig命令就知道docker是不是安装好了,

feixiaoxing@raspberrypi:~ $ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:a1:c3:c7:6e  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2、执行最简单的hello-world程序

        docker是可以执行最简单的hello-world程序,使用方法需要在sudo模式下进行,

sudo docker run hello-world

        如果本地没有hello-world,它会从remote server下载一个hello-world,只要server上面有这样的程序或者是镜像。

3、执行一个ubuntu程序

        我们可以重新下载一个ubuntu镜像,并且进入到里面的bash,

sudo docker run -it ubuntu bash

        进入之后,用户名就变成了root,如果要退出这个镜像,那么输入exit返回即可。这样就可以回到之前的树莓派4b环境中。

4、安装ros1 kinetic版本

        如果在树莓派4b下面pull一个ros,也是比较简单的,只需要执行这条命令即可,

sudo docker pull ros:kinetic-robot

        下载好了docker命令之后,就可以进入到它的bash环境当中了,

sudo docker run -it  --rm ros:kinetic-robot /bin/bash

        那怎么确认当前环境已经有ros的相关功能了呢?最简单的方法,就是查找一下catkin的相关命令。操作方法就是输入cat,然后按一下tab键,

feixiaoxing@raspberrypi:~/Desktop $ sudo docker run -it  ros:kinetic-robot /bin/bash
root@81471a505d2e:/# cat
cat                        catkin_find                catkin_init_workspace      catkin_package_version     catkin_test_changelog
catchsegv                  catkin_find_pkg            catkin_make                catkin_prepare_release     catkin_test_results
catkin_create_pkg          catkin_generate_changelog  catkin_make_isolated       catkin_tag_changelog       catkin_topological_order

        

5、安装ros1 noetic版本

        学会了kinetic版本的安装,我们可以试试另外一个ros1的版本,即noetic版本的安装,

sudo docker pull ros:noetic-robot

        运行的话,也是一样的,

feixiaoxing@raspberrypi:~/Desktop $ sudo docker run -it --rm ros:noetic-robot /bin/bash
root@bda2176f78e0:/#

注:

        有的时候下载,网络不是很好,需要反复多下载几次。后续ros1、ros2的其他版本,也是同样的处理方式。不过真正部署的时候,直接用本地的而镜像就可以了。

6、安装ros2 humble版本

        既然前面我们安装了ros1的版本,那么ros2版本的安装也是一个道理,比如说,我们安装ros2 humble版本,它的安装方法是这样的,

sudo docker pull ros:humble-ros-core

        如果需要执行起来的话,应该这么来做,

sudo docker run -it --rm ros:humble-ros-core

        和之前ros1安装相比较,明显ros2下载的image内容更多,占用空间更大。所以我们在准备tf卡的时候一定要大一点,一般情况下要大于32g,最好是64g。另外因为image下载过程中存在hang住的情况,退出重新下载都是可以的。

        这个时候,如果希望确认ros2是不是真的安装好了,直接输入ros2命令即可,

feixiaoxing@raspberrypi:~ $ sudo docker run -it --rm ros:humble-ros-core
root@35296bbd4d2d:/# ros2
usage: ros2 [-h] [--use-python-default-buffering] Call `ros2 <command> -h` for more detailed usage. ...

ros2 is an extensible command-line tool for ROS 2.

options:
  -h, --help            show this help message and exit
  --use-python-default-buffering
                        Do not force line buffering in stdout and instead use the python default buffering, which might be affected by
                        PYTHONUNBUFFERED/-u and depends on whatever stdout is interactive or not

Commands:
  action     Various action related sub-commands
  component  Various component related sub-commands
  daemon     Various daemon related sub-commands
  doctor     Check ROS setup and other potential issues
  interface  Show information about ROS interfaces
  launch     Run a launch file
  lifecycle  Various lifecycle related sub-commands
  multicast  Various multicast related sub-commands
  node       Various node related sub-commands
  param      Various param related sub-commands
  pkg        Various package related sub-commands
  run        Run a package specific executable
  security   Various security related sub-commands
  service    Various service related sub-commands
  topic      Various topic related sub-commands
  wtf        Use `wtf` as alias to `doctor`

  Call `ros2 <command> -h` for more detailed usage.

        需要注意的是,humble-ros-core是没有gcc、g++环境的。如果需要这两个环境,则需要安装这个image,

sudo docker pull ros:humble-ros-base

        运行也是差不多的,

sudo docker run -it --rm ros:humble-ros-base

其他:

        关于docker更多的命令,大家可以参考这个链接,

https://blog.csdn.net/techfuture/article/details/137981615

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql权限体系

提示&#xff1a;根据课程视频总结知识点------2024.05.15 文章目录 权限处理逻辑1、 能不能连接2、能不能执行操作 权限授予与回收1、创建用户2、授予权限3、查看权限4、回收权限5、 权限级别 账户安全管理1、用户权限设定原则2、历史文件泄密 用户权限设定原则1. 只读用户--数…

C++|树形关联式容器(set、map、multiset、multimap)介绍使用

目录 一、关联式容器介绍 1.1概念 1.2键值对 1.3树形结构的关联式容器 1.3.1pair模板介绍 1.3.2make_pair的介绍 二、set的介绍和使用 2.1set介绍 2.2set使用 2.2.1构造 2.2.2容量 2.2.3修改 三、map的介绍和使用 3.1map介绍 3.2map使用 3.2.1构造 3.2.2容量 …

VC++6.0 Sqlite3调用例子

1,为什么要使用Sqlite3? SQLite 是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 2,为什么使用SQLite version 3.8.4.3 2014-04-03 16:53:12的版本…

邮件发送API的功能有哪些?API的调用限制?

邮件发送API的响应速度如何&#xff1f;如何选择API发送邮件&#xff1f; 邮件发送API提供了高效、灵活且可靠的邮件发送功能&#xff0c;使得邮件营销、用户通知、系统告警等场景变得轻松自如。那么&#xff0c;邮件发送API具体都有哪些功能呢&#xff1f;让AokSend来探索吧&…

Spark SQL ---结构化数据文件处理

DataFrame概述 DataFrame的创建 创建DataFrame的两种基本方式&#xff1a; •已存在的RDD调用toDF()方法转换得到DataFrame。 •通过Spark读取数据源直接创建DataFrame。 若使用SparkSession方式创建DataFrame&#xff0c;可以使用spark.read从不同类型的文件中加载数据创建…

【美团面试2024/05/14】前端面试题滑动窗口

一、题目描述 设有一字符串序列 s&#xff0c;确定该序列中最长的无重复字母的子序列&#xff0c;并返回其长度。 备注 0 < s.length < 5 * 104 s 由英文字母、数字、符号和空格组成 示例1 输入 s "abcabcbb" 输出 3 二、原题链接 这道题在LeetCode上的原题链…

运维别卷系列 - 云原生监控平台 之 06.prometheus pushgateway 实践

文章目录 [toc]Pushgateway 简介Pushgateway 部署创建 svc创建 deployment Pushgateway 测试删除 Pushgateway 上对应 lable 的数据 Pushgateway 简介 WHEN TO USE THE PUSHGATEWAY Pushgateway 是一种中介服务&#xff0c;允许您从无法抓取的作业中推送指标。 The Pushgateway…

Python NumPy数组的创建方法

Numpy是Python中科学计算的基础包&#xff0c;其核心对象就是ndarray&#xff08;n维数组&#xff09;。利用数组可以快速执行逻辑&#xff0c;形状操作&#xff0c;统计和傅里叶变换等运算&#xff0c;其效率比Python原生的数组效率更高。因此使用Numpy的第一件事就是创建Nump…

构建第一个ArkTS应用之@LazyForEach:数据懒加载

LazyForEach从提供的数据源中按需迭代数据&#xff0c;并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach&#xff0c;框架会根据滚动容器可视区域按需创建组件&#xff0c;当组件滑出可视区域外时&#xff0c;框架会进行组件销毁回收以降低内存占用。 接口…

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b&#xff0c;就是线性最小二乘&#xff1b;若f(x) ax2 b / ax2 bx 之类的&#xff0c;就是非线性最小二乘&#xff1b; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…

玩转大模型 企业AI着陆新正解 神州问学AI原生赋能平台正式发布

在人工智能技术日新月异的今天&#xff0c;神州数码凭借深厚的行业洞察和技术积累&#xff0c;揭开了AI原生赋能平台——神州问学的神秘面纱。作为企业AI着陆的加速引擎&#xff0c;神州问学致力于通过AI原生场景赋能&#xff0c;为企业开辟一条通往智能未来的坦途。 神州问学—…

出国旅游常用英语,柯桥成人英语培训

Where can I catch a taxi?哪里我可以叫到出租车&#xff1f; The taxi zone is right on the left corner over there.出租车站台就在左边转角处。 Are you free?您有空吗&#xff1f; Sure. Where are you going?当然。您要去哪里&#xff1f; Drive me back to Santa …

2024年淘宝京东天猫618红包领取跨店满减优惠券活动时间是从什么时候开始到几月几号结束?

2024年淘宝、天猫、京东618红包领取口令及活动时间已发布&#xff0c;具体如下&#xff1a; 一、2024年淘宝天猫618活动 1.1、2024年淘宝天猫618活动时间 2024年5月20日开始持续到6月20日结束&#xff1b; 1.2、2024年淘宝天猫618红包领取 在活动时间内&#xff0c;每天都可…

如何通过radsystem源代码启动项目

大家有没有想过这样一个问题&#xff0c;如果别人没有下载radsystems&#xff0c;别人该如何打开我们的项目呢&#xff0c;那么今天我来介绍一下&#xff0c;如何启动radsystem源代码。 一般来说我们都是需要打开radsystems的publish部署项目 但是我们可以通过它部署后的源代码…

内存函数:memcpy(拷贝),memmove(拷贝),memcmp(比较),memset(设置)

内存函数 一.memcpy&#xff08;内存拷贝1&#xff09;1.函数使用2.模拟实现 二.memmove&#xff08;内存拷贝2&#xff09;1.函数使用2.模拟实现 三.memcmp&#xff08;内存比较&#xff09;1.函数使用2.模拟实现 四.memset&#xff08;内存设置&#xff09;1.函数使用2.模拟实…

axios封装 手动取消接口请求

axios封装 手动取消接口请求 1.创建clearHttpRequest.js文件2.封装的axios文件中使用3.vue文件中引入4. 路由切换使用 对于一些接口loading很久&#xff0c;用户想手动终止请求的需求&#xff0c; 并为了节约性能&#xff0c;当路由切换时&#xff0c;cancel掉还没有结束的接口…

Redis经典问题:BigKey问题

大家好,我是小米,今天来和大家聊聊Redis中的一个经典问题:BigKey问题。在互联网系统中,我们经常需要保存大量的用户数据,比如用户的个人信息、粉丝列表、发表的微博内容等等。这些数据往往会被存储在Redis这样的缓存系统中,以提高系统的性能和响应速度。但是,在处理这些…

算法考试题

分治法课堂案例 第1关&#xff1a;二分搜索技术 任务描述 本关任务&#xff1a;给定一组有序整数&#xff0c;用二分查找技术查找X是否在序列中&#xff0c;在则输出Yes&#xff0c;不在则输出No。 输入格式&#xff1a;三行&#xff0c;第一行一个整数n&#xff0c;第二行…

相机模型的内参、外参

相机模型的内参、外参 文章目录 相机模型的内参、外参1. 针孔模型、畸变模型&#xff08;内参&#xff09;2. 手眼标定&#xff08;外参&#xff09; Reference 这篇笔记主要参考&#xff1a;slam十四讲第二版&#xff08;高翔&#xff09; 相机将三维世界中的坐标点&#xff…

2024年加密软件市场大比拼:谁将成为数据保护的新星

在2024年的加密软件市场&#xff0c;一场激烈的竞争正在上演。各大厂商纷纷推出自家的最新产品&#xff0c;旨在为用户提供更加安全、可靠的数据保护方案。在这场大比拼中&#xff0c;谁将成为数据保护的新星&#xff0c;引领市场的新潮流呢&#xff1f; 首先&#xff0c;我们…