cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

FPFH特徴量をbinaryファイルに出力

FastGlobalRegistrationのテストデータを自分で作りたいと思います。 github.com PCLに慣れている人ならば問題ないのでしょうが、上記サイトにはFPFH特徴量を出力するサンプルコードの抜粋しか載っていません。 欠けている部分を他のプログラムから探してき…

openFrameworksのshaderでGLSL4.2のatomic counter bufferを使って画素の数をカウントしてみる(その3)

普段使用している開発環境ではnVidiaのグラフィックカードを使用しているのですが、intel製グラフィックスチップの環境にこのコードを持っていくと動かないことが分かりました。 原因を調査したところ、shader側ではなくopengl側のbufferのbindの仕方が問題…

openFrameworksのshaderでGLSL4.2のatomic counter bufferを使って画素の数をカウントしてみる(その2)

大量のatomic counterを使って色分布のヒストグラムを作りたい、と考えたときに普通の発想であれば配列化してしまえば良い、と考えますが、資料[1]によるとshader内でそのような書き方はできない、とあります。 どういうことなのか、見てみましょう。まず、o…

openFrameworksのshaderでGLSL4.2のatomic counter bufferを使って画素の数をカウントしてみる

GLSLは、OpenGLのシェーダを使うための記述言語です。並列計算はとっても速いので使えると格好良いです。が、GLSLはバージョン毎にすぐ記述方法やデータの受け渡し方が変わったりするので、混乱しがちです。 openFrameworksでは新しいものは面倒みないと割り…

openFrameworksでOpenGLの処理を速くしたいときの確認項目

この方法で、(にわかに信じられませんが)場合によっては10倍ぐらい速くなることがあります。普段、あまりいじることの無いmain.cppの最初で呼び出している ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context を、 ofGLFWWindowSettings…

ofFboにofTextureから大きな画像の一部を斜めに切り出す方法

大きな画像から、任意の位置と角度で、適当な矩形を切り出す方法をメモしておきます。注記:普通にやるならこちらです。 cvl-robot.hateblo.jp 画像サイズ1024×768。描画なしで800fps程度。描画ありだと、verticalSyncに引っ張られて60fps。 普通にOpenCVで…

Lidarを使った2D SLAM実装のためのお勉強

Atsushi SakaiさんのブログMyEnigmaで紹介されているmatlabのコードをいくつかc++(openFrameworks環境)に移植してみました。 myenigma.hatenablog.com とても勉強になり大変に有難いです。移植の目的は、matlabに慣れたかったのと、現実的な実行速度を確認し…

Globally Optimalな点群位置合わせ手法の調査

2010年台ごろに入ってから、3次元点群位置合わせの手法として"Globally Optimal*1"な物の提案が増えてきました。理論はおいて置いて、どのくらい実用になるかをテストするために、実装が公開されているものを中心にリストにまとめておきたいと思います。 1.…

初任給で買うと良いものの研究2017

初任給を貰ったら、まず親に御礼代わりのプレゼントを買うべきです。が、自分で稼いだお金で自分の欲しいものを買うのも良いことです。 とくに、新生活が始まったばかりの人にとっては、今後の生活の潤いのためになるものを揃えておくのが良いでしょう。 と…

Emlid Navio2で動かすardupilotにxwindowを入れる

要らないものもあるかもしれないけれど、とりあえず起動するのでOK。 sudo apt-get update sudo apt-get install lxde sudo apt-get install lightdm sudo apt-get install xinit sudo apt-get install xutils sudo apt-get install xserver-xorg startxで…

掃除機の買い方の研究

掃除機は、多くの人には数年に一度しか買い替える機会がないものかと思います。 急に掃除機が欲しくなるというよりも、そろそろ買い替えたいなー、という気分になったときしばらく時間をかけて検討して買い替えするかと思います。 ということは、時々安くな…

LAUNCHXL-F28069MとBOOSTXL-DRV8305EVMでSCIを使うとき、問題を避けるためにADCの割り込み優先順位を上げる方法

TiのC2000Piccoloの割り込みは、独自のPIEテーブルとかいうものに基づいたもので、とても分かりにくく使いにくいです。 C2000シリーズではPIEテーブルの順序の変更も容易ではなく(掲示板にはデキナイ、との書き込みも)、さらにその定義も小首を傾げたくな…

SLAM実験に便利そうな移動ロボット用プラットフォーム

筑波大の油田研の移動ロボットの研究成果を元に、ハードウェアやソフトウェアが整備されているそうです。 現在は、東北大の渡辺先生を中心にメンテナンスされているとのことです。 ソフトウェア openspurはskid型の移動ロボットを座標指令で動かしたいときに…

