2017年7月7日金曜日

Mission Planner の Simulationの使い方

Mission Planner の Simulationで使い方にはまったので使い方をここに残します。

1.Flight Planを作成
適当に作成
TAKEOFF (離陸)
WAYPOINT (通過点)
 マップをダブルクリックすると追加されます。
LAND (着陸)
入力が終わったら、右の欄のWRITE WPsを押す。

2.CONFIG/TUNING
これにかなりはまった。これをやらないでSIMULATIONに移行してPREARM(起動前チェック)に引っ掛かりARMING(モーターの準備完了)に移行できなくて数時間悩んだ。
結論としては、この項で、ARMING_CHECKを無効にしないといけない。
ARMING_CHECK -> 0 (= disable(無効))
これには、CONFIG/TUNINGのタブに行き、FULL PARAMETER LISTで直接入力しなければならない。ARMING_CHECKを探して0を入力。その後、右の欄のWriteParamsを押す。

3.SIMULATION
ここでもMission Plannnerの使い方を知らなくてはまった。
左下の枠の「Action」で指示を与えることができる。シミュレーションが始まるまでの手順は以下
・「Action」タブに移動
・モードを「Stabilize」にする。(これは、モータをArmにするためにAUTOではできないため、一度StabilizeにしてからArmingするため)
・「MAVLINK TARGET」でARMをクリック。
・左上のがめんがARMになったことを確認して、モードを「AUTO」に変える
・「MISSION START」に変えて、Do ACTIONを押す。
晴れて、シミュレーションがスタートしました。

参考:
http://ardupilot.org/copter/docs/parameters.html
http://ardupilot.org/planner/docs/common-mission-planning.html
https://github.com/ArduPilot/MAVProxy/issues/11
http://www.drone-j.com/dronetechblog/ardupilot05/
https://ailerocket.com/aerial-vedeo-apm-copter-auto-mode/
http://ardupilot.org/copter/docs/mission-command-list.html#takeoff


--------------------------------
追加:平均速度の変更
ConfigのExtend TuningのところにWPNavがあるのでそこで設定


http://ardupilot.org/copter/docs/auto-mode.html




2017年6月4日日曜日

WindowsにROSをインストールする(2017/06バージョン:Default がUbuntu16.04に)

いつなっていたかは調べ中だが、Windows 10  のBashのベースとなっているUbuntuのバージョンが16.04に変わっていた!!

ちょっとBashを入れなおそうとして、Bashを全部消して再インストール。しかしROSがはいらん。あれ、おんなじやり方しているのに。Dependencyの解決のところでErrorがでる。
webkit_dependency: No definition of [python-qt-bindings-webkit] for os version [xenial]

ん?なぜだ?

ってふと思い立ち、OSのVersionを調べると・・・Ubuntu16.04になっているやん。
そういや、XenialってUbuntu16.04のことだった。

Ubuntu14.04の時はIndigoを入れていたが、16.04になったのでKineticを入れないといかん。
当たり前だ。

Indigoの時と同じくソースからインストールしなきゃいけないっぽいので、通常ではなく、
http://wiki.ros.org/kinetic/Installation/Source
のインストラクションに従いましょう。(1部を除いて同じことやるだけなので、ちょっと手を抜きます。)

Installing bootstrap dependencies

$ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential

Initializing rosdep


$ sudo rosdep init
$ rosdep update

Create a catkin Workspace

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
Desktop-Full Install: ROS, rqtrviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
$ rosinstall_generator desktop_full --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-full-wet.rosinstall
$ wstool init -j8 src kinetic-desktop-full-wet.rosinstall

