Yura YuLife

ITエンジニアの覚え書き

matplotlib でプロット上の点をドラッグする例

Python の matplotlib 上で、マーカーをドラッグ可能にするプログラムの参考例です。 動作環境 python 2.7 matplotlib 1.5.3 実装例 github.com 使い方 プロット上で左クリックで点を追加 プロット上の点をドラッグで移動 プロット上の点を右クリックで削除 …

rosbag から連番の画像ファイルを生成する

ROS

カメラ画像を録画した rosbag データから、連番の画像ファイルを生成する方法です。 画像ファイルを生成する 基本的には ja/rosbag/Tutorials/Exporting image and video data - ROS Wiki に載っている手順の通りに行うだけです。 launch ファイルの作成 以…

BitBucket で Git LFS の転送に失敗する場合の対処法

動作環境 Ubuntu 16.04 Git LFS でサイズの大きいファイルの転送に失敗する場合 Git LFS を用いて BitBucket にサイズの大きいファイルを push する場合、 timeout エラーが発生して失敗することがあります。 特に HTTPS ではなく SSH で接続している場合に…

python の multiprocecssing.Pool.map で複数の引数を持つ関数を扱う

python の multiprocessing を用いてマルチスレッド処理を行う際に、複数の引数を持つ関数を扱うときの Tips です。 動作環境 Python 2.7 方法 やり方は簡単で、目的となる関数をラップするだけです。 # -*- coding: utf-8 -*- from multiprocessing import …

ansible でネストされた item に対してループを回す

動作環境 ansible 2.1 with_subelements でネストされたループを回す with_items のかわりに with_subelements を利用することで、ネストされた item に対してループを回すことが出来ます。 例 vars/main.yml users: - sam: email: - sam@example.com - sam@…

Mac で ROS の環境構築

Mac OSX で ROS を動かすまでの環境構築手順です。 環境 Mac OSX El Capitan ROS Kinetic ROS の環境構築 GUI 系のツールを動かそうとすると Qt5 周りの依存関係でハマったので、とりあえず ROS の基本パッケージのみ(ROS-Comm)の環境構築を行いました。 基…

ROS開発にPyCharmやCLionを使う際のTips

この記事では ROS の開発に Jetbrains 製の IDE である PyCharm や CLion を使う際に、便利に開発を進めるための設定を紹介しています。 環境 Ubuntu 16.04 (14.04) ROS Kinetic (Indigo) PyCharm 2016.X CLion 2016.X 環境変数を設定 Ubuntu にインストール…

FTDI FT2232C用のudevルール

FTDIのFT2232C (Dual RS-232)というUSBシリアルを接続した際に、他のデバイスと識別できるよう、/dev/以下にシンボリックリンクを作成するudevのルールです。 通常のUSBデバイスならば、Vendor IdとProduct Idを指定すれば良いのですが、FT2232Cは2つのシリ…

ROS Pythonでオイラー角とクォータニオンの相互変換

ROSでオイラー角とクォータニオンを変換するには、tfパッケージの関数を利用すれば良いのですが、 単体の関数として使うには少々使いづらいので、簡単なラッパー関数を作りました。 オイラー角からクォータニオンへの変換 import tf from geometry_msgs.msg …

ROS Pythonにおけるuint8[]の扱い方

ROSでuint8[]型を利用しているトピックをPythonで使う場合にハマった点です。 環境 Ubuntu 14.04 ROS Indigo rospyにおけるuint8[]型の扱い ROSのメッセージ型に関するリファレンスを参照すると、uint8[]型について以下のような記述があります。 uint8 has s…

BitBucketとWerckerでウェブサイトを自動デプロイ

タイトルの通り。BitBucketとWerckerとFTP(lftp)で静的なウェブサイトを自動デプロイする方法です。 ちなみにBitBucketとWerckerを使っているのは、プライベートリポジトリを無料で使えるから。 BitBucketの設定 Gitのリポジトリを作って、ウェブサイトのフ…

ニューラルネットで声から体調を推定するシステムを作りました

IDCフロンティア主催のIoTと健康をテーマにしたハッカソン、サバフェス 2016で Healthy Voice Netというシステムを作ったので紹介します。大雑把に言うと、ニューラルネットワークを用いて声色を分類することで、声から体調が分かるシステムです。 プレゼン…

ROSのbagファイルから特定トピックをcsv形式で出力する

ROS

めちゃくちゃ簡単。 環境 Ubuntu 14.04 ROS Indigo bagファイルをcsv形式で出力 以下のコマンド1行でいける。 $ rostopic echo -b bagファイル.bag -p /トピック名 > csvファイル.csv 例えば、Twist形式だと以下のようになる。 $ rostopic echo -b bagファイ…

aitendoの脈波センモジュールをArduinoで使ってみる

aitendoの脈波センモジュールをArduinoに接続して脈波を取ってみます。 必要なもの 脈波センモジュール - aitendo Arduino Uno ジャンパーワイヤ3本(センサモジュールに付属) 接続方法 基板にマイナスマークのついている端子をArduinoのGNDに、プラスマーク…

iframeを含んだページでBootstrapのメニューが開閉しない

Bootstrapで、iframeが含まれているページを作った時に、navbarが開閉できないという問題に遭遇しました。 問題のiframeは以下の通り。 <iframe src="hoge.html" class="hoge" name="hoge" width="340" height="200"> 原因は単純で、</iframe>で閉じるのを忘れていただけで、以下のように修正したら無事動くようになりました。 <iframe src="hoge.html" class="hoge" name="hoge" width="340" height="200"></iframe> 参考URL j…

ArduinoでSRF02のI2Cアドレスを書き換え

