2016年4月15日金曜日

librealsenseをLinuxMintにインストール

2017/04/に追記
Linux Mint 17の記事です.
Linux Mint 18にには適用できません.

realsenseをintelから購入しました.

そしたら,10日後に我が家に到着しました.
ちなみに,お届け先の住所のところで,県名をローマ字ではなく漢字で
登録してしまったところ,実際に届いた荷物の伝票のお届け先住所のところには
県名が書かれていませんでした.

intelの人,ごめんなさい.

realsense はr200 sr300と種類があり,
ここから購入できます.

 さて,Linuxでrealsense r200を 使うためには,librealsenseという
オープンソースのライブラリが必要なため,今回はそれをインストールします.

さらに,ちなみに,pcl1.8(point cloud library)のAPIの中にrealsenseGrubberという
クラスを見つけた私は,嬉々として,かつ頑張ってpcl1.8をインストールしましたが
relsenseGrubberを使うためにはwindowsでしか動かないrealsenseSDKが
必要でした.オーマイガッ!

さて,このlibrealsenseですが.4月15日現在,公式の説明通りではうまく行かないことがわかったのでここに訂正版を載せておきます.

●ソースのダウンロード

$ sudo apt-get update && sudo apt-get upgrade

$ cd  ~/

$ mkdir build

$ cd build

$ git clone https://github.com/IntelRealSense/librealsense.git

●必要なものをインストール

$ sudo apt-get install libusb-1.0-0-dev

●多少の設定変更




上の写真のようにアップデートマネージャの

ソースコードのチェックボックスを入れるの!

これは,公式の説明にはない.だた,やっとかないと失敗する.


●引き続きインストール


$ scripts/install_glfw3.sh

●カーネルにパッチ当てたり,usbのルールを変更したり


ここからは,必ず,realsenseがあなたのPCに突き刺さっていないことを
確認してから行ってくださいね

$ sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/

$ sudo udevadm control --reload-rules && udevadm trigger

ここからlinuxカーネルのバージョンによって操作が異なるが
mintは3.19.0-32なので,迷う必要がない,ああ,mintで良かったね!よね?!

$ ./scripts/patch-uvcvideo-ubuntu-mainline.sh

さて,ここから要注意,公式の説明通りではダメなとこ第二弾.
スクリプトの中身を読めばわかることだけど,読まないと引っかかる.

$ cd scripts

$ ./scripts/install-r200-udev-fix.sh

$ sudo modprobe uvcvideo

$ sudo dmesg | tail -n 50

ここでエラーが出ないようだったらいいかもしれないと
公式の説明には書いてあったが,そんなこたぁー無い.

●コン・パイル 

さあ,あとは,今までインストールしたものを使ってコンパイルするだけ.
ゴールは目前!

あと,ここから,Qtをインストールするけど,Qtの公式サイト
からインストールするほうがいいかもしれない.
私は公式からインストールしました.
信じるか信じないかは,アナタ次第.へっへっへ...

$ sudo apt-get install qtcreator

$ sudo scripts/install_qt.sh

libralsense.qtcreatorというディレクトリのなかのall.proを
ダブルクリックして,

ビルド(タブ) --> すべてクリーン
ビルド(タブ) --> qmakeの実行
ビルド(左下) --> クリック

ものすごい警告がでるが,それは私の日頃の行いに
よるものなのかは不明.

あとは,
libralsense/bin/debagのなかにあるプログラムを
実行して,カラー画像,左右の赤外線画像,depth画像が
取れれば成功.

お疲れ様でした.



 

2016年4月9日土曜日

YouCompleteMeのNeocompleteを利用してアップデートした際の再コンパイル方法

唐突だが,私はLinux Mintを使用している.
そしてc++erでもあり,vimerでもある.

したがってc++をvimで書いている.
vimはその手軽さによってvisual studioとかいうIDEを立ち上げるより
コーディングへの敷居を遥かにさげてくれる.

もはや下げすぎて,敷居が溝になったレベルである.
今度は溝に気をつけないと足を取られて大惨事である.

一本下駄とかハイヒール履いてるようなヒトは要注意である.

さて,vimで補完する際に,私は,YouCompleteMeというプラグインを
利用しているが,このプラグイン,アップデートするたびに再コンパイルが
必要なのである.

いい機会なので,再コンパイルの手順を書いておきます.




1.vimrc にて

:neobundleupdate

を実行.


2.~/.vim/bundle/YouCompleteMe/にて

./install.py --clang-completer
 
を実行.
 
 
あと,半自動でCMakeList.txtからycm_extra_conf.pycを作成してくれる
YCM_Generaterはいつもお世話になってます.

