Category: ProgrammingPage 1 of 4

Raspberry Pi 3 (Jessie)にroot 5.34.36をインストール

GROWTH実験で使用するFPGA/高速ADCボードと制御・読み出し用のDAQソフトウエアは、高エネルギー実験でよく使われるCERN/ROOTのROOTファイル形式で波形データを書き出す機能があるのですが、動作試験ができていなかったのでいくつかバグがありました。 Raspberry Piにrootをインストールして動作確認する必要があったので、以下の手順でインストールしました。 ssh -YでRaspberry Piにログインしている場合、rootだけで起動するとおなじみのスプラッシュスクリーンがでてきます。 インストールした環境は GROWTH-DAQのバグについては修正完了後、インストール方法や実行例の記事をアップロードします。 ちなみに、Raspberry Pi上でのコンパイルはmake -j4で1時間以上かかるので、近所にフードコートがある場合はThunder Tea Rice (擂茶饭; バジル・ミント・小豆・ピーナッツ・いんげん・揚げ豆腐やミートボール・ナスの肉詰めが載ったごはん。抹茶や豆が入ったスープと一緒にいただく)を食べて待ちましょう。 ぼくはいままでTanjong Pagar Plaza Food CenterとAmoy Food Centerで食べました(写真はTanjong Pagar Plazaのほう)。どちらもとても美味しい。Tanjong Pagar Plazaの2階のお店のほうが具の選択肢が多いです。 シンガポールのグルメサイトでは各地のThunder Tea…

ESP8266とBME280とIFTTTでIoTボタンをつくった

Amazon Dash Buttonを汎用のIoTボタンとして使っている例がどんどん出てきている中、1週遅れの感じがしますが、ESP8266 + Arduino IDEの組み合わせが劇的に簡単だったので、IFTTTのGoogle Spreadsheet連携を使って、ライフロギング用のIoTボタンを作ってみました。 作ったのが年末休みで、Twitterで#大晦日ハッカソンがナイスタイミングで開催されていたので、投稿してみました。 シンガポールだとまだDashが買えないので、ESP8266とBME280とIFTTTで、Google Spreadsheetにイベントを記録するボタンを作りました(あるあるだけど)。ライフログに使ってみようと思います。入れ物は金沢うら田の愛香菓。#大晦日ハッカソン pic.twitter.com/sHw9dX9tuA — Takayuki Yuasa (@yuasa_takayuki_) December 31, 2016 IoT button using ESP-01 + OLED + BME280 + IFTTT…

4. パルス計測プログラムのビルドと測定実行 – GROWTH FPGA/高速ADCボード

雷雲ガンマ線プロジェクト(GROWTH / Thundercloud Project)で開発したGROWTH FPGA/高速ADCボードに関する記事の第四回です。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 GROWTH実験チームでは、GROWTH FPGA/ADCボード用のFPGAイメージに対応したパルス計測・波形取得用のDAQプログラム(growth_daq)をC++で開発して、オープンソースで公開しています。第三回の手順でFPGAを書き込んだボードをMacやRaspberry Piに接続して、growth_daqを実行すると、パルス信号をセルフトリガ方式でトリガしてFITSファイルやROOTファイルにデータを保存できます。なお、growth_daqはC++で記述されたスタンドアロンのプログラムですが、FPGAボードを制御したり取得したデータを伝送したりする機能はライブラリとして分離されています。このライブラリのクラスをユーザが自作したプログラムから利用すれば、実験ごとの要求に応じたデータ取得プログラムを開発することも可能です。 今回はこのgrowth_daqの入手方法、ビルド手順と実行方法を説明します。 この手順にそって作業していても、依存関係のエラーが出る場合があります。その場合はお手数ですが、このブログのコメント欄かgithubのIssueページで連絡してください。 GROWTH-DAQの入手とビルド gitレポジトリのクローン growth_daqは、githubで公開されているGROWTH-DAQというgitレポジトリに入っています。Mac/Raspberry Pi上のコマンドラインから以下のようにしてcloneしてください。gitが入っていない場合は、Homebrewやapt-getでインストールしてください。git submoduleコマンドは、GROWTH-DAQが依存しているライブラリのうち、githubからcloneできるものを自動的にcloneしてくるためのコマンドです。具体的には、GROWTH-DAQ/.gitmodulesに列挙されたライブラリがcloneされます。 なおGROWTH-DAQは、GROWTH実験で開発した検出器システムを雷雲ガンマ線の観測実験で屋外で自律運用するためのソフトウエア群をまとめたgitレポジトリなので、トップディレクトリのREADME.mdではGROWTH-FY2016(とそれ以降)の検出器を駆動する際の手順が説明されています。growth_daqはdaq/内に格納されており、対応するREADMEファイルはdaq/README.mdです。 依存関係のインストール Macでは、Homebrewをインストールしてから、以下の手順でgrowth_daqが依存しているライブラリをインストールしてください。 Raspberry…

SpaceWire-RMAPのCRCを計算するサンプル

