Docker内运行ROS(melodic版本)以及使用Rviz

写在前文

Docker的安装以及介绍本文就不再累述了,安装Docker的版本任意,但是要注意的一点是你是ARM板子还是x86的板子,一般在ARM板上实现上述功能较为麻烦,如果是在ARM板子上使用Docker+ROS的话可以参考这篇文章http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration#nvidia-docker1
在ROS的官网上有教程,但是还是有些坑的,如果你使用的是Nvidia的板子,要注意CUDA的版本,以及nvidia-docker的一些操作。

安装Portainer

在正式使用之前我们先安装一个操作容器的图形界面–Portainer,这个可视化的界面其实和ROS关系并不大,但是使用起来非常的方便,可以让我们更快速的利用Docker学习ROS,而不是要完整的学习完Docker的繁杂的命令再学习ROS。
安装使用Portainer的操作如下:

sudo systemctl restart docker
sudo docker pull portainer/portainer
sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name prtainer portainer/portainer

运行上述命令等待执行成功后,放行防火墙,访问本机的9000端口进入Portainer,创建账号密码之后即可登录到控制台。
在这里我们可以查看到运行容器内部的信息,也可以快速的删除废弃的容器及镜像。也可以构建虚拟网络实现容器间隔离。具体操作可以在网上另行搜索,本文也不再累述。

在Docker内运行ROS

在完成这项操作之前,我们首先要寻找一个合适的Docker镜像来完成这件事情
使用下面命令可以查看目前docker hub上有哪些大神上传的公共镜像:

sudo docker search ros

我们选用一个桌面环境什么的都安装完整的melodic版本的docker镜像:

sudo docker pull osrf/ros:melodic-desktop-full

接下来我们需要写一个Dockerfile,来帮我们完成一些简单的环境依赖安装工作:

