2016年7月10日日曜日

YouCompleteMeでPython future のエラーが出て補完できない!

さて,vimの補完担当プラグイン「YouCompleteMe」が
突然クラッシュしていうことにゃ

YouCompleteMe unavailable: This package should not be accessible on Python 3. Ei
ther you are trying to run from the python-future src folder or your installatio
n of python-future is corrupted.

あなたの元をわたしは去らねばならなくなりました.
わたしは,あなたのコーディングを手助けしてきましたが,とうとうお別れの時がきました.
今日のような日が訪れることは以前からわかっていました.あの,パイソン3がやってきたのです.
わたしはパイソン2.7やっていけますが,3とは相容れることができません.
おごれるものも久しからず,ただ春の夜の夢のごとし.さようなら.(意訳)

いやいや,待ちたまえ!
貴君なしではコーディングできない体に変革されてしまった.

とブツブツ言いつつ,vimrcの補完プラグインを昔のneocomplete + clang_completeに
変更した,しかし,YouCompleteMeのgithubのissueをみたところROSが
悪さをしているらしい.

ROS-indigoではYouCompleteMeと衝突しなかったところをみるにROS-kinetecとだけ
相性が悪いらしい.

いや,ROSをアンインストールしては仕事にならない.
仕事にならなくてはご飯が食べれない.ご飯が食べれなければ
わたしはダイエットに成功するであろう.
そうすれば,モテモテになり,億万長者になる.
なるほど,いいことずくめではないか.

しかし,ニートという肩書は同窓会の時に不利ではないか.
女子の心が札束でどこまで動くのか非常に懐疑的にならざるを得ない.

ROSを捨て,いっそYARPに...
かといって,YouCompleteMeは手放したくない.

そこで,回避を実行する.

まず,

sudo apt-get install vim-nox-py2

そのあと,~/.bashrcの最後に

alias vim='vim.nox-py2'

を追記.
これで,vimとターミナルで打つと,もとのvimとYouCompleteMeに再開可能になる.
いつもどおりの環境等のは何者にも代えがたいものである.
そう,今日の猫との戯れよりも.しかし,猫との戯れが,日常のひとはどうすればいいのか
答えはまだない.


いやまてよ.Python3とか2.7とか何なんだ
もう世界がc++で統一されればいいんだ!

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"を書くことを忘れないでくださいね.