Ubuntu与ROS的Docker桌面系统与ROS在线练习课程(在线Linux虚拟机)

ROS在线练习课程正在逐步完善中,目前以ROS官网中文资料制做,可参考:html

https://www.shiyanlou.com/courses/854  邀请码 U23ERF8Hnode





安装Ubuntu+ROS对于零Linux基础的小伙伴有些困难,最近发现了一个学习Linux很是好的网站实验楼,连接以下:python

****https://www.shiyanlou.com/****react

很是好奇如何实现了,因而查阅了一些资料,以为最好的以下:linux

1    实验楼这个网站是怎样实现的在线linux虚拟机?
git

2    基于 VNCServer + noVNC 构建 Docker 桌面系统
github

3    Docker一些资料汇总web

4    https://hub.docker.com
算法

4.1 https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/
mongodb

4.2 https://hub.docker.com/r/kaixhin/vnc-ros/

4.3 https://hub.docker.com/_/ros/



----~~~~----

ubuntu-desktop-lxde-vnc

relaybot@relaybot-desktop:~$ docker search dorowu
NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
dorowu/ubuntu-desktop-lxde-vnc               Ubuntu with openssh-server and NoVNC            114                  [OK]
dorowu/ubuntu-ssh-ttyjs                      Ubuntu with openssh server and tty.js enab...   8                    [OK]
dorowu/apt-repo-server                       apt-repo-server is a debian repository ser...   6                    [OK]
dorowu/ubuntu-lxqt-vnc                                                                       5                    [OK]
dorowu/qemu-iso                              Boot VM by QEMU/KVM with ISO and access it...   4                    [OK]
dorowu/lightop-ubuntu-trusty-ttyjs                                                           2                    [OK]
dorowu/ntopng                                                                                1                    [OK]
hardock14/dorowu-docker-ubuntu-vnc-desktop   dorowus images with additional software         1                    [OK]
dorowu/online-document.amd64                                                                 0                    
dorowu/lightop-ubuntu-trusty-lxde                                                            0                    [OK]
dorowu/qdk2                                  Create Docker App on QNAP NAS in QPKG format    0                    [OK]
dorowu/glusterfs-keepalived                                                                  0                    [OK]
dorowu/lightop                                                                               0                    [OK]
dorowu/pekaboo2qnap                                                                          0                    
dorowu/ubuntu_amd64                                                                          0                    
dorowu/nodejs_amd64                                                                          0                    
dorowu/ruby_amd64                                                                            0                    
dorowu/ubuntu_armhf                                                                          0                    
dorowu/qiot-mongodb_amd64                                                                    0                    
dorowu/qdk2-build                                                                            0                    
dorowu/qiot-mongodb_armhf                                                                    0                    
dorowu/dashing                                                                               0                    
dorowu/supershell                                                                            0                    
dorowu/mattermostdocker_db                                                                   0                    
dorowu/qiot-mongo-express_amd64                                                              0                    
relaybot@relaybot-desktop:~$ docker pull dorowu/ubuntu-desktop-lxde-vnc
Using default tag: latest
latest: Pulling from dorowu/ubuntu-desktop-lxde-vnc
aafe6b5e13de: Pull complete 
0a2b43a72660: Pull complete 
18bdd1e546d2: Pull complete 
8198342c3e05: Pull complete 
f56970a44fd4: Pull complete 
da6ac41ac9c8: Pull complete 
6f3a5e5efdea: Downloading [============>                                      ]  111.4MB/441.9MB
d9dd7dde4295: Download complete 
ab365adf65d2: Download complete 
06b2cd083c64: Download complete 
c524c4444fb2: Download complete

kaixhin/vnc-ros