mkdir rocker
cd rocker
vim Dockerfile
#######复制下面的Dockerfile
FROM osrf/ros:melodic-desktop-full
# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES
${NVIDIA_VISIBLE_DEVICES:-all}ENV NVIDIA_DRIVER_CAPABILITIES
${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphicsRUN apt-get update &&
apt-get install -y
build-essential
libgl1-mesa-dev
libglew-dev
libsdl2-dev
libsdl2-image-dev
libglm-dev
libfreetype6-dev
libglfw3-dev
libglfw3
libglu1-mesa-dev
freeglut3-dev
vim

接下来使用下面的命令构建容器,注意目录所在的位置以及后面的"."不能少

docker build -t rocker .

如果上面Dockerfile的下面安装部分安装不成功的话也没有关系,删除RUN节,不报错的话跳过此节

FROM osrf/ros:melodic-desktop-full
# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES
${NVIDIA_VISIBLE_DEVICES:-all}ENV NVIDIA_DRIVER_CAPABILITIES
${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics

然后后续进入容器后在安装即可,

###在运行容器后输入下面的命令,然后任意安装
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
apt update
apt install vim

构建成功容器后,接下来启动容器:

sudo xhost +local:
sudo docker run -it --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY"  --name=rocker osrf/ros:melodic-desktop-full  /bin/bash

在x86的机器上一般是可以运行成功的,我使用KALI都可以正常的运行,可见Docker的强大之处。。
运行上述命令我们即可进入到容器内部
在容器内部有一个ros_entrypoint.sh的文件,./ros_entrypoint.sh执行这个脚本
然后就可以正常使用roscore和rviz了
在使用rviz的时候我们当然需要再开启一个终端,那么对应的我们要进入启动roscore的这个容器

sudo docker ps
###找到运行的rocker容器的id
####进入容器
sudo docker exec -it f62d8436e5c2 /bin/bash
rviz

即可显示rviz的界面,原理的话实际上是linux和UNIX对X11的支持。X11也叫做X Window系统,X Window系统 (X11或X)是一种 位图 显示的 视窗系统 。它是在 Unix 和 类Unix 操作系统 ,以及 OpenVMS 上建立图形用户界面的标准工具包和协议,并可用于几乎所有已有的现代操作系统。

由于时间有限本篇不细讲Docker中的ROS与宿主机之间的通信,改天等用到的时候在写,同时也可以参考下面的一些比较好的文章进行Docker操作ROS的研究。

https://blog.csdn.net/lun55423/article/details/109097679
http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration#nvidia-docker1

想获取一些其他ROS学习资料或者购买一套以学习ROS为目的机器人,可以查看巨匠机器人。

Docker内运行ROS(melodic版本)以及使用Rviz相关推荐

  1. Ubuntu18.04 ROS melodic 版本的rivz教程

    我们学习rivz时需要一个大神写好的第三方包,这样我们才可以学习具体的命令以及方法.博主在从网上找rivz的教程时发现大部分都比较老了,不支持ROS的最新版本,所以提供的rivz第三方包安装会出现许多 ...

  2. Ubuntu18.04 ROS Melodic版本安装gazebo_ros_pkgs包

    疫情期间宅在家没法做实验,只能上手gazebo做仿真,导入实验室机器人的相关文件后,打算看看效果,运行代码 roslaunch probot_gazebo probot_anno_gazebo_wor ...

  3. ros melodic 版本sudo rosdep init和rosdep upgrade失败的解决办法

    版本:ros melodic和kinetic都可以 网上方法很多都不靠谱,原因还是因为访问不了国外的网站,无法更新. 下面的方法将链接换成了一个国内的源,内容和国外的源是一样的,教程如下: sudo ...

  4. docker内运行的grafana重置登录密码

    以grafana 5.4.2为例,docker可以直接从docker hub下载: $ docker pull grafana/grafana:5.4.2 docker运行方法可以参考grafana的 ...

  5. docker内外连通ros_docker容器内的ros外设使用与远程配置

    docker下ros外设使用与远程配置 ros远程配置 假设条件 docker容器网络配置 docker 容器ros网络配置 主机A的ros网络配置 网络永久配置 ros远程配置 假设条件 A电脑中安 ...

  6. 在Ubuntu 18.04 LTS安装ROS Melodic版机器人操作系统(2019年10月更新MoveIt! 1.0 ROS 2.0 Dashing)

    ROS Melodic版本在2018年5月23日推出正式版,这是ROS第三款长期支持版本,前2版LTS分别为:indigo(14.04):kinetic(16.04).此版本有windows版已经推出 ...

  7. ros melodic学习之plugin

    ros melodic学习之plugin 开发环境说明及项目创建 plugin具体步骤 创建功能包 创建基类 创建plugin类 注册插件 编译插件的动态链接库 将插件加入ros 创建pluginli ...

  8. Ubuntu18.04+Ros Melodic安装Moveit

    Ubuntu18.04+Ros Melodic安装Moveit框架 感谢Robot_Tiger_原文https://blog.csdn.net/CH_monsy/article/details/108 ...

  9. Ubuntu 18.04快捷安装ROS Melodic及rosdep update time out的问题解决

    1. ROS快捷安装 以下安装指令汇总针对Ubuntu18.04的ROS Melodic版本: 强烈建议复制以下指令到新建的xxx.sh文件中,保存后给xxx.sh权限,然后执行脚本一路输入y等候安装 ...

最新文章

  1. Normal2Height工具已经完成
  2. apply,call,bind区别
  3. 个人密码安全策略 [转载]
  4. 【工作分解法】IT人,你的工作“轻松”么?
  5. mysql transaction用法,mysql的事务,隔离级别和锁用法实例分析
  6. Chatbot大牛推荐:AI、机器学习、深度学习必看9大入门视频
  7. 跨平台---udpclient与udpserver
  8. anglar ajax执行2次的原因,angular2 router’解决问题被执行两次
  9. 选择行_外出旅游你会选择自由行还是跟团游?
  10. JAVA入门级教学之(关系运算符)
  11. git 命令行忽略提交_git命令入门(本地仓库)
  12. preg_match_all中的标记
  13. 2. with check option能起什么作用?_【科普】专家教路:面膜护肤到底有什么用?
  14. Linux命令df,du 查看系统磁盘空间
  15. Micro-mvc与springcloud整合
  16. 数据库中字段设计与NULL值操作
  17. 2021新跨域问题:insecure private network requests
  18. python decimal_实例详解Python模块decimal
  19. 推荐一个DNS解析商:CloudXNS
  20. Linux中连接mysql执行sql文件

热门文章

  1. Linux ptrace 原理,从gdb原理学习ptrace调用
  2. 无法访问其它家庭组计算机,win7系统家庭组无法访问的解决方法
  3. MySQL:数据类型
  4. CSS伪元素BEFORE、AFTER妙用:制作时尚焦点图相框
  5. 多线程下载m3u8影视资源 通过ffmpeg合并ts文件为mp4
  6. WebGL树形结构的模型渲染流程
  7. 就业前必须知道的那些事!【超干货,持续更新编辑】
  8. 错误Ox80071AC3:无法完成操作,因为卷有问题。请运行chkdsk并重试(解决方法)
  9. 基尼系数计算的两种方法:python实现 简单高效
  10. 为什么使用独热编码_什么是独脚架,何时应使用?