LoginSignup
3
6

More than 3 years have passed since last update.

Dockerでデンソーのrosを動かす

Last updated at Posted at 2020-01-28

はじめに

'20/1/30追記:nvidiaドライバ版書きました→https://qiita.com/kineneticnamaco/items/1a981243aa1118d55749

デンソーの人協調ロボット「Cobotta」を触る可能性が出てきたため勉強しています。

CobottaはROSでプログラミングができるようで、
デンソーが必要なパッケージを公開しています。
http://wiki.ros.org/denso_robot_ros/ja

ROS初心者なのであんまり分かっていないのですが、
ROSにはアームを目的の位置まで動作するための起動計算をする、
といったシミュレーションも行えるそうで、画面上でロボットを動かせます。
それだけでも面白そうですよね。

ただ、個人で買うには高い(amazonで200万円強)のもあって、
Qiitaでcobottaを検索しても1件しか出てこないなど、
ネット上であまり情報が見つけられませんでした。

自分の知識の整理がてら記事にしていきたいと思います。

今回は、DockerでROSの実行環境を構築し、
上述のパッケージに入っているVS-060を表示するところまでやります。

cobottaは標準では入ってませんが、cobottaのurdfファイル(ざっくりいうとロボットの形状データ)の生成方法も
デンソー公式で出しているようなので、後々挑戦します。

できること

以下の通り。

Screenshot2020-01-28-22-13-48.png

とりあえず標準で入っているgazeboを動かしています。
表示がおかしい気もしますが、正しい表示が何かもわかってないのでそのうち改善。

環境

項目 バージョン等
CPU Intel Core i7 860
GPU NVIDIA GeForce GT730
Mem 8GB
OS Ubuntu 18.04.3 64bit
Docker 19.03.5
GPU driver xserver-xorg-video-nouveau-hwe-18.04 1:1.0.16-1~18.04.1

方法

まずはDockerfileを作成。
githubに上げる形でもいいと思うのですが、大した行数でもないので直書きです。
(使い方・連携の仕方がわからないだけです、そのうち勉強します。)

bash
$mkdir ros_test
$cd ros_test
$nano Dockerfile

中身はこんな感じ。

Dockerfile
FROM osrf/ros:kinetic-desktop-full
RUN apt-get update apt-get install ros-kinetic-denso-robot-ros -y
RUN echo "source /opt/ros/kinetic/setup.bash" >> /root/.bashrc

ざっと中身を説明していくと、
1行目:osrf(rosのファウンダ)が出しているDockerイメージを引っ張ってくる
2行目:冒頭のdensoのパッケージをインストール
3行目:ros関係の環境変数等を仕込むように.bashrcに追記
となります。

続いてイメージをビルド。

bash
$sudo docker build . --tag ros_test

dockerコンテナ側のGUIアプリを走らせますので、
dockerホスト側でそれを受けられるように開放します。
「xhostはセキュリティ的によろしくない」とは聞きますが、
localhostのrootユーザだけなら大丈夫なんですかね?よく知りません。

bash
$xhost + local:root

そしてdockerコンテナを走らせます。

※'20/3/3修正
いったんbashで起動し、docker記載のros周りの環境変数が通るようにしてます。

bash
$sudo docker run -ti --rm --net=ros --name master -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ros_test /bin/bash

コンテナが立ち上がったところでrosを起動します。

bash
#roslaunch denso_robot_gazebo denso_robot_gazebo.launch 

その他

以下ちょっとした話。

なぜdocker使うの?

バージョンの整合を取って環境をまるっと作るのが楽ちんだから。

今回のケースだと最終的にデンソーが出しているrosパッケージを入れる必要があるわけですが、
このパッケージが対応しているrosのバージョンはkineticになります。
そしてkineticを動かすubuntuの推奨バージョンは16.04です。

直接インストールでもいいのですが、この手の環境構築ですんなり行った経験があんまりありません。
加えて、今手元にあるOSが18.04だった場合、OS再インストール?とか馬鹿馬鹿しいですよね。

dockerのrosイメージについて

2パターンあります。
docker公式イメージ:https://hub.docker.com/_/ros
osrfのイメージ:https://hub.docker.com/r/osrf/ros/

今回はosrfの方を使ってます。desktop-fullとかあって充実しているのはこっちのほう。
ただ、Dockerfileを追っていくと、osrfイメージもdocker公式イメージをFROMしているように見えるので、
どこまでほしいかで決めたらいいと思います。

グラフィックドライバについて

nvidiaのドライバを入れてしまうと、上述のコマンドを叩いていってもエラーを吐いてguiが走りません。
nouveauドライバをおとなしく使うか、nvidia-dockerを使ってちゃんとコンテナがグラボを触れるようにする必要があります。
参考:https://qiita.com/tnarihi/items/c0f8621a7dca5f1a0a62

nvidia-dockerを使うとDockerfileにも手を入れる必要があったりと手間が増えるのと、
nvidia環境じゃない人向けだと混乱かもと思い、今回はやりませんでした。

そのうちしれっとnvidiaドライバで進めようと思います。

おわりに

いいグラボがほしい。以上。

参考文献

変更履歴

  • 2020/01/30 NVIDIAドライバ版へのリンクを冒頭にはる
  • 2020/3/3 最後のところで動かないバグがあったので修正
3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6