2016年1月9日土曜日

Leap Motion 入門

Leap MotionのCMakeを使ったコンパイルの仕方

こんにちは,
この度Leap Motionを使うことになったので
試しに,サンプルプログラムをコンパイル使用とした時につまずいた話をします.

Leap Motionとはこんな感じの未来を1万円で感じれるデバイスのことを言います.






いい時代になったものです.

cmakeを使用してコンパイルしようと企んだんですが,Leap Motionを使うための
APIが詰まったライブラリが見つからないよと言われてしまいました.

喫茶店で作業していたのですが,あまりに時間がかかりすぎたため
隣のお客さんは2回ほど入れ替り,親切なおねいさんに水を3回ほど注がれました.


Leap Motionのライブラリはちょっと変則的になっているらしく...
Leap.h,LeapMath.hというヘッダーを読み込むと
それらの内部でlibLeap.soという共有ライブラリを読み込むようになっています.


ところが,cmakeのパッケージを探しても,libLeap.soは見つからない...
これではfind_packageが使えないじゃん...

正解は以下のように,直接共有ライブラリをリンクすることでした.
めでたしめでたし.


    cmake_minimum_required(VERSION2.8)
    project(Sample)
    add_executable(Sample Sample.cpp)
    target_link_libraries(Sample Leap)


ちなみに,Sample.cpp内で
#include "Leap.h"を書くことを忘れないでくださいね.


2015年12月11日金曜日

倒立振子をつくろう!? #1 arduino IDE 1.7x インストール編




 世の中には倒立振子と呼ばれるものがあることはご存知だろうか?
私だって知っていた.そして憧れた.あの倒立振子である.
博識な皆様なら,当然ご存知であろう.

そう.コレ(下の図参照)


わたしも,制御の世界に身を置くものとして,一度は作って見たいものである.

じゃあ,作っちゃおう!

幸いにも,ドキュメントはWWWの世界に腐らないケド,腐るほどあるので問題ないはず.
そもそも,必要な知識などは私の頭の中にあるはずである.
少なくとも,私の履修科目一覧はそう言っている.(制御工学,現代制御,システム制御...)


さて, 御託はこのへんにしておいて,タイトルにもあるとおり,
arduinoのIDEをパソコンにインストールする.
倒立振子を立たせるためには,制御用コンピュータが必要なのであるが,
今回はarduinoを使うよ.


arduinoとは使いやすくなったマイコンである.しかも,オープンソース.
IDEとは統合開発環境の略で,プログラミングに必要なアレコレが一緒くたになったものである.


今回はarduino M0 を使用することに決めた.
arduinoの開発会社が真っ二つに別れた影響により,
arduino M0では今までのarduino IDEが使用できない.そこで,新しくIDEをインストール
しなければならないが,今まで,arduino UNOなどで使用していたIDEを
アンインストールする必要もない.理由は後述します.


  •  環境設定 