relaybot@relaybot-desktop:~$ docker search ros
NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mono                                        Mono is an open source implementation of M...   233       [OK]       
ros                                         The Robot Operating System (ROS) is an ope...   111       [OK]       
aerospike                                   Aerospike – the reliable, high performance...   76        [OK]       
cirros                                      CirrOS is a Tiny OS that specializes in ru...   38        [OK]       
neurodebian                                 NeuroDebian provides neuroscience research...   36        [OK]       
osrf/ros                                    The Robot Operating System (ROS) is an ope...   28                   [OK]
quantumobject/docker-ros-base               ROS-Base container (Robot Operating System)     5                    [OK]
px4io/px4-dev-ros                           Container with PX4 tool chain and SITL sim...   3                    [OK]
px4io/px4-ros-full                                                                          2                    [OK]
virgiletn/docker-ros                        Set of usefull tools for running ros throu...   1                    [OK]
personalrobotics/ros-openrave               ROS Indigo Base + Personal Robotics OpenRAVE    1                    [OK]
kaixhin/vnc-ros                             Ubuntu Core 14.04 + LXDE desktop + Firefox...   1                    [OK]
shadowrobot/ubuntu-ros-indigo-build-tools   DEPRECATED!!! Ubuntu 14.04 ROS Indigo imag...   0                    [OK]
autharl/ros                                 ROS images                                      0                    [OK]
timn/fedora-ros                             Robot Operating System (ROS) on Fedora          0                    [OK]
harmish/ros                                 Images of ROS (Robot Operating System)          0                    [OK]
jacknlliu/tiago-ros                         A tiago robot ros development environment.      0                    [OK]
kaixhin/ros                                 Ubuntu Core 14.04 + ROS Jade Base.              0                    [OK]
pmallozzi/ros                               Ros                                             0                    [OK]
nhzio/ros-weave                             rancheros weave + iptables                      0                    [OK]
ivs0/b-ros                                  Jenkins builder for ROS                         0                    [OK]
mjenz/ros-datacollection                    A container based on mjenz/ros-indigo-perc...   0                    [OK]
jacknlliu/ros                               ROS desktop-full docker images with Qt C++...   0                    [OK]
sigproc/ros                                                                                 0                    [OK]
diegoferigo/ros                             Dockerfile for my ROS Kinetic desktop-full...   0                    [OK]
relaybot@relaybot-desktop:~$ docker pull ros
Using default tag: latest
latest: Pulling from library/ros
bd97b43c27e3: Waiting 
6960dc1aba18: Waiting 
2b61829b0db5: Waiting 
1f88dc826b14: Waiting 
73b3859b1e43: Waiting 
27d60414a57e: Waiting 
d93e52c3383b: Waiting 
357b9c9b1672: Waiting 
e7c791091ba5: Waiting 
a55e61abbe79: Waiting 
3bdd92756f16: Waiting 
a75e7cd84889: Waiting 
^C
relaybot@relaybot-desktop:~$ docker pull kaixhin/vnc-ros
Using default tag: latest
latest: Pulling from kaixhin/vnc-ros
16da43b30d89: Pull complete 
1840843dafed: Pull complete 
91246eb75b7d: Pull complete 
7faa681b41d7: Pull complete 
97b84c64d426: Pull complete 
f6f12794daea: Downloading [==========>                                        ]  44.32MB/204.3MB
e7841d035bd3: Download complete 
440e2abbd651: Download complete 
09e4cb06ebb5: Download complete 
067189fe4086: Download complete 
52c18283b71e: Download complete 
49495db30f44: Download complete 
32e45df178f9: Downloading [=>                                                 ]  20.52MB/629.6MB
a138ae9132ab: Waiting 
15247c05ac4a: Waiting

----~~~~----

当镜像彻底下载后能够进行查看,以下:

relaybot@relaybot-desktop:~$ docker images -a
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
dorowu/ubuntu-desktop-lxde-vnc   latest              ec8a8836ea5f        6 weeks ago         1.23GB
kaixhin/vnc-ros                  latest              0948d9f58857        5 months ago        2.71GB

----ubuntu-desktop-lxde-vnc使用说明----

