kylin V10 +docker +Ros

一、前言

麒麟系统下运行ros的daocker镜像,国内资源查阅可参考的并不多。在经历一番挫折之后,今天初步实现kylin V10 系统下使用docker运行起ros测试程序小乌龟及rviz 等,说明配置初步完成。鉴于现有网络上参考资源不多,故在此熬夜将配置过程分享与众,愿有抛砖引玉之效。

网上搜索了许多,linux系统下关于ubuntu、centos 资料颇多,介绍也颇为详尽。因麒麟系统V10 与ubuntu 16.04 相近,故实现过程主要是借鉴ubuntu 系统下docker ros的安装。

相信看到本文的朋友,之于docker、ros的基本概念和操作都有所了解。本文接下来的介绍需要读者具备基本的docker 、ros知识,基本操作在下文中无冗余介绍说明,主要梳理操作关键流程。

另外,本人至于ros了解不多,在此关于ros的一些调试还是在同事指导下完成,特此表示感谢!

二、ubuntu 系统下测试

本人本机系统:

Linux version 5.4.0-113-generic (buildd@lcy02-amd64-053) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #127~18.04.1-Ubuntu SMP Wed May 18 15:40:23 UTC 2022

操作过程主要参考,Docker内运行ROS(melodic版本)以及使用Rviz_冷色调的夏天的博客-CSDN博客_docker rosDocker内运行ROS(melodic版本)以及使用Rviz写在前文Docker的安装以及介绍本文就不再累述了,安装Docker的版本任意,但是要注意的一点是你是ARM板子还是x86的板子,一般在ARM板上实现上述功能较为麻烦,如果是在ARM板子上使用Docker+ROS的话可以参考这篇文章http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration#nvidia-docker1在ROS的官网上有教程,但是还是有些坑的,如果你使用的是Nvihttps://blog.csdn.net/qq_40695642/article/details/117607446

按照流程操作,顺利实现。

三、麒麟系统下测试

1、按照ubuntu系统下的操作流程在kylin V10系统中操作,发现在build镜像时可以通过,但是在运行容器时会出错。 

分析问题:看输出的错误信息,有提示系统架构不匹配。接下来就是查找符合麒麟系统架构的ros镜像。

2、查找镜像

查看自己麒麟系统架构,为arm64 架构。

进入docker镜像官方网站,Docker Hub

注册自己的账号,账号必须注册,否则拉取镜像会遇到麻烦

在搜索框输入 ros 搜索,选择osrf /ros

               跳转至,Docker Hubicon-default.png?t=M4ADhttps://hub.docker.com/r/osrf/ros

在左侧找到Architectures
Type    Status
amd64    Build Status
arm32v7    Build Status
arm64v8     Build Status 

选择点击arm64

然后在flitter tag 过滤框中输入kinetic ,选择依据如下

 注:

kinetic ros  对应ubuntu16.04

melodic ros  对应ubuntu18.04

noetic ros  对应ubuntu20.04 

我选择的第一个镜像及标签,拉取镜像: docker pull arm64v8/ros:kinetic-perception-xenial

3、rviz 界面实现

首先,参考docker/Tutorials/GUI - ROS Wikiicon-default.png?t=M4ADhttp://wiki.ros.org/docker/Tutorials/GUI

采用The simple way:

   第一步, compromise the access control to X server on your host.

xhost +local:root # for the lazy and reckless

   第二步,运行容器,配置相关参数

docker run -it \
    --env="DISPLAY" \
    --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    arm64v8/ros:kinetic-perception-xenial \  
    /bin/bash

4、进入容器

进入容器后,apt-get install 指令处于瘫痪状态,由于容器默认共享本机网络资源,如本机可以联网的话毋庸置疑容器中的网络问题,首先使用apt-get update 更新资源,之后使用apt-get install畅通无阻。

按照需求运行 容器ros_entrypoint.sh脚本,运行rviz 可以运行,但是操作rviz会崩溃弹出。

5、升级ros

参考:linux(ubuntu)安装ROS系统_gxt_kt的博客-CSDN博客_linux安装roslinux安装ROS系统官方安装教程,建议对比使用http://wiki.ros.org/cn/noetic/Installation/Ubuntu文章目录linux安装ROS系统1.确定软件更新设置2.执行命令(相应准备)2.1 更换源2.2设置密钥2.3更新3.安装ROS4.添加环境变量1.确定软件更新设置勾选画的四项2.执行命令(相应准备)ctrl+alt+T打开终端2.1 更换源将国外更换为国内源,以下任选一个更换中科大源sudo sh -c '. /etc/lsb-rehttps://blog.csdn.net/my_id_kt/article/details/123753771

5.1 更换源
将国外更换为国内源,以下任选一个

更换中科大源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
更换清华源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

5.2设置密钥
执行以下命令

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

5.3更新
sudo apt update

5.4安装ROS
执行以下命令安装ROS,选择的版本是noetic,安装桌面完全版

sudo apt install ros-kinetic-desktop-full
 

6 测试验证

rviz 及小乌龟程序验证正常

四、结语

以上过程只是实现了基本功能,后续可能需要自己创建一个更加精简的镜像,望有志之士尽快实现并上传共享于众,以简化在国产麒麟系统中docker ros应用。

后续作者本人也会进行相关镜像的精简,有志同者可留言交流!

 

你可能感兴趣的:(docker,kylin,自动驾驶,容器)