1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerコンテナ内でのROS2開発環境の構築とRVizのブラウザ表示(M1 MacBook)

Last updated at Posted at 2024-10-23

 初めまして.私はあるロボット開発チームのメンバーとして,ROS2を使った自律走行ロボットの開発を行なっています.
 M1チップ搭載のMacBook環境でROS2の開発を進める方法としては,まずUbuntuの仮想環境を利用する方法が考えられます12.私も以前はUTMを用いてUbuntuの仮想環境を構築しその上で開発を行っていましたが,UTMは動作が不安定で,突然フリーズすることが何度もありました.
 そこで軽量かつ動作も安定していて,情報も豊富なDocker3を使うことにしました.私はロボットの中でも特にカメラによるPerceptionの部分を担当しています.
画像処理や画像認識の開発をする上で実際に画像を出力して確認したいことがあるので,ブラウザ経由でGUIを使用できるよう環境構築を行いました.

概要

今回は以下のGithubを参考にしました.

環境構築の流れ

まずはGithubからリポジトリをクローンします.
ros2-docker-devというディレクトリが生成され,必要ファイル群がダウンロードされます.次にそのディレクトリに移動します.

git clone https://github.com/adeeb10abbas/ros2-docker-dev.git
cd ros2-docker-dev

次にダウンロードしてきたDockerfileからイメージをビルドします.

docker build -t ros2-dev .

ビルドが正常に完了したら,環境構築は完了です.

動作確認

まずは環境変数の設定です.

export ROS_DEV_CONTAINER_NAME=ros2_dev_container
export ROS_PROJECT_PATH=$(pwd)

ROS_DEV_CONTAINER_NAMEはコンテナの名前で,ros2_dev_containerに設定しています.ROS_PROJECT_PATHは,一旦現在のディレクトリに設定しています.
ROS_PROJECT_PATH は、ROSプロジェクトのソースコードや設定ファイルが格納されているホスト側のディレクトリを指定します.これを指定することで、Dockerコンテナ内で編集することができるようになります.

先ほどビルドしたイメージからコンテナを起動します.ビルドした時と同じディレクトリで以下のコマンドを実行しましょう.

docker-compose up

今回は同ディレクトリ内のdocker-compose.ymlに定義された2つのコンテナ(ros2_dev_containerとros2-docker-dev-novnc-1)を起動させる必要があります.
以下のコマンドでコンテナの起動状態を確認してみましょう.新たに二つのコンテナros2_dev_container,ros2-docker-dev-novnc-1 が起動中になっていることが確認できるはずです.

各コンテナの役割はこちら

ros2_dev_containerはROS2(Robot Operating System 2)の開発環境を提供するものです.このコンテナにはそのためのツールやライブラリがインストールされています。この環境内で開発を行います.
ros2-docker-dev-novnc-1はVNCサーバーを立ち上げ、リモートデスクトップ環境を提供するものです.VNC(Virtual Network Computing)はリモートデスクトップ環境を提供するためのプロトコルで,このコンテナではnoVNCを使用してブラウザを介したリモートデスクトップアクセスが可能です.特に,RVizなどのGUIツールを使用するのでこちらのコンテナも起動しておく必要があります.

まとめるとros2_dev_containerは開発環境の提供,ros2-docker-dev-novnc-1はその開発環境にブラウザでリモートアクセスするためのGUI環境を提供するものです.

docker ps
#出力
CONTAINER ID   IMAGE                 COMMAND                   CREATED        STATUS          PORTS                    NAMES
xxxxxx123456   ros2_dev_container    "/ros_entrypoint.sh …"    *** ago       Up *** minutes                            ros2_dev_container
yyyyyy654321   sample/novnc:latest   "/app/entrypoint.sh"      *** ago      Up *** minutes   0.0.0.0:8080->8080/tcp   ros2-docker-dev-novnc-1

起動が確認できたら他のターミナルやVScodeからアタッチすることで開発・実行することが可能になります.
ターミナルからアタッチする時は,先ほど指定したコンテナ名に注意して以下のコマンドを実行します.

docker exec -it ros2_dev_container /bin/bash
#起動後,コンテナ内でターミナルが開始される
root@21cb948dd945:/# ls
bin  boot  dev  etc  home  lib  log  media  mnt  opt  proc  root  ros2_ws  ros_entrypoint.sh  run  sbin  srv  sys  tmp  usr  var
root@21cb948dd945:/# cd ros2_ws
root@21cb948dd945:/ros2_ws# ls
src

参考文献

  1. How To Install ROS 2 in Ubuntu 22.04 On M1 Mac - The Robotics Space

  2. Apple Silicon MacでもROSでgazeboとUSBデバイスを全部使いたい! #シリアル通信 - Qiita

  3. 「Docker」を全く知らない人のために「Docker」の魅力を伝えるための「Docker」入門 #VirtualBox - Qiita

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?