もう最近ではぜんぜんSpaceWireを使っていませんが、コンピュータの中なら出てきたので、C++11に書き直してgistにあげておきました。C++11だと、{}を使ったUniversal Initiaizationが使えるので、パケットのバイト列を入れたstd::vectorを初期化するのも楽ですね。(昔はpush_backをずらずら書いていた、、、) 参考: C++11 Universal Initialization は、いつでも使うべきなのか – Qiita Macで以下のgistのC++ファイルとMakefileをダウンロードして、同じフォルダに入れてmakeするとコンパイルされて、以下のように実行できます。Macじゃない人はMacを買ってください。 crc_example.cc – gist.github.com View the code on Gist.

gdbでUnable to find libthread_db matching inferior’s thread libraryという警告がでる

メモ。 gdbを使おうとした時に以下の様なエラーがでてgdbでデバッグできない場合は、libpthreadやlibthread_dbがstripされていることが原因。 libpthreadやlibthread_dbを生成するクロスコンパイル環境の設定で、これらのライブラリからデバッグ情報を取り除かない設定してビルドしなおすとデバッグできるようになります(glibcの生成段階のオプションになっていることがあります)。 fileコマンドでlibpthreadの状態を確認すると、stripされていることがわかります。

GROWTH FPGA/高速ADCボード – 1 – 概要など

昨年アカデミストを通じてクラウドファンディングにも挑戦した「雷雲ガンマ線実験(雷雲中の高電場での粒子加速に迫るための実験 = GROWTH実験)」の、2016-17年の冬シーズンの観測実験にむけて、ガンマ線検出器の小型化と多点観測にむけた量産を進めています。(ちなみに実験の初期の頃の信号処理システムは、大型のデスクトップマシンと「VME」や「NIM」という規格のこれまたデスクトップPCくらいのサイズのADC/アンプボードでした。これらを格納するために人が入って数日暮らせるくらいの大きさのアルミフレーム製の小屋を(榎戸さんが)作って観測場所に持って行きました。信号処理回路やPC、データ記録装置(SDカード)まで含めて10cm角サイズに収まるようになったことは感動的なエレクトロニクス技術の進歩です) 雷雲ガンマ線実験(GROWTH実験) – 京都大学の榎戸さん、原研の土屋さん、東京大学の中澤さん、和田さん、奥田さん、理研の中野さんなどと進めている楽しい基礎科学の観測実験プロジェクト。2015年度の観測結果のまとめは「冬季雷雲のガンマ線測定を狙う多地点観測システムの新規開発」(榎戸、湯浅、和田ほか 2016年5月)を参照してください。 先日、榎戸さんの研究費でシマフジ電機とともに開発したFPGA/高速ADCボードが届いたので、週末や夜の時間をつかってFPGAのコーディングを進めました。2015年度の観測装置のSpartan-6 FPGAボードで動いていたパルス計測用のVHDLコードが、今回のボードのArtix-7 FPGAとAD9231という50Mサンプル/秒のADCチップでも動作するようになりました(8月最終週)。また、9月3-4日の週末を使って、このFPGA/ADCボードに載せてあるSPIのSlow ADC/DACとLED、GPIOピンをRaspberry Piから制御することもできるようになりました。 今後何回かに分けて、このボードの試験の様子をレポートしていきます。このボードを使う実験メンバや、他の実験向けに利用してみたいという人の参考になれば幸いです。 【2016年12月28日追記】 GROWTH関連の成果物(ハードウエア/ソフトウエア)を利用する人が、使い方やコードの改良について質問・議論するためのGoogleグループ「GROWTH Users Group」を作成しました。Googleアカウントでログインすれば誰でも登録申請できるようにしているので、興味のある方は登録してみてください。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 初回はボードの概要と仕様をまとめます。 GROWTH FPGA/ADCボードの概要…

numpy.fftのテンプレート

matplotlibのテンプレートにつづいて、numpyでFFTするときのテンプレートです。1.5 MHzのsin関数を5.8MHz 4ビット分解能のADCで5000点サンプルしたときの結果です。np.fft.fftfreq()関数で周波数軸も求められるので、Hzで表示しています。 GistにはJupyter Notebookをそのままアップロードしておいたので、プロット結果、sin.textの中身とあわせて見ることができます。  

Raspberry PiでI2C接続の128×64 OLEDに日本語を表示(美咲フォント)

