树莓派4b 下docker ros的安装与使用

树莓派4b下安装docker,并安装ros镜像

  • docker安装
  • docker下安装ros
  • docker下运行ros
  • docker多个终端运行ros

docker安装

可采用自动化脚本安装,安装方便

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

docker下安装ros

我尝试过,在笔记本电脑(X86)上,Ubuntu16.04下安装的docker,并且生成了ros-Kinetic版本的镜像,采用docker save保存.zar,并在树莓派中采用docker load导入镜像。
打开容器并运行ros镜像,但是ros的所有相关命令均不能运行,应是内核不一致问题。

因此需要在树莓派下下载armv7的ros的镜像。 (在本地下载生成的docker镜像然后无法在树莓派下使用,估计是arm和x86架构导致的)。

官方指导说明
因此直接在树莓派内直接pull下ros镜像,会自动根据系统自动选择合适的内核版本。

docker pull ros:kinetic-robot

也可选择如下:

docker pull ros:kinetic-ros-base
docker pull ros:kinetic-ros-perception

docker下运行ros

docker下开启容器运行ros并进入终端。

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

如此进入容器,可执行ros的功能。

docker多个终端运行ros

已开启一个ros终端后,并执行roscore后需要进入同一ros容器中,不可以再次

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

否则会被认为是两个不同系统,则roscore是不可以通信,即新的终端无法识别roscore已开启。
需要执行以下命令查看当前正在运行容器ID。

docker ps


可查看所有容器ID

docker ps -a

结果

pi@raspberrypi:$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS               NAMES
537b261cbb18        ros:kinetic-robot   "/ros_entrypoint.sh …"   5 days ago          Exited (0) 5 days ago                       ros-kinetic

进入此ID的命令如下:

sudo docker exec -it 537b261cbb18 /bin/bash

如果非第一次进入此容器内,则ros相关命令无法执行,需要先进行source。

source /opt/ros//setup.bash

则在执行ros相关命令即可

你可能感兴趣的:(ros,树莓派)