開発環境
ロボットシステムの開発環境に使われている要素の概要を理解する
スライド
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を開く