relaybot@relaybot-desktop:~$ docker run -it --rm -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc
/usr/lib/python2.7/dist-packages/supervisor/options.py:297: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  'Supervisord is running as root and it is searching '
2017-06-20 23:01:40,847 CRIT Supervisor running as root (no user in config file)
2017-06-20 23:01:40,847 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2017-06-20 23:01:40,869 INFO RPC interface 'supervisor' initialized
2017-06-20 23:01:40,870 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2017-06-20 23:01:40,870 INFO supervisord started with pid 19
2017-06-20 23:01:41,873 INFO spawned: 'xvfb' with pid 26
2017-06-20 23:01:41,876 INFO spawned: 'pcmanfm' with pid 27
2017-06-20 23:01:41,879 INFO spawned: 'lxpanel' with pid 28
2017-06-20 23:01:41,882 INFO spawned: 'lxsession' with pid 29
2017-06-20 23:01:41,884 INFO spawned: 'x11vnc' with pid 30
2017-06-20 23:01:41,887 INFO spawned: 'novnc' with pid 31
2017-06-20 23:01:41,971 INFO exited: lxsession (exit status 1; not expected)
2017-06-20 23:01:41,994 INFO exited: lxpanel (exit status 1; not expected)
2017-06-20 23:01:42,951 INFO success: xvfb entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:01:42,951 INFO success: pcmanfm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:01:42,951 INFO success: x11vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:01:42,951 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:01:42,973 INFO spawned: 'lxsession' with pid 52
2017-06-20 23:01:43,055 INFO spawned: 'lxpanel' with pid 54
2017-06-20 23:01:44,106 INFO success: lxpanel entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:01:44,106 INFO success: lxsession entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:01:58,177 INFO waiting for novnc, pcmanfm, lxpanel, xvfb, x11vnc, lxsession to die
2017-06-20 23:01:58,463 INFO stopped: novnc (terminated by SIGQUIT (core dumped))
2017-06-20 23:01:58,465 INFO stopped: x11vnc (exit status 2)
2017-06-20 23:01:58,669 INFO stopped: lxsession (terminated by SIGABRT (core dumped))
2017-06-20 23:01:59,871 INFO stopped: lxpanel (terminated by SIGQUIT (core dumped))
2017-06-20 23:02:00,056 INFO stopped: pcmanfm (terminated by SIGQUIT (core dumped))
2017-06-20 23:02:00,060 INFO stopped: xvfb (exit status 1)
2017-06-20 23:02:00,076 CRIT Supervisor running as root (no user in config file)
2017-06-20 23:02:00,076 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2017-06-20 23:02:00,077 INFO RPC interface 'supervisor' initialized
2017-06-20 23:02:00,077 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2017-06-20 23:02:00,077 INFO supervisord started with pid 19
2017-06-20 23:02:00,867 INFO spawned: 'xvfb' with pid 75
2017-06-20 23:02:00,870 INFO spawned: 'pcmanfm' with pid 76
2017-06-20 23:02:00,873 INFO spawned: 'lxpanel' with pid 77
2017-06-20 23:02:00,878 INFO spawned: 'lxsession' with pid 78
2017-06-20 23:02:00,881 INFO spawned: 'x11vnc' with pid 79
2017-06-20 23:02:00,884 INFO spawned: 'novnc' with pid 80
2017-06-20 23:02:01,913 INFO success: xvfb entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:02:01,914 INFO success: pcmanfm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:02:01,914 INFO success: lxpanel entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:02:01,914 INFO success: lxsession entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:02:01,914 INFO success: x11vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-06-20 23:02:01,914 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)


Ubuntu的VNC桌面

Docker图像提供HTML5 VNC界面访问Ubuntu 16.04 LXDE桌面环境。

快速开始

运行码头图像并打开端口 6080

docker run -it --rm -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc

浏览http://127.0.0.1:6080/

<img src =“https://raw.github.com/fcwu/docker-ubuntu-vnc-desktop/master/screenshots/lxde.png?v1”width = 700 />

链接VNC Viewer并经过VNC密码进行保护

将VNC服务端口5900转发到主机

docker run -it --rm -p 6080:80 -p 5900:5900 dorowu/ubuntu-desktop-lxde-vnc

如今,打开vnc查看器并链接到端口5900.若是要经过密码保护vnc服务,请设置环境变量VNC_PASSWORD,例如

docker run -it --rm -p 6080:80 -p 5900:5900 -e VNC_PASSWORD=mypassword dorowu/ubuntu-desktop-lxde-vnc

提示将在浏览器或vnc查看器中询问密码。

故障排除

  1. boot2docker链接问题,https://github.com/fcwu/docker-ubuntu-vnc-desktop/issues/2

----补充局域网(外网访问)----


获取IP信息:

两种方法:

1 $ docker exec ec8a8836ea5f ifconfig eth0 | grep "inet addr:"

注意,ec8a8836ea5f为ID,依据实际状况进行调整。

relaybot@relaybot-desktop:~$ docker exec fdfc8eda1 ifconfig eth0 | grep "inet addr:"
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
relaybot@relaybot-desktop:~$ ifconfig -a
docker0   Link encap:Ethernet  HWaddr 02:42:16:25:5a:77  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:16ff:fe25:5a77/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21801 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31279 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6093261 (6.0 MB)  TX bytes:30175014 (30.1 MB)

