Docker内运行ROS(melodic版本)以及使用Rviz
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相关推荐
- Ubuntu18.04 ROS melodic 版本的rivz教程
我们学习rivz时需要一个大神写好的第三方包,这样我们才可以学习具体的命令以及方法.博主在从网上找rivz的教程时发现大部分都比较老了,不支持ROS的最新版本,所以提供的rivz第三方包安装会出现许多 ...
- Ubuntu18.04 ROS Melodic版本安装gazebo_ros_pkgs包
疫情期间宅在家没法做实验,只能上手gazebo做仿真,导入实验室机器人的相关文件后,打算看看效果,运行代码 roslaunch probot_gazebo probot_anno_gazebo_wor ...
- ros melodic 版本sudo rosdep init和rosdep upgrade失败的解决办法
版本:ros melodic和kinetic都可以 网上方法很多都不靠谱,原因还是因为访问不了国外的网站,无法更新. 下面的方法将链接换成了一个国内的源,内容和国外的源是一样的,教程如下: sudo ...
- docker内运行的grafana重置登录密码
以grafana 5.4.2为例,docker可以直接从docker hub下载: $ docker pull grafana/grafana:5.4.2 docker运行方法可以参考grafana的 ...
- docker内外连通ros_docker容器内的ros外设使用与远程配置
docker下ros外设使用与远程配置 ros远程配置 假设条件 docker容器网络配置 docker 容器ros网络配置 主机A的ros网络配置 网络永久配置 ros远程配置 假设条件 A电脑中安 ...
- 在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版已经推出 ...
- ros melodic学习之plugin
ros melodic学习之plugin 开发环境说明及项目创建 plugin具体步骤 创建功能包 创建基类 创建plugin类 注册插件 编译插件的动态链接库 将插件加入ros 创建pluginli ...
- Ubuntu18.04+Ros Melodic安装Moveit
Ubuntu18.04+Ros Melodic安装Moveit框架 感谢Robot_Tiger_原文https://blog.csdn.net/CH_monsy/article/details/108 ...
- Ubuntu 18.04快捷安装ROS Melodic及rosdep update time out的问题解决
1. ROS快捷安装 以下安装指令汇总针对Ubuntu18.04的ROS Melodic版本: 强烈建议复制以下指令到新建的xxx.sh文件中,保存后给xxx.sh权限,然后执行脚本一路输入y等候安装 ...
最新文章
- Normal2Height工具已经完成
- apply,call,bind区别
- 个人密码安全策略 [转载]
- 【工作分解法】IT人,你的工作“轻松”么?
- mysql transaction用法,mysql的事务,隔离级别和锁用法实例分析
- Chatbot大牛推荐:AI、机器学习、深度学习必看9大入门视频
- 跨平台---udpclient与udpserver
- anglar ajax执行2次的原因,angular2 router’解决问题被执行两次
- 选择行_外出旅游你会选择自由行还是跟团游?
- JAVA入门级教学之(关系运算符)
- git 命令行忽略提交_git命令入门(本地仓库)
- preg_match_all中的标记
- 2. with check option能起什么作用?_【科普】专家教路:面膜护肤到底有什么用?
- Linux命令df,du 查看系统磁盘空间
- Micro-mvc与springcloud整合
- 数据库中字段设计与NULL值操作
- 2021新跨域问题:insecure private network requests
- python decimal_实例详解Python模块decimal
- 推荐一个DNS解析商:CloudXNS
- Linux中连接mysql执行sql文件
热门文章
- Linux ptrace 原理,从gdb原理学习ptrace调用
- 无法访问其它家庭组计算机,win7系统家庭组无法访问的解决方法
- MySQL:数据类型
- CSS伪元素BEFORE、AFTER妙用:制作时尚焦点图相框
- 多线程下载m3u8影视资源 通过ffmpeg合并ts文件为mp4
- WebGL树形结构的模型渲染流程
- 就业前必须知道的那些事!【超干货,持续更新编辑】
- 错误Ox80071AC3:无法完成操作,因为卷有问题。请运行chkdsk并重试(解决方法)
- 基尼系数计算的两种方法:python实现 简单高效
- 为什么使用独热编码_什么是独脚架,何时应使用?