上位机图像处理和嵌入式模块部署(树莓派4b安装docker&ros1、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

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 19:26:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 19:26:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 19:26:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 19:26:04       20 阅读

热门阅读

  1. 在Ubuntu上安装Anaconda并配置远程访问Jupyter

    2024-05-11 19:26:04       9 阅读
  2. Selenium定位方法及代码

    2024-05-11 19:26:04       12 阅读
  3. Activity7框架使用学习记录

    2024-05-11 19:26:04       9 阅读
  4. 11.Netty简单认识

    2024-05-11 19:26:04       12 阅读
  5. Unity 单例模式

    2024-05-11 19:26:04       11 阅读
  6. Centos安装 docker和docker-compose

    2024-05-11 19:26:04       7 阅读
  7. 机器学习_如何给客户做聚类K-Means

    2024-05-11 19:26:04       11 阅读
  8. SSL/TLS 协议

    2024-05-11 19:26:04       8 阅读
  9. thinkphp5.1 模型auto

    2024-05-11 19:26:04       11 阅读
  10. UnityDOTS备忘

    2024-05-11 19:26:04       9 阅读
  11. QT day2

    QT day2

    2024-05-11 19:26:04      8 阅读
  12. Qt宏和关键字

    2024-05-11 19:26:04       11 阅读