先日のmbed nucleoでの128×64ピクセルOLEの駆動試験に続き、今年の冬の雷雲ガンマ線観測で使用するRaspberry Pi 3でも128×64ピクセルのOLED(Alibabaの販売サイト/Adafruitの販売サイト)をI2Cインタフェース経由で駆動してみました。画面そのものは小さいですが、16×2行のディスプレイよりも少ないインタフェース線数で、より多くの情報を表示することができます。みなさんも自分の電子工作で使ってみては。 【参考】雷雲プロジェクト – Thundercloud Project 概要 基本的にはAdafruitによるチュートリアル「SSD1306 OLED Displays with Raspberry Pi and BeagleBone Black」の手順通り。日本語フォントの読み込みと文字の表示のところだけ新規要素になります。 SSD1306というコントローラを搭載したディスプレイで使用できるAdafruitのPythonライブラリ(github)をつかうと、I2CもしくはSPIで接続したディスプレイに対して、テキストや図形の表示が簡単にできます。さらにTTF形式のフォントが読み込めてテキストごとにフォントを変更できるうえ、フォントサイズも簡単に指定できます。 美咲フォントのTTFファイルを読み込むことで、1文字8×8ピクセルの日本語(漢字も!)が表示できるようになります。ライブラリ製作元のAdafruitと美咲フォントの製作者の「門真 なむ」さんに感謝(懐かしいポケコンのプログラムなども公開されています)。 実行結果 以下のようになります。ちゃんと読めますよね!? 表示しているテキストは雷雲ガンマ線観測データを公開している「雷雲プロジェクト – Thundercloud Project」の冒頭部分(このディスプレイとは関係ないですが、thdr.infoでは皆さんも雷雲ガンマ線の観測データの解析に参加できるようになっています)。 最近の研究から、地球上のカミナリ雲でも電子が高いエネルギーにまで「加速」されている証拠が見つかってきました。加速された電子が大気分子と衝突することで生じるガンマ線がカミナリ雲からビーム状に放出されていることがわかったのです!…

Pythonのスプライン補間はscipyのInterpolatedUnivariateSpline

1000ノット以上のデータを補完しようとしてメモリ不足になる場合は、numpyのinterp1dではなく、scipy.interpolate.InterpolatedUnivariateSpline(x,y,k)を使いましょう。 たとえば という感じ。 「numpy スプライン補間」で検索すると、10点くらいのデータ点をサンプルに示して、interp1dを使えと書いてある記事が散見されます。これだと10万以上のノット数ではうまくいきません。Python 2系列でしか試せていないのですが、interp1dだと10万ノットで10GBを超えるようなメモリを確保しようとして、プログラムが応答しなくなります。InterpolatedUnivariateSplineだとすぐ完了します。日本語で検索しても同じ症状で困っている人がすぐに見つかりませんでしたが、英語だとStuckoverflowで「Cubic spline memory errorCubic spline memory error」という記事があって、InterpolatedUnivariateSplineを使え、と書かれています。 Pythonを使い始めました それにしても、RubyROOTやRubyFitsを使って、なるべくデータ解析もRubyで完結させるようにこだわってやってきましたが、会社ではPythonがスタンダードで、そうも言っていられなくなってきたので、いよいよPython (numpy/matplotlib)も使うことになりました。Jupyter便利ですね。 gistでJupyterのnotebookを共有しましょう 最近会社の人から教えてもらったのですが、gistでは2015年5月からJupyterのnotebookの見た目をたもったもったままレンダリングしてくれるようになっています(プロットもインラインで表示されます)。チームの人と解析結果を共有するのも簡単ですね。 [tmkm-amazon]4873116554[/tmkm-amazon]

HongoWikiを移設しました

新しいサーバへ移動しました 東京大学のサーバが不釣になって見られなくなっていたHongoWikiを、自前のサーバに移動して再開しました。新しいアドレスは以下のとおりです。そのうち、Googleの検索ランクも戻ってくると思います。あと、Mediawiki→Jekyllの変更にともない、コメント管理サービスDisqusを使ってコメント欄も付けているので、質問や改善のコメントがある人は気軽に書き込んでください。 HongoWiki – http://ytkyk.info/wiki/ (トップページからページの一覧が見れます) トップページと同じ説明文章を掲載しておきます。ページの追加や内容の更新に興味のある人は、コメント欄から連絡してください。 HongoWikiは2007-2016年に東京大学牧島・中澤研のサーバ上で公開されていた、 高エネルギー宇宙物理学分野の研究に関連した情報をまとめるためのWikiです。 詳細はHongoWikiについてを参照してください。 2016年にサーバトラブルにより閲覧できなくなっていたものを、新しいサーバで公開することにしました。記録的な意味がほとんどで、情報のアップデートはあまりされないと思います。 もし、ギブアンドテイクの精神で、自分でページを作って室の向上に貢献したいというえらい人がいたら、コメント欄で連絡してください。Jekyllのgitレポジトリを編集できるようにして、ページの追加・内容の改修ができるようにします。Markdownで記事が書けて、gitが使えれば大学院生・ポスドク・大学のスタッフ、誰でも歓迎です。 ★暫定的な注意事項★ 画像を含むページはまだ復元できていません。本郷のサーバのバックアップから、画像データをサルベージできた段階で追加します。 よく閲覧されているページへの直接リンク Xspecで自分のモデルを関数として入れる Xspecで自分のモデルをテーブルとして入れる Xspec11ユーザのためのXspec12入門講座 nano【標準で入っていて使い勝手の良いコマンドラインエディタ】 [tmkm-amazon]4883375536[/tmkm-amazon]