Arduinoで超音波距離センサ SRF02のI2Cアドレスを書き換える方法です。 元のアドレスを確認 デフォルトではSRF02のアドレスは0xE0(224)なので、I2CScanerのスケッチを利用すると、0xE0の上位7bitである0x70(112)にデバイスが見つかります。 シリアルモニタの…

RealSense R200の新しいROSパッケージ(realsense_camera)のインストール手順

2016年3月1日にIntelからRealSense R200の新しいROSパッケージがリリースされましたので、早速インストールして使ってみました。 GitHub - intel-ros/realsense: Intel(R) RealSense(TM) ROS packages 動作環境 Ubuntu 14.04 ROS Indigo RealSense R200 Came…

Milkcocoaを使ってセンサー情報をウェブサイトで表示

Milkcocoaを利用すると、センサー情報をクラウドに上げてウェブサイト等で利用するといった、IoTチックなことが超簡単にできてしまいます。 僕も、自宅にあるRaspberry Piに接続した温湿度センサとPIRセンサの値をMilkcocoaにアップロードして、僕のウェブサ…

PIRセンサ(SB00412A-1)とMilkcocoaで簡易見守りシステムを構築

見守りシステムで家の中に監視カメラを置くなんて話がありますが、さすがに部屋をずっと撮影されているといい気持ちはしないと思います。そこで、前の記事で紹介したaitendoの人感センサ(SB00412A-1)のデータをRaspberry PiからMilkcocoaにアップロードして…

Raspberry Piで人感センサ(SB00412A-1)を5Vで利用する方法

aitendoで購入したPIRセンサ(SB00412A-1)ですが、Raspberry Piで3.3Vで利用すると誤検知を繰り返し動作が不安定なので、5Vで利用する方法をまとめました。 必要なもの Raspberry Pi2 Model B 低電圧極小PIRセンサー SB00412A-1 1kΩ以上の同じ種類の抵抗 3個 …

ROSのPointCloud2で独自のフィールドを定義

ROSのpclパッケージで独自のフィールドを定義したPointCloud2のトピックをpublish, subscribeする方法です。 環境 Ubuntu 14.04 ROS Indigo スクリプト例(Publisher) rvizで確認 上記のスクリプトを動かし、rvizでPointCloud2型の/custom_point_cloudトピッ…

Python, OpenCVでRGBとHSVを相互変換

動作環境 OpenCV 2.4.8 OpenCVでRGBとHSVを相互変換 画像のRGBとHSVをまるごと変換するにはcv2.cvtColorをそのまま使えばよいのですが、こちらはRGBとHSVの値を1ピクセルだけ変換するためのラッパー関数です。 import numpy as np import cv2 def hsv_to_rgb…

人感センサ(SB00412A-1)検知時にLEDを光らせる

aitendoで人感センサ(SB00412A-1)を購入したので、センサが人を検知した時にLEDを光らせてみました。 追記(2016/02/28) SB00412A-1を3.3Vで接続すると動作が不安定になるため、5Vでの接続を推奨します! 接続方法は、Raspberry Piで人感センサ(SB00412A-1)を…

Raspberry Piでスイッチを押すと音楽を再生する

Raspberry Piに接続したタクトスイッチを押すと、音楽を再生するPythonのスクリプトです。 ちなみに、上の動画で流れているのは僕のバンドCosmic Time Scaleの曲です。 必要なもの Raspberry Pi2 Model B (Raspberry Pi A/B+も可) タクトスイッチ 10kΩの抵抗…

Raspberry Piに接続したLCD(ACM1602NI)をPythonで動かす

Raspberry PiにI2Cで接続したLCD(ACM1602NI-FLW-FBW-M01)を、Pythonから動かします。 ソースコード、セットアップ手順はGitHubにて公開しています。 github.com 必要なもの Raspberry Pi2 Model B (Raspberry Pi A/B+も可) LCDモジュール(ACM1602NI-FLW-FBW-…

PCがRealSense R200をUSBハブに接続するとPCから認識できない

タイトルの通り。 IntelのRealSense R200をUSBハブやUSB延長ケーブルに接続すると、PCから認識できないことがあります。 これは単純に電力の供給不足が原因です。 RealSenseなどの深度センサでは、赤外線レーザーによってパターンを照射し、赤外線カメラによ…

PythonでGoogle Drive API v3を利用して画像のアップロード

PythonでGoogle Drive API v3を利用して、 GoogleDriveにフォルダを作成し、ローカルのフォルダ内の画像をアップロードするスクリプトです。 環境 Python 2.7 Mac OSX / Debian Google Drive APIの有効化と認証情報の取得 プロジェクトの作成 https://consol…

シェルスクリプトで日付が有効かをチェックし、開始・終了日間でループする

シェルスクリプトで、特定の日付間のログのみを抽出する等の処理をする際に、日付でループするコードの例です。 サンプルコード loop_date.sh #!/bin/bash # 有効な日付ではない場合は終了する関数 function check_date() { date -d "$1" || exit 1 return 0…

CSSで等幅フォントの指定

CSS

ウェブサイトやブログ記事でソースコードなどを掲載する場合の、等幅フォントの設定例です。 はてなブログの<pre class="code"></pre>に適用されるCSSに、日本語にも強いソースコード向けの等幅フォントRicty Diminishedを追加しています。 pre.code { font-family: 'Ricty Diminishe…

シェルスクリプトで正規表現マッチ

シェルスクリプトで引数による条件分岐をする際にif文の列挙やcase文を利用する場合は多々あると思いますが、 単純に引数のチェックのみを行いたいときはbashの正規表現マッチで調べるのが簡単です。 bashでの正規表現マッチ 例えば、第一引数が正規表現^h.+…