Emlid Navio2で動かすardupilotにもzeroMQを導入する

navio2はEmlid社の開発するRaspberry Piベースのオートパイロット用ボードで、オープンソースのドローンシステムardupilotに対応しています。 emlid.com 詳細はこちら。 Navio2 docsまず、マニュアルに従ってAPMを普通にインストールしてください。 ここでは…

pyzmqとpyOSCでOSC over ZeroMQっぽいもの

普段はc++ばかりなのですが、少しだけpythonで書く必要ができました。 極力、普段と同じようにぬるく書きたいので、使い慣れたZeroMQとOSCを使えるようにしたいと思います。 1.準備 zeromqとoscをpipでインストールします。 > pip install pyzmq > pip insta…

ロボットには出来ないこと

(編集中) 慣用句として、ロボットには出来ない、という言葉が良くつかわれます。とくに伝統工芸や芸能などに多いような気がします。 本当に出来ないのかどうか検証したいので、ロボットには出来ない、という言葉を聞いた時にここにメモしておこうと思いま…

IoT最強プラットフォームを目指して、RaspberryPi3にopenFrameworksをインストールして、ofxZmqをWindow(openGL)無しでも動くようにする(その1)

(編集中) raspberry Piは安くて早くて、arduinoと違ってネットワークに簡単に繋がる利点があります。 また、ネットワークはzeroMQを使えば、高速・安定・簡単に書けることも覚えてしまいました。 さらに、openFrameworksは様々な用途のライブラリaddonをいろ…

モバイルバッテリー、有名メーカーの製品が良いと思い込んでいると時代に置いて行かれるかも?

Ankerの大容量モバイルバッテリーが良い、という記事を読んだ。 www.gurinovation.com まさしくこの機種Anker PowerCore 20100を購入して使っていたので悪くない製品だということは知っているのだが、購入して1年ちょっと経った今、へたってしまってただ大…

AS5047D-EK-ABのピン配置のメモ

USB I&P BOXのソフト上の文字が見切れる問題Zero Position [Set] [Reset] Configuration Rotation Direction Dynamic Angle Compensation ABI-Pulses UVW-Pole Pairs, Hysteresis Incremental Out Error Status, PWM Out[Load Config] [Export Config] [Read…

ネットワークの実時間性を保障してほしいので、DDSを調べる

DDSは、RTPSパケットを使って、Pub-Sub形式でネットワーク上のデータをやり取りする仕組み(分散ネットワーキングミドルウェア)だそうです。 https://ja.wikipedia.org/wiki/Data_Distribution_Service諸悪の根源であるところのCORBAの系統のようなので使い勝…

raspberryPi2/3に(オーディオ用では無い)複数の普通のDAコンバータmcp4725を接続して、4ch以上のアナログ出力を得る方法

以前書いた記事の続編です。 cvl-robot.hateblo.jpmcp4725は、安価で簡単に12ビット分解能のアナログ出力を得ることができる良いICなのですが、I2Cアドレスが0x60,0x61の2つからしか選択できません。 したがって、素直に使うと2chの出力しか得られません。 …

半精度浮動小数点(2バイト)と単精度浮動小数点(4バイト)のC言語での変換方法を調べる

Tiのマイコンで使われているfloat_t型は2バイトで与えられています。一般に知られているfloat型は4バイトの単精度浮動小数点です。 2バイトで表現される浮動小数点は半精度浮動小数点(half)と呼ばれ、最近では、レンダリングや機械学習の用途で需要が増えて…

Ti C2000 F28027FやF28069MマイコンにRS485を接続する方法

TIのInstaSPINマイコンを汎用モータードライバに使いたいとき、インターフェースのショボさが致命的な欠点になります。 モータは複数台を同時に使いたい場面が多くあると思うのですが、SCI(UART)ピンは出ているもののTX,RXしか出ていません。 汎用ピンが一杯…

モータドライバをシリアル通信で制御するためにInstaSPINの重要パラメータの確認

F28027Fのproj_lab05bのmain.hを参考にします. gMotorVarsという構造体変数に重要なパラメータがまとめられています. typedef struct _MOTOR_Vars_t_ { bool Flag_enableSys; bool Flag_Run_Identify; bool Flag_MotorIdentified; bool Flag_enableForceAngl…

APM(ArduPilot)のローバーをいじる前に資料収集

EMLID Navio2 APM installation and running - Navio2 docsardupilot Rover Home Rover Home — Rover documentationAilerocket/エルロケット ailerocket.comailerocket.comDrone Japan/ArduPilot入門 技術ブログ – Drone Japan HKPilot Mega 2.7 Series Epis…

RaspberryPi2/3のGPIOの起動時のプルアップ/プルダウンの設定

RPi Low-level peripherals - eLinux.org珍しくマイクロソフトが役に立ち、こちらに書いてありました。 Raspberry Pi2 & 3 Pin Mappings | Windows IoTとくに GPIO4,5,6がpull upされていることに注意。

WordpressでIPアドレスを変更したときに、管理画面がおかしくなってしまった時の対処法

(メモ)amazon EC2でWordpressにElastic IPで固定IPを振ろうとしたときに、いろいろおかしくなってしまうことが良くあります。 1.データベース上のIPアドレスを変更します。 www.agilegroup.co.jp ここを参考にします。 2.なおかつwp-admin画面がおかしい場合…

WordpressのShapelyテーマを使って、今どきのホームページを立ててみる

(編集中) 1.Wordpressを準備する Wordpressを自分でインストールするのは手間がかかります。しかし、有料サービスを使うとか、NASのプリインストール版を使う、とかすると簡単に用意できます。 個人用にオススメなのは、ASUSTORのNASを使うことです。ASUSTOR…

コマンド方式サーボモータのコマンド体系の研究

(編集中) 日本国内でよく使われているコマンド方式サーボモータのコマンド体系を調べて、良い方法を探ります。 1. 近藤科学 kondo-robot.com送信コマンド CMD + SC + 3~N-1(DATA)返値 CMD + SC + 3~N-1(DATA) + R_CMD + SC + DATA(SPD)SCはサブコマンドの略…

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その6)

(編集中) アナログ入出力だけでなく、シリアル接続なども使えた方がシステム構築には便利です。 ただ、C2000シリーズのマイコンでSCI(UART)接続しようというのは、Linuxの10倍ぐらい面倒くさいです。 Githubからサンプルプログラム LAUNCHXL-F28027F+BOOSTXL…

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その5)

