IDEを多用し初心者に優しいROSの開発環境を作る

以下,intellisenseとデバッガは健康で文化的な最低限度の生活として保証されるべき,と考えているあじのりがお送りいたします.

#忙しい人のためのスクリプト
```
cd ~/Downloads
wget https://github.com/TonyRobotics/RoboWare/raw/master/Studio/roboware-studio_1.2.0-1524709819_amd64.deb
sudo apt install ./roboware-studio*
```

#はじめに
 ｢弘法筆を選ばず｣なんて言いますけれど,プログラミング初心者にとって開発環境の良し悪しは学習意欲に大きく影響します.
そこでこの記事では**『ROSを初めて触る方が,挫折せずに入門書を一周できる環境を作る』**ことを目標として設定し,Roboware Studioを使用したROS開発環境の構築方法と簡単な使用方法をご紹介します.
なお,Roboware公式からIDEの使い方が表記されたPDF資料が配布されているので,詳細についてはそちらをご覧ください.

(2019/12/06 追記)
この記事で｢入門者用｣と明記しているのは,このRoboWare StudioはVisual Studio Codeベースではあるものの,**Visual Studio Code用の拡張機能が一切使えない**ので,初心者以降の方は素直にVS Codeにお好みの拡張機能を組み合わせた環境を使ったほうが良いと思います...

#免責事項
一個人のQiita記事であることを理解してください.

#環境
* OS: Ubuntu 16.04.5
* ROSのバージョン: ROS Kinetic
* 使用する言語: Python, C++
* 導入するIDE:  Roboware Sudio


#ROSのインストール
ROS Wikiに従って作業をすれば詰まることは無いと思います.
http://wiki.ros.org/kinetic/Installation/Ubuntu

dashimaki360さんが作成したこちらのスクリプトをダウンロードする方法でも問題なくインストールできるはずです.
https://gist.github.com/dashimaki360/4d612c845db65a3746e2caab39cf295b#file-ros_kinetic_install-sh

(2019/05/27 追記) ROSのインストールスクリプトを公開されている方がいたのでリンクを貼らせていただきました.

# Robowareを導入する
## Robowareとは
~~公式ホームページ: http://www.roboware.me/#/home~~
(2019/12/6 追記)公式サイトが消滅していました.

Roboware StudioはVSCodeベースのROS開発に特化したIDEです.
Robowareを使うことでプログラミングの本質以外のパッケージ管理や動作中のノードの管理が簡単になります.

##下ごしらえ
以下を実行しておきます.pylintのインストールで

```必要なものをインストールする
sudo apt-get install build-essential　
sudo apt-get install python-pip
sudo python -m pip install pylint
sudo apt-get install clang-format-3.8
```

なお,pylintのインストールをするとき

```
ERROR: Cannot uninstall 'enum34'. It is a distutils installed p
roject and thus we cannot accurately determine which files belo
ng to it which would lead to only a partial uninstall.
```

と出てきた場合は,
`sudo /usr/bin/python -m pip install pylint --ignore-installed`
を実行して無理やり強引にインストールしました.

##Robowareのインストール(2019/12/06更新)
~~まず公式ホームページのトップページからRoboware Studioをダウンロードしてきます.~~
~~ついでにManual pdfもダウンロードしておくと捗るのでオススメです.~~
**公式サイトが消滅している**のでGitHubから各種ファイルをダウンロードする必要があります.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/463f75e3-6446-216d-002b-4f5993858071.png)
↑消滅した公式サイトの図

まずはじめに[RoboWare Studio 1.2.0](https://github.com/TonyRobotics/RoboWare/blob/master/Studio/roboware-studio_1.2.0-1524709819_amd64.deb)をダウンロードしてきます.[公式PDF](https://github.com/TonyRobotics/RoboWare/blob/master/Studio/RoboWare_Studio_Manual_1.2.0_EN.pdf)もダウンロードしておくと良いと思います.使い方などは基本的にこのPDFをみればわかります.


ファイルをダブルクリックすれば自動的にUbuntu Softwareが立ち上がり,インストールが進むはずです.ライセンス事項によく目を通し,同意する場合はチェックをつけてForwardを押します.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/38d7414d-7de7-c6ca-d7fd-e7e3a72ee36e.png)
しばらくして画面右上当たりにインストール完了を知らせる文字が出ればインストール完了です.
すでに古いバージョンのRoboware Studioがインストールされている場合もこの手順で問題ないです.

