2018年9月24日月曜日

UWSimで遊ぶ日々 開発環境の準備

***CAUTION!!!***
新しく水中ロボットのシミュレーションを始める方には、UUV Simulatorをお勧めします。
UWSimはロボットのモデルを1つの剛体として登録するので、後々アームを使ったり合体分離をしたいときに対応できません。
***CAUTION!!!***

前回でハードウェアが準備できましたので、ソフトウェアのインストールを進めていきます。
公式ページのこちらに該当する内容です。(英語です)

UWSimを動作させるために必ず必要になるソフトは以下の3種です。
 1. Ubuntu Linux
 2. ROS
 3. UWSim
では1つずつ見ていきましょう。

1. Ubuntu Linux 
UWSimはLinux 環境で動作します。公式ではUbuntu 9.10から14.04で動作させていますが、それより新しくても問題なく動作しました。私はUbuntu 16.04 64bit版を使用しています。
インストールは色々な所で詳しく説明されていますので、ここでは簡単な手順と注意事項だけ触れます。

!!!注意!!!
インストールは英語環境で行ってから日本語化することをおすすめします。
ROSやUWSimはGUIでなくコマンドラインからの入力を多用し、フォルダーの移動などをします。日本語でインストールをすると、主要なフォルダーが日本語で用意されてしまうため、コマンドラインで英数字と日本語を入力しないといけません。コマンドラインでの操作に慣れてきたときに大変不便な思いをします。
同様の理由で、ファイル名も半角英数字だけでつけることをおすすめします。

○インストール手順
1.公式ページからUbuntu のイメージファイルをダウンロードする。
2.USBまたはCDでインストールイメージを作る。
3.インストールするPCのBIOS画面で、作成したインストールメディアからブートを行う設定をする。
4.メディアを接続してインストールを開始する。
5.インストール完了まで待つ。
6.日本語化する。

以上でUbuntu Linuxのインストールは完了です。

2.ROS
Ubuntu Linuxをインストールしたら、その次はROSのインストールを行います。UWSimはROSでメッセージをやり取りするロボットを使うことを前提にして作られています。
こちらも様々なバージョンがあります。UWSimを簡単にインストールしたい場合はgroovy、それ以外の場合はROSの公式がサポートしているLinux のバージョンとの組み合わせがありますので、そちらを選ぶのが良いでしょう。私はUbuntu16.04に合わせてKinetic Kameをインストールしました。

インストールはバージョンによって少しずつ入力が異なりますので、ご自身のインストールしたいバージョンに合わせて下記を参考に進めてください。
Kinetic Kameの場合
groovyの場合

3.UWSim
ここでやっとUWSimのインストールになります。
インストールしたROSのバージョンにより、apt-getが使える場合と、自分でコンパイルをかける場合があります。

○apt-getの場合
ROSのバージョンがgroovyの場合、公式がapt-getパッケージを用意してくれています。
ターミナルから以下のコマンドを入力するとインストールが完了します。
apt-get install ros-groovy-uwsim

○apt-get以外のインストール手順
ここではROSのバージョンがKineticの場合で進めていきます。
他のバージョンの方は、コマンドのkineticの部分を自身が使うバージョンに変えて進めてください。

1.ワークスペースを作成し、パッケージのダウンロードをします。
- other: {local-name: /opt/ros/kinetic/share/ros}
- other: {local-name: /opt/ros/kinetic/share}
- other: {local-name: /opt/ros/kinetic/stacks}
- setup-file: {local-name: /opt/ros/kinetic/setup.sh}
- git: {local-name: src/underwater_simulation,
        uri: 'https://github.com/uji-ros-pkg/underwater_simulation.git', version: kinetic-devel}
rosws update

2.コンパイルをします。
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
catkin_make install

インストールが終わったら、UWSimを起動してみましょう。
ターミナルを2つ用意し、先に片方でroscoreを動作させてからもう片方でUWSimを起動します。
・ターミナル1
roscore
・ターミナル2
rosrun uwsim uwsim

プールの中に黄色いロボットが入っているウィンドウが立ち上がれば成功です。

中央のプールの中の黄色いのが水中ロボットです。

2回目以降に起動するときは、uwsimが格納されている場所へのパスが通っていない場合があります。
以下のコマンドを入力し、パスを通します。
cd catkin_ws
source devel/setup.bash

