開発環境
ロボットシステムの開発環境に使われている要素の概要を理解する
Learn
Linuxコマンド
コンピュータやロボットの研究・開発では、LinuxというOS(Operating System)がよく使用されます。
ROSはLinux(とくにUbuntuというディストリビューション)で動作することを想定されているため、ROSを使うにはある程度Linuxの知識が必要になります。
Linuxについてあまり知らないという方は、前もって調べておくと良いでしょう(参考)。
特に、Linuxコマンドについて軽く知っておくとROS自体の理解もスムーズになります。
"""
ここではLinuxのコマンドを十分に説明できないので、コマンドの例を挙げることに留めます。
詳しいサイトに沿って自分で使いながら覚えていくことをお勧めします。
"""
# カレントディレクトリ(自分が今いるディレクトリ)を確認
pwd
# ディレクトリ内のファイル・ディレクトリの表示
ls
# カレントディレクトリを変更
cd <DirectoryName>
# ディレクトリ作成
mkdir <NewDirectoryName>
# ディレクトリ削除
rmdir <DirectoryName>
# ファイル作成
touch <NewFileName>
# ファイル消去
rm <FileName>
# ファイルの内容を表示
cat <FileName>
エディタ
プログラミング言語でコードを書くときに使用するツールをEditor(エディタ)と呼びます。
テキストファイルを編集するツールなのでメモ帳でも同じ事ができるのですが、エディタには便利な機能が多く、効率よくコードが編集できるようになります。
研究室のPCでは以下の二つが使用できます。
- vim
- シンプルで使いやすいエディタ。
- macだと標準で使える。
- ターミナルで
vimtutor
を実行するとチュートリアルが受けられる.
- ターミナルで
- Windowsだとインストールする必要がある。
- vscode
- visual studio code
- ダウンロードする必要がある
- さまざまな機能を追加でき、とても便利
- 詳しい動画
Git/GitHub
- Gitとは
ファイルのバージョン管理が簡単にできるツール。
使い方を知っておくと開発が快適になります。
- GitHubとは
gitで管理しているファイルを他の人と共有できるようにするサービス。
チーム開発で大変重宝します。
自分が書いたコードを公開して世界中の人に使ってもらったり、他の人が公開しているコードを使わせてもらうこともできます。このサイトもGitHubを使って開発しています。(このサイトのリポジトリ)
公開されているリポジトリの例
Docker
Dockerとは
「データやプログラムを隔離できる」仕組み。
例えば、コンピュータの中でシステムAとシステムBを動かしたいとします。そして、これらは他のシステムCに依存しているものとします。
もし、AがCのver.2にのみ対応していて、BはCのver.3にのみ対応していた場合、Bを実行できるようにCをver.3にしてしまうと、Aが実行できなくなってしまいます。このような場合、dockerコンテナを複数作成し(コンテナI、コンテナIIとします)、
- コンテナIの中にはプログラムAとCのバージョン2をインストールして使い、
- コンテナIIの中にはプログラムBとCのバージョン3をインストールして使用する
のようなことことができます。
コンテナの中の環境はPC本体の環境からは隔離されるため、安全に開発をすることができます(他の人が書いたプログラムが動かなくなるということも防げる)。
ssh
sshを使用することで、開発PCからルンバに載っているjetsonというコンピュータを遠隔で操作することや、各自のPCから開発PCを遠隔で操作することができる。
演習
演習には個人PC, 開発PC, ルンバに搭載されているjetsonの3種類のコンピュータを用います。
開発PC : robot_dev系, hsr_dev系
jetson : roomba_dev系
【Linuxコマンド】グループのディレクトリを作成し移動する
(開発PC):~$ mkdir 23_group_x
(開発PC):~$ cd 23_group_x
【git】roomba_hackリポジトリをcloneし移動する
(開発PC):~/23_group_x$ git clone https://github.com/matsuolab/roomba_hack.git
(開発PC):~/23_group_x$ ls
# 23_group_xディレクトリの中に新しいディレクトリができていることを確認
(開発PC):~/23_group_x$ cd roomba_hack
(開発PC):~/23_group_x/roomba_hack$ ls
https://github.com/matsuolab/roomba_hack をそのままダウンロードできたことが確認できると思います。
【git】ブランチを確認する
git branchコマンドを使ってみましょう。
# ローカルブランチの一覧を表示
(開発PC):~/23_group_x/roomba_hack$ git branch
【docker】roomba_hackの開発環境のdockerイメージをビルドする
# shellファイルの中身をcatコマンドで確認してみます。
(開発PC):~/23_group_x/roomba_hack$ cat BUILD-DOCKER-IMAGE.sh
# ファイルの中身が表示される
# ファイルの最後の
# docker build . -f docker/${DOCKERFILE_NAME} -t ${IMAGE_NAME}:${TAG_NAME} --build-arg BASE_IMAGE=${BASE_IMAGE}
# の部分でDockerイメージのビルドを実行するようです。
# shellファイルを実行してdockerイメージのビルドを行います。
(開発PC):~/23_group_x/roomba_hack$ ./BUILD-DOCKER-IMAGE.sh
「イメージ」とは、dockerコンテナを作成するための素となるもので、コンテナの設計図のようなものです。上のコマンドを実行することで、roomba_hackの開発環境のdockerイメージが作成されます(まだコンテナ自体は作っていません)。
【ssh】jetsonにsshする
開発用PCからルンバに載っているjetson nanoへsshします。
(開発PC):~/23_group_x/roomba_hack$ ssh roomba_dev2
roomba_dev2@roomba-dev-jetson2:~$
先頭の表記がroomba_dev2@roomba-dev-jetson2
と変わり、jetsonへ接続されたことがわかります。
jetsonでも同様にグループのディレクトリを作成し、移動し、roomba_hackリポジトリをcloneしてみましょう。