私はC++でROSのコードを書いているんですが、補完機能が使えないとdebugが大変。以前ROSを入れたラズパイに入れようとしたもののROSが入ってないと補完出来ないため、ひとまず仮想マシン上でやることにしました。
目次
- 目的とROSに関して
- Ubuntu
- VMware
- ROSのインストール
- VScode
- 雑記
- 参考
目的とROSに関して
ROSはロボットソフトウェアプラットホームで、ロボットのプログラムをやる場合にメリットがたくさん。ROSを利用するには別にOSを用意する必要があり、一般的にUbuntuやLinuxが利用されています。
=>過去記事[Raspberry Pi 3 B+ + Ubuntu MATE + ROSのセットアップ]
私はコードはwindows上のVScodeで書いていますが、これではTabで補完できないのですべてのコード自分で書かなくてはならず、タイプミスがかなり多くて困っています。そこでエディタをパワーアップしたいんですが、補完機能を使用するにはROSが必要であり、windowsと相性が悪いとよく言われます。
この記事の目的はROSのコードを補完してくれるエディタを用意することです。
windows10, intel CORE i5 2.3GHz 2.40GHz 実装RAM 4.00GBです。VScodeをインストールして以降、デュアルディスプレイで作業すると重いかも知れませんのでご注意ください。
Ubuntu
Ubuntu is 何 =>
過去記事[Raspberry Pi 3 B+ + Ubuntu MATE + ROSのセットアップ]
Ubuntu は、Linuxベースで無償で提供されており日本人コミュニティのサポートが厚いOSです。 本来はラズパイに合わせてubuntu 16シリーズを入れるべきでしたが、間違って ubuntu 18.04を入れてしまいました。 参考のQiitaによると、ROSのバージョンはubuntuのバージョンが対応していないと動かないらしいので、注意してください。
最新の長期保証版はUbuntu 18.04で、過去の記事で入れたUbuntu MATEは16.04という扱いです。 以下からIOSファイルをダウンロードしてください。
ROS | Ubuntu |
---|---|
Kinetic | 16.04 |
Melodic | 18.04 |
VMware
仮想環境を構築します。仮想技術とは、ソフトウェアを活用してハードウェアを再現することで、限りある計算資源がジ歳以上にあるように見せる技術です。
要するに、本当はない架空のPCを用意するようなものです。
VMwareさんの「VMware Workstation Player 15」を使用します。ダウンロード/無償製品のダウンロードからVMware Workstation Playerのfor windowsをインストールします。
Windows または Linux PC 上での仮想マシンの実行に最適な製品です。管理対象の企業デスクトップの配信、教育機関での学習やトレーニングなどの用途に使用できます。
VMware Workstation Player の試用 -VMware より引用

インストーラを起動し、さっきダウンロードしたubuntuをVMにインストールをして、今回私はメモリが残り少ないのでFドライブを指定しました。ここまで10分くらい。


この後結構かかります。途中キーボードを聞かれましたが、私はgeneric101でした。しばらくすると終了してホーム画面がでます。

この時、横でメモ用にwindowsのVScodeを開いていたらだいぶ遅かったです。仮想環境のコア数を設定します。VMware上でPlayer(P)/設定/フリプロセッサを4にすます。動きが多少スムーズになりました。

ROSのインストール
ROS merodicを入れました。Ubuntu18をVMにインストールしてしまったが故の過ち。以下は入れるバージョンによってmerodicの部分を適宜kineticに変換してください。 下記コードを実行します。詳細は過去記事へ。
$sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$sudo apt update
$sudo apt install ros-melodic-desktop-full
$sudo rosdep init
$rosdep update
$echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc //毎回sourceが読み込まれるように設定
$source ~/.bashrc
$roscore //テスト用に実行
このsourceでは、ROSをインストールしたディレクトリに自動で環境変数を登録してくれるスクリプトファイルを読み込んでいます。
以下のように表示されればOK。

作業ファイルの初期化をします。ROSでは専用ビルドシステムcatkinをcatkin_ws上でおこないます。 catkin_wsを作成、初期化
$mkdir -p catkin_ws/src
$cd catkin_ws/src
$catkin_init_workspace
$cd ~/catkin_ws
$catkin_make
ROSでは今後catkin_ws上で作業することになります。ウィキペディアによれば「catkin」という名前は開発したウィローガレージ社のウィロー(Willow = ヤナギ)の木にみられる尾状花序に由来するそうです。
VScode
VScodeを入れます。ページからダウンロードして使用します。
Ubuntu上でDebian、Ubuntu用の.debファイルをダウンロードしてインストールします。コマンドからやる場合は以下を入力します。
$cd ~/ダウンロード
$sudo dpkg -i code_*.deb
インストールができたら拡張機能をいじって行きます。まずは下記コマンドまたはVScodeアイコンをクリックして開きます。
$code
左上の縦に並んだアイコンのうち一番下の四角マーク「拡張機能」を選択して、検索バーを使ってインストールしたい拡張機能を入力していきます 。インストールしたのは「Japanese Language Pack for Visual Studio Code」「C/C++」「Python」「ROS」「CMake Tools」「CMake」です。 インストールしたらVScodeを再起動して、ファイル/フォルダーをワークスペースに追加 からcatkin_wsを追加します。

するとcatkin_ws/.vscodeディレクトリに設定ファイル c_cpp_properties が作成されているので、これを編集します。

c_cpp_properties.jsonの変更点
"includePath": [
"/opt/ros/melodic/include",
"$HOME/catkin_ws/devel/include",//ここ
"/usr/include"
],
以降はこれで作成したコードを使用します。
ここでROSの設定に戻って、自動でソースを読み込むようにしつつ、コマンドを加えておきます。
$code ~/.bashrc
# Set ROS melodic
source /opt/ros/melodic/setup.bash //ここはすでに書き込んであります。
source ~/catkin_ws/devel/setup.bash
# Set alias command
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'
$source ~/.bashrc //読み込み
ここで試しに下記を実行してみます。
$cs
~/catkin_ws/srcに移動していたらOKです。 次回起動するときはVMwareで△マークでパワーオンします。
雑記
kineticのが場合はmelodicの部分を書きかえばOKのはずです。しばらく使ってみて、ROSのバージョンの違いでどんな違いが出るかわかったら追記しようと思います。 少なくとも今週やっていた参考本の Scamperによる ROS & Raspberry Pi製作入門 の「topic」「service」「param」の章では記法に変化は見つかりませんでした。