私の環境はLinux Mint 17.3 Rosa(Ubuntu 14.04)

  • ソフトウェアのダウンロード
    ここから arduino IDE17.xをダウンロードする.

  •  インストール手順
   インストールはここにあり(英語)
   上のサイトを自分用に翻訳すると下のようになる.

   1.端末を開いて
   
      $ sudo vim /etc/udev/rules.d/90-extraacl.rules

    するとvimというテキストエディタで設定ファイルが開かれるので,
    そこに以下の設定を書き込む.

   KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"
   KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"

    
    ただ,ここで<your_username>というのはあなたのパソコン上の
    ユーザーネームなので以下の新しく端末を開いて,以下のコマンドを打つ.

                       $whoami

    すると,遠い昔,遥か彼方の銀河系で...設定したユーザーネームが表示される.
    私の場合は,sharuと表示されるので設定は,

   KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="sharu"
   KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="sharu"


     となる. 

    エディタで設定を保存して閉じる場合はエディタ上で

      :wq

                 と打つ.


  2.引き続き端末上で作業するよ.

      $ sudo usermod -a -G tty <your_username>
      $ sudo usermod -a -G dialout <your_username>

           
    とタイプしてくだされ.<you_username>は前述の通り,
    あなたの名前を入れてね.


  3.もちろん,端末上で作業するよ.

                     $ sudo apt-get remove modemmanager
                
    削除して大丈夫なのか...コレ...
    ちょっと調べたけど,大丈夫そうですな...


  4.端末上で(ry
    ここから,スーパーユーザーに変身して作業するので以下のコマンドを
    カチョー オーン!!

      $ sudo -s
      $ sudo vim /etc/udev/rules.d/98-openocd.rules

    開いたファイルにすかさず設定を書き込むべし.

      #Copy this file to /etc/udev/rules.d/

      ACTION!="add|change", GOTO="openocd_rules_end"
      SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"

      #Please keep this list sorted by VID:PID

      #CMSIS-DAP compatible adapters
      ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"

      LABEL="openocd_rules_end"


    で閉じる(保存も)ためにエディタvim上で

     :wq

     そして,パソコンを再起動してください.もう一息です.


  5.端末上で打つべし!打つべし

     $ sudo udevadm control --reload-rules
     $ sudo udevadm trigger

さあ,パソコンの設定はコレで終了です.
最初の方でダウンロードしたものを解凍して,中に入っている
arduinoというシェルスクリプトを以下のコマンドで立ち上げてください.

     ./arduino

するとおなじみの画面が立ち上がる.しかし,読者諸君は興奮のあまり座席から立ち上がる
という愚行を犯してはならない.隣人から白い目で見られる.

このように,シェルスクリプトでIDEが立ち上がるため,以前のarduino IDEを削除する必要が
無いことがお分かりいただけただろうか.


さて,ここで注意点!!!

パソコンとシリアル通信するときはSerial.println()ではなく,SerialUSB.println()を使用
しないと通信できないゾ.


おつかれさまでした.



 

2015年8月10日月曜日

YARP(Yet Another Robot Pratform)解説 No.1

ロボットのプラットフォームのお話. 第一話

 〜知名度の超低空飛行〜

YARPとは、ロボットのための分散コンピューティングの
フレームワークなのであるが。。。

「YARPって聞いたことあるかな??」 
「シーン...」
「まぁ,そうダヨネ...日本だとマイナーだモンネ...」


こんな感じの会話が日夜,ロボット業界ではされているのかもしれない.
いや,されてないって? そうですか,されてないですか.


しかし,以下の会話ならロボット関連の研究室でされてそうじゃないかな?

「YARPってものがあるんだけど,それ使ってロボット作ってみて」
「ヤープ? それって食べると美味しいの?」
「私は,後載せサクサク派だ!! 断じて先に載せることは許さん!!」
「ナンノコッチャ」

このようにして,YARPの恐るべき知名度の低さによって
YARPの日本進出は遠のくのであった...(完)


今回は,そんな(超マイナーな)YARPの使い方を教えちゃうYO!!

とりあえずYARPのホームページ

賢い諸兄はこう思われたことだろう.
「え.英語じゃねーかっ」

そう,YARPのホームページはすべて英語なのである.
徹頭徹尾英語なのである.何度見返しても英語.
実はそのホームページでF5を7回押すと日本語に...

...なったりしない. 

人生そんなに甘くないのである.


今日から,自分の勉強も兼ねてYARPを解説していくことにした.
誰かの助けになれば幸いである.


インストール方法

Ubuntu,Linux mintへのインストール

1.必要なものをインストール  

 YARPをインストールするにあたって,バイナリとコンパイルする方法があるのだが,
私の環境(Linux mint17.2)では,バイナリがインストールできなかったので ,
今回はコードからコンパイルする方法でいく.
端末を開いて以下のコマンドを入力.
 sudo apt-get install git cmake cmake-curses-gui libgsl0-dev libace-dev libreadline-dev
また,続いて以下のコマンドも入力
sudo apt-get install qtbase5-dev qtdeclarative5-dev qtmultimedia5-dev \
qml-module-qtquick2 qml-module-qtquick-window2 \
qml-module-qtmultimedia qml-module-qtquick-dialogs \
qml-module-qtquick-controls libqt5svg5
さて,これでコンパイルに必要な,cmakeやらqt5などをゲットしました.

 2.YARPのダウンロード

端末に以下のコマンドを入力
cd /home/user
git clone https://github.com/robotology/yarp.git
 これで,githubからYARPのソースコードをダウンロード完了です.

3.ソースのコンパイル

まず,コンパイルするためのディレクトリを作成します.
以下のコマンドでそれを行います.
cd yarp
mkdir build
cd build
ccmake ../
 ccmakeの設定画面が立ち上がったともいます.
ここで,設定を2つほど変更する必要があります.
  • CREATE GUIの設定をONにすること
  •  CREATE_LIB_MATHの設定をONにすること
EnterキーでONとOFFの設定を変更することができます.
設定を完了したら後はコンパイルが可能になるまで
数回”c”を押してください.コンパイルができると表示されたら”g”を押してください.
それでコンパイルの設定が完了します.

以下のコマンドでコンパイルを開始します.
make
sudo make install
sudo ldconfig
最後に,きちんとインストールできたかどうか確認します.
yarp check
と入力してエラーがでなければ完了です.
おつかれさまでした.