今日はここまで。

2018年8月19日日曜日

UWSimで遊ぶ日々 動作環境の準備とか

***CAUTION!!!***
新しく水中ロボットのシミュレーションを始める方には、UUV Simulatorをお勧めします。
UWSimはロボットのモデルを1つの剛体として登録するので、後々アームを使ったり合体分離をしたいときに対応できません。
***CAUTION!!!***


みなさんはUWSimという水中ロボットのシミュレータをご存知でしょうか?

 公式HPはこちら

 UWSimはスペインのJaume I Universityで作成された、ROSとLinux環境で動作するフリーの水中ロボットシミュレータです。
 日本語で解説している記事が見つかりませんでしたので、ここで紹介を進めて行きたいと思います。

 まずは動作環境を用意するところからです。
公式HPでは次の条件で動かしているとあります。

 ・プロセッサ MacBook Pro 2.26 Ghz Intel Core 2 Duo
 ・メモリ   4 GB DDR3
 ・グラフィック NVIDIA GeForce 9400M
 ・OS    Ubuntu 11.04

私の動作環境は次のとおりです。
インストール直後のデモ画面でちゃんと60FPS出ます。

 ・プロセッサ Intel® Core™ i5 CPU 650 @ 3.20GHz × 4
 ・メモリ   4 GB DDR3
 ・グラフィック  GeForce GT 1030
 ・OS    Ubuntu 16.04
 ・ROS     Kinetic Kame

上記環境で動作中のリソースモニターです。

動かした感じですが、プロセッサはこれより低くても動きそうです。
今後ROSのノードがたくさん動くことを考えると、メモリはあまりここから削らないほうが良いでしょう。
グラフィックも念の為程々のものを入れましたが、外付けの一番安いのでも行けそうな気がします。



これにたどり着くまでにWindows環境で動かすことや、古いノートPCで動作しないかなどを試行錯誤してます。
 3Dのモデルを描画する必要があるので、主にグラフィックに依存し、プロセッサやメモリはあまり影響が出ないという結果でした。

古いノートPCを使う場合、マザーボードにGPU機能が組み込まれているかが使用できるかどうかの境目になるようです。
はじめは10年くらい前のFMV Core 2 DuoにUbuntu16.04とROSのKineticを入れて使おうと思いましたが、グラフィック性能が足りないのか最大3FPS程度しか出ませんでした。
現在新品で購入できるノートPCならオンボードグラフィックが充実していますので、問題なく動作すると思います。

また、Windows環境でOracle VM VirtualBoxを使って動かす方法では、5年位前のデスクトップゲーミングPCを使いましたがグラフィック性能不足でした。

 グラフィックボードの能力をVirtualBoxに反映することができれば動作すると思いますが、私はその方法が分かりませんでした。


最後は機材の購入です。
合計2万円を目指して機材の準備をしました。
下の構成だと、多少足が出てしまっています。

PCは楽天の中古PCショップで購入しました。ナベキンさんで買いましたが、どこの中古PCショップでも 価格とPCのグレードはほとんど一緒です。
本体がだいたい1万円前後、3000円でモニターオプションがつけられました。
 私が買った時は、Linuxを入れるのでWindowsなしとお願いしたら、多少の割引をしてもらえました。
 最近のグラフィックボードはD-sub15ピンのアナログ端子がないため、モニター費用をケチるとHDMI→アナログ端子かDVI→アナログ端子の変換コネクターが必要になります。

 グラフィックボードと変換コネクターはAmazonで購入しました。
GeForce GT 1030搭載のグラフィックボードとしては玄人志向の製品が最も安かったです。
ロープロファイルのPCを購入したため、ロープロファイルに対応しているのが決め手になりました。
5000円台のグラフィックボードでも十分に動作すると思います。

変換ケーブルはDVI→アナログ端子よりもHDMI→アナログ端子のほうが安い製品が見つかります。
上記の玄人志向の製品はHDMIとDVIの出力が1つずつあるので、手持ちのモニターを確認して繋げられる方法を見つければ良いと思います。

キーボード、マウスは手持ちのものを使用します。
バッファロー製の、無線接続でUSBポート1箇所でキーボードとマウスの両方が使えるものが便利でおすすめです。

今回はここまで。