(編集中) 簡単に実験できるように、アナログスイッチやボリュームでモータを制御できると便利です。 Tiのデータシートを参考に、DRV8305EVM用のアナログコントローラを設計してみます。 1.ハードウェアの設計と製作 できました、これです。速度指令値と加速…

メモ:HiRes時代の自作オーディオ その2:2016年10月ベストチョイス編

もし今、自分がオーディオシステムを組むなら、これをチョイス。 パワーアンプはNCore400、プリ代わりのDACはTerra-Berry。 NC400 mono kit 1台650ユーロでモノなので、2台分で1300ユーロ。およそ15万円。 www.hypexshop.com Marantz MA-10 BTL 2chなので、…

ICP(Iterative Closest Point)法を勉強したいときのメモ

(編集中) 広島大学玉木先生のスライド sssslide.com Wikipedia英語版 Iterative closest point - Wikipedia かみやんさんの『Efficient Variants of the ICP Algorithm』(サーベイ論文)の解説 d.hatena.ne.jp LIBICP(c++ソースコード) Autonomous Vision G…

MotorwareのGUI Composerの起動が面倒くさいことの対処

MotorWareのExampleの実行方法は二つあります。 1. コンパイル出力(proj_lab02b.out)をappProgram.outと改名してGUI Composerの実行ファイルと同じフォルダにコピーしてGUIを起動する方法 2. IDE(Code Composer Studio)にGUI Composerをzip化して読み込ませ…

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その4)

(編集中) 最重要ファイルであるところのmotorware_selecting_user_variables.xlsxのv2p1 2014-May-28版を見てみましょう。 MotorwareのResources->Training: User's Guides, Labs, Tutorials->InstaSPIN Projects Setting User Variablesの下にあります。 1.…

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その3)

Tiの製品はドキュメントが多いのはいいのですが、煩雑であまり整理されているようには見えません。 また、独自用語や独自製品名、独自技術名に変な名前を付けるのが好きで、ある程度一般的な技術知識を持ってる人が見ても、ちんぷんかんぷんな言葉が散見され…

TiのC2000 PiccoloシリーズのマイコンボードLAUNCHXL-F28069MでUSB Serial Portを有効にする方法

ここに書いてあります。 Using the serial adapter of XDS100 - Texas Instruments Wiki Windows用の情報です。デバイスのユーザマニュアル(山のようにある)をいくら読んでも、どこにも書いてありません。 Tiのドキュメントはいっぱいあるのですが、まとも…

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その2)

InstaSPINって何でしょう? www.tij.co.jpモーター制御ソリューションとのことですが、ずばり何なのかの説明がありません。 宣伝文句はいっぱい書いてあります。 ・モーターのデータシートが不要 ・センサレス、三相モーター ・簡単読み進めていくと、3つの…

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その1)