Resolving Dependencies

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
ここからがちょっと違う。上の処理を続けていると、shiboken2 が見つからないと出てくる。custom buildの一部らしいのだが、外し方もわからないので、これの依存関係を入れる。(https://launchpad.net/~thopiekar/+archive/ubuntu/pyside-git)
$ sudo add-apt-repository ppa:thopiekar/pyside-git
$ sudo apt-get update
もう一回、
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

Building the catkin Workspace

./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
ちょー時間かかった。根気よく待つ。・・・・・
Successful!!無事終了しましたー

source ~/ros_catkin_ws/install_isolated/setup.bash
したあとに、
Rosrun
して、問題なければOK!!

2017年4月21日金曜日

Windows10 にROSをインストール

Window10にBashが入るとのこと。前から聞いていたが、これでDOS窓でlsと打って、dirと打ちなおす20年近く続いた日々が終わる。嗚呼・・・、俺って確かMS-DOS3.3からやってたんだなー。まぁ、思い出話はさておき本題へ。

Bashがはいるので、それの応用でROSをインストールした人がいるので早速やってみる。

1.Windows Update
Bashを使えるようにするためには、Windows10 Version1602以降でないといけないので、自分のバージョンを確認して、足りない場合にはUpdate。因みに私は、何故かUpdateできなかったのでMicrosoftから直接アップデート用のインストーラーを落としてきて強制Updateする羽目になった。なんでだろ?

2.Bashを使えるようにする。
・Windowsキーを右クリック。「プログラムと機能」を立ち上げる。
・Windowsの機能の有効化または無効化を選択
・Windows Subsystem for Linux (Beta)にチェックを入れてOK
・メニューのWindowsシステムツールの中にある、コマンドプロンプトを立ち上げる。
・Bashと打ち込むとインストールスタート。途中にnameとパスワードを聞かれる。
終了!!

3.ROSのインストール
Windwos10 のBashには通常のインストールではROSが入らない。困った。ってことで困ったときにはGoogleさん。最初にインストールできた先達の人の記述を見ると、ソースインストールが必要とのこと。
http://wiki.ros.org/indigo/Installation/Source
のInstruction通りにインストールしてみる。
sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential
Desktop-Full Install: ROS, rqtrviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
$ rosinstall_generator desktop_full --rosdistro indigo --deps --wet-only --tar > indigo-desktop-full-wet.rosinstall
$ wstool init -j8 src indigo-desktop-full-wet.rosinstall

Resolving Dependencies

$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y

Building the catkin Workspace

下のコマンドを打ち込むと、途中でErrorがでる。gazeboが見つからないらしい。そこで先にインストールしてから実行。
$ curl -ssL http://get.gazebosim.org | sh
$ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
$ source ~/ros_catkin_ws/install_isolated/setup.bash
Update the workspace
$ mv -i indigo-desktop-full-wet.rosinstall indigo-desktop-full-wet.rosinstall.old
$ rosinstall_generator desktop_full --rosdistro indigo --deps --wet-only --tar > indigo-desktop-full-wet.rosinstall
$ diff -u indigo-desktop-full-wet.rosinstall indigo-desktop-full-wet.rosinstall.old
$ wstool merge -t src indigo-desktop-full-wet.rosinstall
$ wstool update -t src

Rebuild your workspace

$ ./src/catkin/bin/catkin_make_isolated --install
$ source ~/ros_catkin_ws/install_isolated/setup.bash
bashの最後に「~/ros_catkin_ws/install_isolated/setup.bash」も追加しておく。

4.チェック
インストールできたかチェック。
roscore
を使って問題なければ終了。

次からはXwindowを使って機能を確認していく。

Ref
http://answers.ros.org/question/238646/installing-ros-on-ubuntu-bash-in-windows-10/
http://wiki.ros.org/indigo/Installation/Source

2017年4月16日日曜日

Network binarization 関連文書集

最近、Deeplearningの高速化とメモリ節約では、Network binarizationが流行っているみたい。これを応用して、FPGAへの展開なんかもやられていて、組み込みへの応用はこの技術が中心になるんだろうな。ってことで、元論文は2つ。日本語で解説がいくつかやっている人達がいましたので、それらのリンク。
よく考えるなー。すごいもんだ。

元論文
・Binarized Neural Networks: Training Neural Networks withWeights and Activations Constrained to +1 or -1
・XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks


BinaryNetとBinarized Deep Neural Network
https://tkng.org/b/2016/02/12/binarynet-and-binarized-neural-network/

[Survey]Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1
http://qiita.com/supersaiakujin/items/81719e49a50a3fb653e8

binary_net by chainer
https://github.com/hillbig/binary_net

XNOR-Netが二値化ニューラルネットの性能を大きく改善する
https://tkng.org/b/2016/03/28/xnor-network/

[Survey]XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
http://qiita.com/supersaiakujin/items/6adaf9731c9475891911

ついでにこれに使われている、Quantizing parameters(量子化パラメータ)について勉強リンク(続けてよんでいないので、関連ないかも)
https://www.jstage.jst.go.jp/article/itej/67/2/67_136/_pdf
http://www.elwsc.co.jp/page.jsp?id=1953


http://www.nnet.ne.jp/~hi6/lab/quantize/

2017年2月25日土曜日

OpenCV Viz のinstall (Windows10, Visual studio 2013)

3Dの点群の表示をしてくれるViz。しかし、これはexeからそのままインストールしたのでは入りません。

1.PCL1.8.0 (=VTK)
実際にはVTKがいるのですが、PCLをいれるともれなく3rd partyでついてくるのでPCLを入れます。ここからダウンロード。

その後は、環境変数の設定。(インストール時に自動での設定を選択しても可)
変数名変数値
PCL_ROOTC:\Program Files\PCL 1.8.0 (またはC:\Program Files (x86)\PCL 1.8.0)
Path;%PCL_ROOT%\bin
;%OPENNI2_REDIST64% (または%OPENNI2_REDIST%)
2.cmake
cmakeのConfigureで
WITH_VTK
にチェック。次にVTKのパスを教える。
VTL_DIR -> C:\Program Files\PCL 1.8.0\3rdParty\VTK\lib\cmake\vtk-7.0
configure + Generate するとslnができるので実行し、コンパイルする。


3.

参考:
http://qiita.com/SatoshiRobatoFujimoto/items/a91a60bb511070164b53
http://d.hatena.ne.jp/takmin/20140916/1410879770

2016年11月9日水曜日

ラグランジアンとは?

ラグランジアンって運動方程式を求めるためにしか使ったことがない。これをオイラーラグランジュ方程式というが、そもそもラグランジアンって何かわからなかった。

答え:
それ自身には何の意味もない。(何の状態量もないという意味。)

内部の項の関係によって、取りうるパス(運動)が決定する。

運動方程式は、外力と現在の状態を入れると状態量の微分値が得られる。これは、そのラグランジアンでのパス(運動)を記述していることと同じ。具体例として、ラグランジアンがL=T-Vだと、運動エネルギをコストとおいて、ポテンシャルエナジーが植えるとコストが減ると考える。これを使い微分すると運動方程式が得られる。


簡単だけどこんな感じ、何となくだがラグランジアンというものがわかった気がしたので、覚書。

参考:
http://d.hatena.ne.jp/rikunora/20090327/p1
http://eman-physics.net/analytic/makelag.html
http://hep.ucsb.edu/people/cag/Lagrangian_Formulation.pdf

2016年11月8日火曜日

RRT* (RRT star) アルゴリズムの説明

サンプリングベースの経路探索メソッドで有名なものの一つがRRTです。RRTは経路は見つけてくれるが最適な経路を出力しない点を修正したものがRRT*です。オリジナルのRRTの説明については、Atsushiさんが素晴らしいページを作っているのでそちらを参照。RRT*の説明は日本語ではあまり見つからない(英語でもあまりなく論文を読むしかない)ので、簡単な解説です。

そもそもメリットとしては、RRT*は、最適値に収束することが保証されています(*は最適ってことみたい)。また、かなり複雑な状況でも発散せずパスを生成してくれます。しかし、最適値は無限回をしたらたどり着くよってだけで有限時間では無理。それでもいいので

さてアルゴリズムは、
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.419.5503&rep=rep1&type=pdf

1. Add sample
2. 最も近い点を見つけて、ある距離(自分で設定)の点を打つ
3. x_newが障害物の中に入っているか?

 4. の中に入っているX_near(近傍点のリスト)を作る(7

5. x_newを点のリストVに追加(8)


6.内点と線を引き、線が障害物に接触していないかを見る+最もコストが小さい点を結ぶ。
Connect along a minimum-cost path


7. 新しい線を線のリスト(E)に追加
8. 円内の他とx_new 線を引き、自分の親(A)x_newとコストを比較し、元のコストよりも小さかったら線を引き直す。
Rewire the tree