#Robowareを使ってみる
##ROSのワークスペースを開くor新規作成する
ダッシュボードにRobowareとタイプするか,ターミナルにroboware-studioとタイプすれば起動します.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/d10eab81-4a52-b354-a9cd-c14e6d92cd25.png)
画面真ん中にあるStartからNew Workspace...かOpen Workspace...を選択します.
通常,入門書ではユーザのホームディレクトリ直下にcatkin_wsというディレクトリを作成するよう書かれていると思いますのでそちらに従ってください.
無事ワークスペースを開けたら,画面の左側にワークスペース名とその中にいくつかフォルダやファイルが表示されます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/ac1271c1-4e91-4128-4860-8a5100aa236d.png)

ここでとりあえず一度左上のEXPLORERのすぐ横の選択肢をDebugにした後,緑のハンマーマークを押してcatkin_makeしておきます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/b62b76e0-9212-b0df-95c7-65dd59dea345.png)


##ROSパッケージを新規作成する
画面左側のsrcフォルダを右クリックし,Add ROS Pacageを押します.
パッケージ名を入力すればパッケージが新規作成されます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/66353471-518b-cd80-4634-7e10221adce4.png)

##PublisherとSubscriberを作成する
* C++: 
パッケージ名を右クリックし,Add C++ ROS Nodeを選択して,ノード名を入力すれば完了です.
* Python:
パッケージ名を右クリックし,Add Python ROS Nodeを選択して,ノード名を入力すれば完了です.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/65bba49b-37f8-3fed-a1ee-96d729c948d6.png)

自動生成ではC++もPythonもsrcフォルダ内にコードが生成されますが,pythonファイルは<パッケージ>/scriptsフォルダに入れることが多そうなので,scriptsフォルダを作り,その後自動生成されたPythonファイルをドラッグアンドドロップしておきます.

(任意)Pythonファイルに実行権限がないため,ターミナルから自動生成したファイルのディレクトリまで進んで実行権限を渡してあげます.
下の図のように`chmod +x <ファイル名>`としてあげればOKです.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/5c5e0afd-4704-2a71-2131-13ebb8829d5a.png)

Roboware StudioではPub/Subのサンプルプログラムが自動生成されます.
ファイルが生成されたのを確認できれば再度緑のハンマーマークを押してcatkin_makeします.
C++でコードを書いた場合,画面左側のNodeという部分に生成したパッケージ名とノード名が現れます.(Pythonで書いた場合は,ここにノード名は表示されないっぽいですが詳細は不明です)


##ノードの実行･デバッグ
まずはじめに画面上のROSタブからRun roscoreを押しroscoreを実行します.

* C++
先にデバッグしたい対象のノードのcppファイルを開き,適当な場所にブレークポイントを1つ置いておきます.ブレークポイントは行数が表記されている部分のすぐ左側をクリックすれば設置できます.赤い丸が表示されれば準備完了です.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/10bf65bd-7b92-1c3d-97d7-467f3d7a24fc.png)
それでは,先ほどの手順でNodeタブ内にノード名が追加されたと思いますので,そちらをクリックします.
その画面の一番上にある｢Debug this file｣を選択します.先ほど選択したブレークポイントの箇所で処理が止まり,行が黄色くなれば成功です.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/f12ae63f-7843-ade6-21c4-a6aa560d5dc1.png)
あとは画面左側の上から4つめの虫マークを押せば各種デバッグ情報を閲覧することができます.

* Python
画面左側の上から4つめの虫マークか画面上側のDebugタブからデバッグを開始します.
デバッグの設定は初期設定ではC++となっているのでPythonを使用している場合は変更したのち緑の矢印を押すとデバッグを開始できます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/b6847b6c-a477-6db8-80e9-0aa1c5f2852e.png)

デバッグ画面の使い方の詳細についてはVSCodeの解説サイトを見てください.

##その他各種作業
パッケージを右クリックすれば各種作業が行えます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/17756377-0449-22b2-6509-7728aa6c5a3f.png)
Launchファイルは以下のように🚀マークで表示されるので,右クリックし,Run Launch fileを押せば実行されます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/bee4c068-1327-9a81-fa59-0967f9c1de20.png)

画面左側の,点が9個並んでいるところをクリックすれば現在実行されているノードや,トピックなどを表示することができます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/e0fab4a9-04fa-d807-555d-bf898f68b71b.png)

画面左側の,上から5番目の四角っぽいアイコンを押せば,各種ROSパッケージを管理することができます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172012/b419cf6a-a402-571e-08c0-d4f37b7a6054.png)

#Robowareをアンインストールする
ターミナルで`sudo apt remove roboware-studio`を実行すれば終わり.

---
こんなところでしょうか.
とにかくインストールしてからデバッグ機能を使うところまでサクッと進めるので,とりあえずROSを触ってみたいと思う人にとってはなかなか魅力的ではないかと思います.

以上,あじのりがお送りしました.何かあればTwitter(@hakumai_no_tomo)まで.