超薄型高性能100W級の3相DCブラシレスモーターを入手したので、これを色々な用途に活用したいのですが細かな仕様書がありません。 モータードライバーも手元には大きなものしかなく、ロボットには使いにくい状態です。 また、研究室には15年前のオシロス…

Windows10で、まともに使える音楽用アップサンプリングコンバータ

Hi-Resフォーマットが人気を集めていて、DAコンバータを中心にPCオーディオの性能はとても高くなっています。 しかしながら、リーズナブルに入手可能な音源はいまだにCDの16ビット44.1kHzが現役です。 ネットワーク越しに入手できる音源も、最近は増えつつあ…

ファイル名とフォルダ名を比較して、ファイルをフォルダの中に移動するスクリプトを吐くPythonプログラム

大量の計測データや写真、自炊したドキュメント、撮りためた動画などを、ファイル名を基に自動でフォルダに振り分けて整理してくれるプログラムがあるといろいろ便利です。例えば、ABC, CDE, FGHというフォルダがあったとき、同じ階層にあるファイルのファイ…

mcp4725のEEPROMにwiringPiを通して書き込む方法

wiringPi-mcp4725ライブラリを介してEEPROMの書き込みをしようとして頑張ってみても上手くいかず、別の方法を調べてみたらこちらに書いてありました。 電源オンで出力50%が出てる、なんていう事態を避けるために、とりあえずEEPROMの値を0にしておきたい時の…

(メモ)Linuxで接続したjoystickが抜けてしまったことを検出する方法

Linux上のプログラミングでjoystickの情報を取ることは、joystick-apiを使って大体全部簡単にできますが、ひとつだけ、取り外されたことだけは通知してくれません。 ゲーム用途なら途中で抜けてしまっても、たいした問題にはならないと思いますが、ロボット…

raspberryPi2/3に(オーディオ用では無い)複数の普通のDAコンバータmcp4725を接続して5V出力を得る方法

電子工作の基本としてAD/DAコンバータは直ぐに使えるようにしておきたいですね。 ちょっとした試作で便利に使えるRaspberryPiを使ってアナログ出力を取り出そうとしたら、意外にもDA出力が備わっていませんでした。 外付けして対応しようと調べてもオーディ…

ofxRobotArm

openFrameworksでUniversalRobotsのロボットを動かすAddonが発表されました。www.creativeapplications.net github.com github.cominstallAddon.bat cd ../../addons git clone http://github.com/CreativeInquiry/ofxTiming git clone http://github.com/Cr…

openFrameworksの教科書

無料で公開されているそうです。ありがたいですね。 http://download.bnn.co.jp/download/beyond_interaction/BNN_BeyondInteraction.pdf 今日のイヤホン 小米のPistonの復刻版が、1moreというところからPiston Classicという名前で出ていてAmazonで3000円ぐ…

カメラ画像をofxVideoGrabberで取得してofxTurboJpegでエンコードして、ofxZMQを通してネットワーク配信するプログラムサンプル

OpenCVを使わずに、openFrameworksのアドオンだけで動くように変更しました。 ofxZmq GitHub - satoruhiga/ofxZmqofxTurboJpeg GitHub - armadillu/ofxTurboJpeg: Rough OF addon that uses turbo-jpeg lib to read and write jpegs. 2-3 times faster than …

カメラ画像をOpenCVで取得してJpegエンコードして、ZeroMQを通してネットワーク配信するプログラムサンプル(その2.受信をマルチスレッド化)

testApp.h #pragma once #include "ofMain.h" #include "opencv2/opencv.hpp" class ofxZmqSubscriber; class ofxZmqPublisher; class ThreadedSubscriber : public ofThread { public: ThreadedSubscriber(ofxZmqSubscriber* ptr) : subscriber(ptr) {}; vo…

ofxFaceTrackerで遊んでみる

(メモ)オリジナルソース github.comFaceTrackerのオリジナル論文の解説 d.hatena.ne.jpVisual Studioでのインストール時の修正 C/C++->OUTPUT Objects: $(IntDir)/%(RelativeDir)/ forum.openframeworks.cc顔の置き換え github.comマルチフェイストラッキン…

hiro_handleをpyzmq経由で呼び出せるようにする

(作業メモ) まずOpenRTM-aistをPython2.7.10環境で構築しなおします。 python2.6はサポートが終了してしまうようで、pipを使ってpyzmqをすんなりインストールすることができません。 http://www.openrtm.org/openrtm/node/5768 32bit用 Windows用インストー…