ラベル program の投稿を表示しています。 すべての投稿を表示
ラベル program の投稿を表示しています。 すべての投稿を表示

2017年4月20日木曜日

自作ライブラリをCMakeでディレクトリごとインストールする方法

自作ライブラリをCMakeでディレクトリごとインストールする方法

春先は送迎会などで諭吉が吹き飛んでいくのが悲しい限りです. ああ,諭吉よ.どうしてあなたは行ってしまったのですか. それはさておき, githubとかで自作ライブラリを公開するときに CMakeつかってビルドして/usr/local/lib/にインストールする方法を紹介しますね.

まず,今回はSonyの開発した人類の永遠の友であるPS3のコントローラーをlinuxで簡単に使用できるライブラリを作ったので,それをドヤ顔してgithubに公開してやろうかと思ったところ,opencvとかのように

sudo make install

とかやると, /usr/local/inculde/と /usr/local/lib/ にいい感じにインストールされる方法がわからなかったときのメモであぞよ.

というわけで,どうすればいいかお教えしましょう. まず,本日の生け贄... 本日のメインディッシュはdualshockという名前のライブラリとなっております.

構成

本日の構成は

dualshock
   |-CMakeLists.txt
   |-READEME.md
   |-example--testDs3.cpp
   |-include--dualshock--ds3.cpp
   |-src--ds3.cpp

となっております.というか,こんな感じのディレクトリ構成にしてください.多少は意味があります.

CMakeLists.txt

CMakeLists.txtは以下のように記述すること.

cmake_minimum_required(VERSION 3.5)
 
project(dualshock)
 
add_definitions("-std=c++11")
 
set(SRC_DIR src)
set(INCLUDE_DIR include/dualshock)
 
include_directories(${INCLUDE_DIR})
 
add_library(dualshock STATIC ${SRC_DIR}/ds3.cpp)
target_link_libraries(dualshock pthread)
 
install( TARGETS dualshock
    RUNTIME DESTINATION bin
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib
    )
 
install(DIRECTORY include/dualshock
    DESTINATION /usr/local/include
    )

ポイント

この場合,ファイル構成は綺麗になるが,ヘッダーと実装ファイルの 関係をどのように定義するのかが問題となる.

コンパイル時と,インストール後に使用するときとでは, それらの関係が異なるのである.

具体的には,cppファイルでどのようにヘッダーをincludeするのかということである.

でも,よく考えると,ヘッダーのincludeはコンパイルの時にのみ必要になる.ということは,インストールするときさえ乗り切れば,あとは,どうとでもなる.ということ.よって,ds3.cppのinclude部分をちょっとかえる.

FROM

#include "ds3.hpp"

ライブラリ内のヘッダーを参照するようにincludeのパスを変更する.

TO

#include "../include/dualshock/ds3.hpp"

結果

これを実行すると /usr/local/include 以下に /dualshock/ds3.hpp

/usr/local/lib/ 以下に libdualshock.a

がインストールされる.

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画像が
取れれば成功.

お疲れ様でした.



 

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
と入力してエラーがでなければ完了です.
おつかれさまでした.