enp3s0    Link encap:Ethernet  HWaddr 20:6a:8a:03:40:6b  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:23603 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23603 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:6543144 (6.5 MB)  TX bytes:6543144 (6.5 MB)

vethd735054 Link encap:Ethernet  HWaddr f6:0a:d2:7f:58:70  
          inet6 addr: fe80::f40a:d2ff:fe7f:5870/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21801 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31319 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6398475 (6.3 MB)  TX bytes:30180429 (30.1 MB)

wlp5s0    Link encap:Ethernet  HWaddr 70:f1:a1:ca:75:52  
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::3c12:a5b2:8cf9:246/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1167103 errors:0 dropped:0 overruns:0 frame:0
          TX packets:965289 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1572330174 (1.5 GB)  TX bytes:97246007 (97.2 MB)

----

2 在novnc网页中启动命令行ifconfig -a


----vnc-ros----

参考资料:



----https://hub.docker.com/r/kaixhin/vnc-ros/----

简短的介绍
Ubuntu Core 14.04 + LXDE桌面+ Firefox浏览器+ TightVNC服务器+ ROS Jade Desktop Full。
完整描述


VNC-ROS

Ubuntu Core 14.04 + LXDE桌面+ Firefox浏览器+ TightVNC服务器+ ROSJade桌面版默认使用尾部运行做为守护进程。

创建

包括密码txt与TightVNC的密码(默认状况下这是“密码”)。这个长度必须至少为8个字符,若是更长,则会被截断。

用法

应该更改默认密码。这样作启动一个容器而后运行docker exec <id> bash -c "echo -e '<password>\n<password>\nn' | vncpasswd"

用于自动映射VNC端口使用docker run -dP kaixhin/vnc-rosdocker port <id>检索端口。
用于指定端口手动使用docker run -d -p <port>:5901 kaixhin/vnc-ros
外壳能够照常使用docker run -it kaixhin/vnc-ros bash

引文

若是您发现这在研究中有用,请考虑引用这项工做


----https://hub.docker.com/_/ros/----

简短的介绍
机器人操做系统(ROS)是构建机器人应用程序的开源项目。
完整描述

支持的标签和相应的Dockerfile连接

快速参考

什么是ROS

机器人操做系统(ROS)是一组可帮助您构建机器人应用程序的软件库和工具。从驱动程序到最早进的算法,以及强大的开发人员工具,ROS具备您下一个机器人项目所需的功能。这一切都是开源的。

wikipedia.org/wiki/Robot_Operating_System

如何使用此图像

Dockerfile在您的ROS应用程序项目中建立一个

FROM ros:indigo
# place here your application's setup specifics
CMD [ "roslaunch", "my-ros-app my-ros-app.launch" ]

而后,您能够构建并运行Docker映像:

$ docker build -t my-ros-app .
$ docker run -it --rm --name my-running-app my-ros-app

部署用例

ROS的这种停泊图像旨在提供一个简化和一致的平台来构建和部署分布式机器人应用程序。官方Ubuntu镜像和ROS官方Debian软件包组成,它包括最近支持的快速访问和下载版本。这为机器人研究和工业界提供了一个简单的方法来开发,重用和运送软件,用于自主操做和任务规划,控制动态,本地化和映射,群体行为以及通常系统集成。

开发具备史无前例的算法的复杂系统仍然具备挑战性,由于机器人软件的重复性和可重复性可能会在创新竞争中脱颖而出。随着编码,调优和部署跨越许多工程学科的多个软件组件的难度增长,更加协做的方法变得具备吸引力。然而,在多个机器人和平台上共享和维护软件集合的技术难题比许多较小的实验室和企业承担的时间和精力要长一些。

随着软件容器的进步和标准化,机器人专家被准备得到大量改进的开发工具来构建和发布软件。为了减轻采用新实践的不断增加的痛苦和技术挑战,咱们专一于为ROS提供这些新技术的官方资源。

部署建议

