docker中的ROS容器对实体的turtlebot的控制
在智能云服务机器人的研究中,结合DOCKER容器技术是一个研究方向之一,本文阐述了利用容器技术进行一个线下机器人的基本控制方法。
一、概述
阅读本文之前,建议先阅读之前在仿真条件下做的turtlebot_sim的控制,本文的工作是基于仿真工作的基础进行的。之前,实体的turtlebot机器人未成功,主要是因为相应的package缺少,在docker的镜像这并未给出。
package(功能包)是ROS中软件组织的基本形式,一个功能包具有最小的结构和最小的内容,用于创建ROS程序。它可以运行包含RIS运行的进程(节点)、配置文件等。
实际上,完整版的ROS系统大概 341 个package,详见“/opt/ros/indigo/share/“,但是ROS镜像中只包含了150左右的package,因此有很多的功能仅仅用DOCKER官方给的简单版的镜像是不能实现的。
二、尝试过的方法
为了解决这个问题,尝试过以下几个觉得可行性方法:
(1)直接在容器内部进行package的安装,failed。因为,在进行ROS容器的启用之前就改变了ROS容器的网络结构,不是用的默认docker0网桥,而是自定义的网桥,并且对自定义的网桥进行了配置,详细见:在仿真条件下做了turtlebot_sim的控制
(2)利用Docker的Volume数据卷共享机制,使ROS容器与本地共享package,failed。因为,虽然可以在容器内部“发现“这些共享包,单与本地共享的package功能包是由本地编译生成的,依赖的还是本地环境,即使重新编译,重新编译的命令比如catkin_make在容器内部也缺失。
(3)在Docker hub 官网给的简单版的ROS镜像基础上,重新制作包含完整版的功能包package的ROS的镜像,并用制作的镜像进行实验,Succeed。
三、解决办法
如概述中所说,本文所提出的办法是在之前仿真办法的基础上,建议连着看。