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箇所でキーボードとマウスの両方が使えるものが便利でおすすめです。

今回はここまで。

2018年4月4日水曜日

水中ロボットMark3を自作しよう ケースのグランド穴あけ

前回のイントロで購入したケーブルグランドを耐圧容器(ケースと呼びます)に取り付けるためには、ケースに穴をあけなければいけません。

前回:イントロとケーブルグランドの購入

購入したAVCのケーブルグランドのデータシートを見ると、取付用の穴は標準12.5mm、12.3mm~12.8mmの間になるようにという風に書かれています。
これは、グランドのケース側のねじがM12で作られているためのようです。
*M12:おねじ側の最大外径部分が12mm、めねじ側の谷部分が12mmになっているねじのこと
使うドリルの径の候補としては、12mm、12.5mm、13mmあたりが考えられます。

AVCのデータシート
MGB12L-05B(またはG)はMネジケーブルグランド(B型/長足)の表にあります。

今回使用したのはモノタロウプライベートブランドの12.5mm木工用ドリル、インパクトドライバ、ドリルチャック、下穴用のドリルです。



大学や高校であれば直立ボール盤+12.5mmの金属加工用ドリルで簡単にできそうですが、そんなものはご家庭に置いておいたら家族から怒られてしまいます。
ハンドドリルで使える工具は6.35mm角の共通受け部を持った工具か、10mm以下のドリルを掴めるチャックが主流なので、10mmより大きな穴をあけるのは地味に難易度が高かったりします。
このあたりの加工の制約がホビイストの悩ましいところです。
安めのハンドドリルを使うと出力が足りず、ドリルが回りません。
新しく買う場合は、最低でもコンセント付の少し大きめのドリル、またはバッテリーが10V以上のものを選びましょう。

ドリルチャックは6.35mm角の共通受け部にストレートドリルを取り付けるための治具です。
手で締められるタイプとチャックと呼ばれる工具を使用して締めるタイプの2種類があります。
写真は手で締められるタイプですが、チャック式のほうがドリルが緩みにくいためおすすめです。

下穴用のドリルは3mm以下のものであれば大丈夫です。
12.5mmのドリルがずれないようにするのが目的です。


まずは寸法を測って穴を開けたい位置を検討します。



今回は1面に3つの穴を開けたかったので、できる限り均等な位置に開けれるような寸法としました。
また、今回の穴あけは多少ずれてしまっても影響はほとんどありませんので、検討した紙を切り出し、張り付けて位置決めの代わりにしてしまいます。

こんな感じです。


下穴用のドリルで穴を開けた後・・・



12.5mmのドリルで穴を開けます。



今回の12.5mmドリルは木工用で、プラスチック加工用ではありませんので、ここで少し無理をしてドリルを押し込むことになります。
ドリルのイメージ図、赤いところが刃です。

左の通常のドリルは、左右に均等に刃がついていますので、押し込んでいくときも左右均等に削れていきます。
刃に角度がつけられていることで、削れ始めもだんだんと負荷がかかっていくようになっています。
しかし、今回のドリルは、片側で外周部分に傷をつけて、もう片側でその内側を削っていくというタイプです。
また、刃に角度がついていないので、非切削材(削りたいもの)に当たった時に一気に負荷がかかります。
木材は柔らかいのでこのようなタイプでも問題ないのですが、プラスチックは粘り気がある材料なので切粉がつながったままになり、大変な負荷になります。

ドリルで穴を開けるとバリがでますので、これをカッターやバリ取りなどで慎重に取り除きます。
失敗して傷をつけてしまったら、リューターで研磨して段差がわからない程度まで磨き上げます。
グランドのゴムパッキン部分が当たるところなので、絶対に段差を残さないようにしましょう。

赤線で囲んだところにある、穴の端が荒れている部分がバリです。



内側のゴム部分はボロボロになってしまうので、全箇所穴を開けた後にまとめて切り抜きました。
グランドの内側はナットがきますので、穴に比べてかなり大きめに切り取っています。

ゴム部分はケースから取り外すことができます。
ふたが当たる部分に傷をつけないよう、注意して作業を進めましょう。
ケースと違い、こちらの修正はできません。


本日はここまで。

EducationalROV Mark3
本家Mark3のホームページはこちら。