可用的标签包括支持的发行版,以及基于最多见的元包依赖关系的层次标签,旨在具备小的占位面积和简单的配置:

  • ros-core:barebone ROS安装
  • ros-base:基本工具和库(也标记为具备LTS版本的发行版名称latest
  • robot:机器人的基本安装
  • perception:感知任务的基本安装

共同元套餐,如休息desktop,并desktop-full使用自动生成的回购协议下OSRF的泊坞枢纽轮廓托管在这里这些元数据包包括图形依赖关系,并挂接许多其余大型软件包,如X11,X服务器等。所以,为了保持官方映像的精简和安全性,桌面软件包仅由OSRF的配置文件托管。

ROS使用~/.ros/存储日志目录和调试信息。若是但愿将这些文件保留在生成它们的容器的生命周期以外,则该~/.ros/文件夹能够挂载到主机上的外部卷上,或者派生的映像能够指定由Docker引擎管理的卷。默认状况下,容器做为root用户运行,所以/root/.ros/将是这些文件的完整路径。

例如,若是但愿使用.ros已经驻留在其本地主目录中的本身的文件夹,使用用户名ubuntu,则可使用附加的卷参数简单地启动该容器:

$ docker run -v "/home/ubuntu/.ros/:/root/.ros/" ros

设备

某些应用程序可能须要设备访问以从链接的摄像机获取图像,控制人机接口设备的输入或用于硬件加速的GPUS。这可使用--device运行参数来将设备安装在容器内,从而提供硬件访问中的进程。

网络

ROS运行时“图”是使用ROS通讯基础设施松散耦合的进程对等网络(可能分布在机器之间)。ROS实现了多种不一样的通讯方式,包括经过服务进行的同步RPC式通讯,主题数据的异步流传输以及参数服务器上数据的存储。为了遵照每一个容器一个进程的最佳作法,Docker网络能够用于将几个正在运行的ROS进程串联在一块儿。有关ROS NetworkSetup wik文章的更多详细信息,或请参阅下面的部署示例。

部署示例

若是咱们但愿咱们的全部ROS节点彼此轻松交谈,咱们可使用虚拟网络链接单独的容器。在这短短的例子中,咱们将建立一个虚拟网络,旋转了一个新的容器中运行roscore标榜master的新网络服务,而后生成一个信息发布者和预订过程在同一网络上的服务。

构建图像

构建包含使用此ROS教程的ROS映像 Dockerfile:

FROM ros:indigo-ros-base
# install ros tutorials packages
RUN apt-get update && apt-get install -y
    ros-indigo-ros-tutorials \
    ros-indigo-common-tutorials \
    && rm -rf /var/lib/apt/lists/

而后从同一目录中构建图像:

$ docker build --tag ros:ros-tutorials .

建立网络

要建立一个新的网络foo,咱们使用network命令:

docker network create foo

如今咱们有一个网络,咱们能够建立服务。服务在网络上广告位置,能够方便地解析服务特定容器的位置/地址。咱们将使用这个确保咱们的ROS节点能够找到并链接到咱们的ROS master

运行服务

为ROS主机建立一个容器并通告它的服务:

$ docker run -it --rm \
    --net foo \
    --name master \
    ros:ros-tutorials \
    roscore

如今,您能够看到主机正在运行,并准备好管理咱们的其余ROS节点。要添加咱们的talker节点,咱们须要将相关环境变量指向主服务:

$ docker run -it --rm \
    --net foo \
    --name talker \
    --env ROS_HOSTNAME=talker \
    --env ROS_MASTER_URI=http://master:11311 \
    ros:ros-tutorials \
    rosrun roscpp_tutorials talker

而后在另外一个终端中,listener相似地运行节点:

$ docker run -it --rm \
    --net foo \
    --name listener \
    --env ROS_HOSTNAME=listener \
    --env ROS_MASTER_URI=http://master:11311 \
    ros:ros-tutorials \
    rosrun roscpp_tutorials listener

好的!你应该看到listener如今正在回应每一个消息的talker广播。而后,您能够列出容器并查看以下内容:

$ docker service ls
SERVICE ID          NAME                NETWORK             CONTAINER
67ce73355e67        listener            foo                 a62019123321
917ee622d295        master              foo                 f6ab9155fdbe
7f5a4748fb8d        talker              foo                 e0da2ee7570a

并为服务:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS              PORTS               NAMES
a62019123321        ros:ros-tutorials   "/ros_entrypoint.sh    About a minute ago   Up About a minute   11311/tcp           listener
e0da2ee7570a        ros:ros-tutorials   "/ros_entrypoint.sh    About a minute ago   Up About a minute   11311/tcp           talker
f6ab9155fdbe        ros:ros-tutorials   "/ros_entrypoint.sh    About a minute ago   Up About a minute   11311/tcp           master

内省

好的,如今咱们看到两个节点正在沟通,让咱们进入一个容器,作一些内省,到底是什么主题:

$ docker exec -it master bash
$ source /ros_entrypoint.sh

若是咱们而后使用rostopic列出发布的消息主题,咱们应该看到以下:

$ rostopic list
/chatter
/rosout
/rosout_agg

拆除

为了拆除咱们所作的结构,咱们只须要中止容器和服务。咱们可使用Ctrl^C咱们启动容器的位置中止并移除容器,或者使用咱们给它们的名称的stop命令:

$ docker stop master talker listener
$ docker rm master talker listener

撰写

如今,您已经对手动引导分布式ROS示例感到欣慰,咱们能够尝试使用它自动化docker-compose

首先建立一个名为的文件夹rostutorials,并将咱们以前使用的Dockerfile移动到此目录中。而后建立一个docker-compose.yml在同一目录中命名的yaml文件,而后粘贴如下内容:

version: '2'
services:
  master:
    build: .
    container_name: master
    command:
      - roscore

  talker:
    build: .
    container_name: talker
    environment:
      - "ROS_HOSTNAME=talker"
      - "ROS_MASTER_URI=http://master:11311"
    command: rosrun roscpp_tutorials talker

  listener:
    build: .
    container_name: listener
    environment:
      - "ROS_HOSTNAME=listener"
      - "ROS_MASTER_URI=http://master:11311"
    command: rosrun roscpp_tutorials listener

如今从同一个文件夹中,使用docker-copose启动咱们的ROS节点,并指定它们在本身的网络上共存:

$ docker-compose up -d

请注意,rostutorials_default如今已经建立了一个名为的新网络,您能够进一步检查:

$ docker network inspect rostutorials_default

咱们能够监视每一个服务的记录输出,如监听器节点,以下所示:

$ docker-compose logs listener

最后,咱们可使用docker-copose从同一个目录中中止并删除全部相关的容器:

$ docker-compose stop
$ docker-compose rm

注意:自动生成的网络rostutorials_default将会停留在docker引擎的整个生命周期中,或者直到您使用它来显式删除它docker network rm

更多资源

ROS.org:主ROS网站
维基:查找教程并了解更多
ROS答案:提问。获取答案
博客:保持最新的
OSRF:开源机器人基金会

执照

ROS的核心是根据标准的三条BSD许可证进行许可。这是一个很是宽松的开放许可证,容许在商业和封闭源产品中重复使用。您能够从Opensource.org BSD 3-Clause页面和维基百科的BSD许可证条目中找到有关BSD许可证的更多信息

虽然ROS的核心部分根据BSD许可证得到许可,但其余许可证一般用于社区软件包,例如Apache 2.0许可证,GPL许可证,MIT许可证,甚至专有许可证。ROS生态系统中的每一个包都须要指定许可证,以便您可以快速识别包装是否符合您的许可需求。


----https://hub.docker.com/r/osrf/ros/----

简短的介绍
机器人操做系统(ROS)是构建机器人应用程序的开源项目。
完整描述

OSRF Docker图像

这个repo托管Dockerfiles用于生成OSRF项目的官方图像,包括Docker Hub上的onbuild存储库:

官方图书馆

ROS  

Gazebo  

OSRF资料

ROS  

ROS2  

Gazebo  

SROS  

这个repo还包括必要的脚本和配置文件来自动生成Dockerfiles。有关进一步的文档,请参阅doc目录。


----ROS在线学习---

The ROS Autonomous Vehicles 101 and ROS-Industrial 101 courses are now available. Ready to built the future today? Keep advancing your ROS!
ROS Autonomous Vehicles 101
Learn the essentials for doing autonomous cars control using ROS. You are going to learn:

    ✓ what are the sensors required for an autonomous car and how to access them using ROS
    ✓ how to do autonomous navigation using a GPS
    ✓ how to create an obstacle avoider for an autonomous car
    ✓ how to interface ROS with a car that follows the DBW interface

*Watch the ROS Autonomous Vehicles 101   Video Tutorials
Start Learning Now
ROS-Industrial 101

Learn ROS-Industrial to extend the advanced capabilities of ROS software to manufacturing. After this course you will be able to:

    ✓ know the basics of URDF for industrial robots
    ✓ create a MoveIt package for your industrial robot.
    ✓ perform motion planning using Python.

*Watch the ROS-Industrial 101   Video Tutorials

.
Start Learning Now
REFER & EARN free course
You can earn 1 year course for free by inviting your teacher to use Robot Ignite Academy to teach ROS effectively.​​​​​​​
Happy Learning!
The Construct team
 

----End----