開発環境

ロボットシステムの開発環境に使われている要素の概要を理解する

スライド

https://docs.google.com/presentation/d/1-q6zq3vV91GTj7mw9uqwT4B8LyHDpFHBNVi4lEyCa5A/edit?usp=sharing

Learn

Linuxコマンド

command 説明option
lsディレクトリ内のファイル・ディレクトリの表示-l: 詳細を表示 -a: 全て表示
mkdirディレクトリ作成
cdディレクトリ移動
mvファイル移動
rmファイル削除-r:ディレクトリ内を再起的に削除 -f:強制削除
cat

ssh

ssh <username>@<hostname> -p <port> -i <identity_file>

エディタ

  • vim
    • チュートリアル: vimtuter
  • emacs

git/GitHub

  • gitとは
    • add
    • push
    • pull
    • fetch
    • clone
    • merge
    • reset
  • GitHubとは

docker

  • Dockerとは

  • DockerFileのビルド

    docker build -t <image_name>:<tag_name> -f <Dockerfile> <relative_dir>
    
  • Docker Image

    # Docker image一覧
    docker images
    # Docker Imageのダウンロード
    docker pull <image_name>:<tag_name>
    # 削除
    docker rmi <image_id>
    # 不要なDocker imageを消す
    docker image prune
    
  • Docker Container

    # Docker containerの起動
    docker run <image_name> <command>
    # Docker container一覧
    docker ps -a
    # Docker containerに接続
    docker exec -it <container_name> bash
    

    docker runでよく使うオプション

    • -it
      • 標準入出力有効になる
    • --name <container_name>
      • コンテナの名前の指定
    • --rm
      • コンテナを抜けた際に自動的にコンテナを削除する
    • --gpus all
      • コンテナに全gpuを渡す
      • gpuの個数を指定する場合は all の代わりに数字(0, 1,…)
      • gpuを指定する場合は --gpus '"device=0,1"'
    • -v <host/path/to/dir:container/path/to/dir>
      • コンテナ内にホストのディレクトリをマウントする
    • -p <host_port>:<container_port>
      • ホストのポートをコンテナのポートにマップする
      • コンテナ内でwebサーバを動かす場合などに使う
    • --net=host
      • コンテナとホストでネットワークを共有する(IPアドレスなどが同じになる)
      • ROSノードをコンテナ内で動かす場合などはこれを使うと楽
    • --privileged
      • コンテナからのデバイスへのアクセスを許可
      • コンテナからWEBカメラにアクセスしたいときなど

演習

演習には個人PC, 開発PC, ルンバに搭載されているjetsonの3種類のコンピュータを用います。

開発PC : robot_dev系, hsr_dev系

jetson : roomba_dev系

【ssh】開発用PCにsshする

個人PCから開発PCにsshする

(個人PC):~$ vim ~/.ssh/config
(個人PC):~$ ssh robot_dev2

sshに成功すると

robot_dev2@robot-dev2:~$

などと表記が変わり、開発PCに接続できたことが確認できます。

【Linuxコマンド】グループのディレクトリを作成し移動する

(開発PC):~$ mkdir group_a
(開発PC):~$ cd group_a

【git】roomba_hackリポジトリをcloneし移動する

(開発PC):~/group_a$ git clone https://github.com/matsuolab/roomba_hack.git
(開発PC):~/group_a$ cd roomba_hack
(開発PC):~/group_a$ ls

https://github.com/matsuolab/roomba_hack をそのままダウンロードできたことが確認できると思います。

【git】ブランチを確認する

git branchコマンドを使ってみましょう。

(開発PC):~/group_a/roomba_hack$ git branch

【docker】roomba_hackの開発環境のdocker imageをビルドする

shellファイルを実行してビルドを行います。

(開発PC):~/group_a/roomba_hack$ ./BUILD-DOCKER-IMAGE.sh

shellファイルの中身をcatコマンドで確認してみましょう。

(開発PC)2:~/group_a/roomba_hack$ cat BUILD-DOCKER-IMAGE.sh

細かいところは気にしなくていいですが、ファイルの最後の

docker build . -f docker/${DOCKERFILE_NAME} -t ${IMAGE_NAME}:${TAG_NAME} --build-arg BASE_IMAGE=${BASE_IMAGE}

でビルドが行われていることが確認できると思います。

【ssh】jetsonにsshする

開発用PCからルンバに載っているjetson nanoへsshします。

(開発PC):~/group_a/roomba_hack$ ssh roomba_dev2
roomba_dev2@roomba-dev-jetson2:~$ 

先頭の表記がroomba_dev2@roomba-dev-jetson2と変わり、jetsonへ接続されたことがわかります。

jetsonでも同様にグループのディレクトリを作成し、移動し、roomba_hackリポジトリをcloneしてみましょう。

【ssh】VNCを使う

個人PCから開発PCにsshで接続

(個人PC):~$ ssh robot_dev2 -L 5900:localhost:5900

手元のVNC viewerでlocalhost:5900を開く

Next