魔法少女まどかマギカ
バクマン
べるぜバブ
みつどもえ
夢食いメリー
ドラゴンクライシス
これはゾンビですか?
それでも町は廻っている
とある魔術の禁書目録
かみちゅ!
STAR DRIVER
兄
未視聴
フラクタル
放浪息子
インフィニットストラトス
mzmttks's blog for my memorandum の略で mzrandum. Topics are: python, book review, and my hobbies.
2011年1月7日金曜日
tar.gz ファイルを展開してファイルを一つずつ取ってくる python スクリプト
tar.gz で固めたファイルを HDD に書き出すこと無く取り出すスクリプト。
import tarfile
x = tarfile.open("something.tar.gz", "r:gz")
for f in x.getmembers():
fileobj = x.extractfile(y.name)
import tarfile
x = tarfile.open("something.tar.gz", "r:gz")
for f in x.getmembers():
fileobj = x.extractfile(y.name)
ラベル:
python
2011年1月6日木曜日
kinect から 距離画像を取ってくるROSパッケージ
kinect の記事を書いたらアクセスが増えたので追加してみます。
今回は、ROS 経由でkinect の距離画像を取ってくる方法です。
(1) ROS パッケージを作成
ここでは kinectTest という名前にしてみます。
roscreate-pkg kinectTest rospy roscpp std_msgs
この辺は、 ROS のチュートリアル (http://www.ros.org/wiki/ROS/StartGuide) にあります。
(2) ROS_PACKAGE_PATH に kinectTest へのパスを通す。
ディレクトリが /opt/kinectTest だとすると、
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/opt/kinectTest
(3) node 作成。
kinectTest ディレクトリ以下に node ディレクトリを作成し、
以下のスクリプトをおく。
そして、実行権限を与える。 (chmod +x ファイル名)
#!/usr/bin/env python
import roslib
roslib.load_manifest('kinectTest')
roslib.load_manifest('openni_camera')
import rospy
from sensor_msgs.msg import PointCloud2
import numpy
import pylab
import time
def callback(data):
resolution = (data.height, data.width)
# 3D position for each pixel
img = numpy.fromstring(data.data, numpy.float32)
x = img[0::4].reshape(resolution)
y = img[1::4].reshape(resolution)
z = img[2::4].reshape(resolution)
# show them
print time.asctime()
pylab.clf()
pylab.imshow(numpy.flipud(z), interpolation="nearest",
vmax=3, vmin=0)
pylab.xlim([0, data.width])
pylab.ylim([0, data.height])
pylab.colorbar()
pylab.draw()
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('/camera/depth/points2',
PointCloud2, callback)
rospy.spin()
if __name__ == "__main__":
pylab.ion()
listener()
今回は、ROS 経由でkinect の距離画像を取ってくる方法です。
(1) ROS パッケージを作成
ここでは kinectTest という名前にしてみます。
roscreate-pkg kinectTest rospy roscpp std_msgs
この辺は、 ROS のチュートリアル (http://www.ros.org/wiki/ROS/StartGuide) にあります。
(2) ROS_PACKAGE_PATH に kinectTest へのパスを通す。
ディレクトリが /opt/kinectTest だとすると、
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/opt/kinectTest
(3) node 作成。
kinectTest ディレクトリ以下に node ディレクトリを作成し、
以下のスクリプトをおく。
そして、実行権限を与える。 (chmod +x ファイル名)
#!/usr/bin/env python
import roslib
roslib.load_manifest('kinectTest')
roslib.load_manifest('openni_camera')
import rospy
from sensor_msgs.msg import PointCloud2
import numpy
import pylab
import time
def callback(data):
resolution = (data.height, data.width)
# 3D position for each pixel
img = numpy.fromstring(data.data, numpy.float32)
x = img[0::4].reshape(resolution)
y = img[1::4].reshape(resolution)
z = img[2::4].reshape(resolution)
# show them
print time.asctime()
pylab.clf()
pylab.imshow(numpy.flipud(z), interpolation="nearest",
vmax=3, vmin=0)
pylab.xlim([0, data.width])
pylab.ylim([0, data.height])
pylab.colorbar()
pylab.draw()
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('/camera/depth/points2',
PointCloud2, callback)
rospy.spin()
if __name__ == "__main__":
pylab.ion()
listener()
(4) 走らせる。
まず kinect から画像を取得する。
roslaunch openni_camera openni_kinect.launch
次に、本プログラムを実行
rosrun kinectTest showDepth.py
すると、距離画像がリアルタイムで表示されます。
やや遅いのは pylab.draw を使っているからでしょう。
---
これで z に距離画像の2次元配列を得ることができるので、
色々やると何か新しいことができそうです。
ラベル:
python
2011年1月5日水曜日
How to read MATLAB .mat by python (scipy)
python で MATLAB の .mat ファイルを読む方法
MATLAB の .mat ファイルとは、 MATLAB のコンソールで
save ファイル名 保存したい変数名
で生成される MATLAB 用のファイル。
計算結果の保存とかに使う。
例:
save result.mat resultMatrix
scipy.io.matlab.mio を使う。
これが .mat ファイルのインターフェイスになっている。
import scipy.io.matlab.mio
import numpy
import sys
filename = sys.argv[1]
obj = scipy.io.matlab.mio.MatFile5Reader(open(filename))
var = obj.get_variables()['var']
#var is the name of a variable you want to get
matlab で保存した計算結果を python で扱いたいときに便利。
MATLAB の .mat ファイルとは、 MATLAB のコンソールで
save ファイル名 保存したい変数名
で生成される MATLAB 用のファイル。
計算結果の保存とかに使う。
例:
save result.mat resultMatrix
scipy.io.matlab.mio を使う。
これが .mat ファイルのインターフェイスになっている。
import scipy.io.matlab.mio
import numpy
import sys
filename = sys.argv[1]
obj = scipy.io.matlab.mio.MatFile5Reader(open(filename))
var = obj.get_variables()['var']
#var is the name of a variable you want to get
matlab で保存した計算結果を python で扱いたいときに便利。
ラベル:
python
2010年12月23日木曜日
Ubuntu 10.04 への Kinect ドライバのインストールとROSのインストール
ROS とか kinect とかのインストールに、いろんなサイトを集めることで成功したので
以下にまとめる。
基本的に 参考URL のコピペなので、うまくいかないときは参考URL先も参照。
インストール
参考URL
Japanese: http://tclip.blog38.fc2.com/blog-entry-103.html
English http://www.keyboardmods.com/2010/12/howto-kinect-openninite-skeleton.html
インストール手順
ROS関係のインストール
ROS のインストール
まずは以下を参考に ROS をインストールする。http://www.ros.org/wiki/cturtle/Installation/Ubuntu
ただし、apt-get する必要があるパッケージは以下
sudo apt-get install ros-cturtle-base
ROS ni パッケージ
参考URL
http://www.ros.org/wiki/kinect : hack版ドライバ freenect 用 ROS Stack
http://www.ros.org/wiki/ni : 公式版ドライバ用 ROS Stack
基本的には下。モータとかを使うには上を使うらしい。
インストール手順
以下にまとめる。
基本的に 参考URL のコピペなので、うまくいかないときは参考URL先も参照。
インストール
参考URL
Japanese: http://tclip.blog38.fc2.com/blog-entry-103.html
English http://www.keyboardmods.com/2010/12/howto-kinect-openninite-skeleton.html
インストール手順
- 必要なパッケージのインストール
sudo apt-get install git-core cmake libglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev doxygen graphviz
- gitのプロキシ設定 (必要なら)
git config --global http.proxy proxy-address:portnumber
- 作業ディレクトリ作成
mkdir /opt/kinect
- OpenNI インストール
cd /opt/kinect
git clone https://github.com/OpenNI/OpenNI.git
cd OpenNI/Platform/Linux-x86/Build
make && sudo make install
- Kinect ドライバインストール
cd /opt/kinect
git clone https://github.com/ros-pkg-git/Sensor.git
cd Sensor/Platform/Linux-x86/Build
make && sudo make install
- NITE インストール
http://www.primesense.com/?p=515 の右側 Download NITE から、
Download NITE SDKを /opt/kinect にダウンロード。
32bit マシンなら x86, 64bit マシンならx64 を選択。
cd /opt/kinect
tar -xf NITE-Bin-Ubuntu-x86-1.3.0.17.tar.bz2
cd NITE-Bin-Ubuntu-x86-1.3.0.17
sudo ./install.bash
# キーは 0KOIk2JeIBYClPWVnMoRKn5cdY4=
- xml ファイルの編集
Niteのディレクトリの Data/*.xml を編集
3rd line:
<license key="0KOIk2JeIBYClPWVnMoRKn5cdY4=" vendor="PrimeSense"/>
17th line:
<MapOutputMode fps="30" xres="640" yres="480"/>
- kinect の テスト
kinect をPCに接続 (plug kinect)
Nite-1.3.0.17/Samples/Bin 以下のプログラムを実行 - Sample-Players 人の識別, 骨格モデル?の検出
Sample-PointViewer 手を降る or 手を前に突き出すことで手の位置検出、追従 - コツ
kinect から2~3 m 離れると認識されやすい。
Sample-Players で骨格トラッキングされるのは青く識別された人だけ?
ROS関係のインストール
ROS のインストール
まずは以下を参考に ROS をインストールする。http://www.ros.org/wiki/cturtle/Installation/Ubuntu
ただし、apt-get する必要があるパッケージは以下
sudo apt-get install ros-cturtle-base
ROS ni パッケージ
参考URL
http://www.ros.org/wiki/kinect : hack版ドライバ freenect 用 ROS Stack
http://www.ros.org/wiki/ni : 公式版ドライバ用 ROS Stack
基本的には下。モータとかを使うには上を使うらしい。
インストール手順
- rosinstall のインストール
sudo apt-get install python-setuptools git-core
sudo easy_install -U rosinstall
最後に .bashrc の編集を指示されるのでしたがう
もしrosinstall の install に失敗したら
以下から tar.gz をダウンロード
http://pypi.python.org/pypi?%3Aaction=search&term=rosinstall
tar.gz を解凍し、できたディレクトリに移動しえ、以下でインストール
sudo python setup.py install
- ROS-NI をダウンロード and インストール
echo "- git: {local-name: ni, uri: 'https://github.com/ros-pkg-git/ni.git', version: master}" > /tmp/ni.ri
rosinstall ~/ni /opt/ros/cturtle /tmp/ni.ri
. ~/ni/setup.sh
rosmake ni
.bashrc に ~/ni/setup.sh を追加しておくと便利。
- USBデバイスファイルの準備
sudo cp `rospack find ps_engine`/install/55-primesense-usb.rules /etc/udev/rules.d/
sudo adduser YOUR USERNAME users
reboot
- テスト
二つの端末で実行
1st terminal
roslaunch openni_camera openni_kinect.launch
2nd terminal
rosrun rviz rviz
左上の: Fixed Frame を /openni_depth_frame に、Target Frame をにする。 左下の Add ボタンをクリックし、 Point Cloud2 を選択
Topic に /camera/depth/points2 を選択
マウスの右・左・中ボタンを駆使して表示を見る
もし、rviz で失敗したら
sudo apt-get install nvidia-cg-toolkit --reinstall
もし、nvidia-cg-toolkit のインストールも失敗したら
http://developer.nvidia.com/object/cg_download.html から Cg toolkit の deb パッケージをダウンロード
次コマンドでインストール。ただしファイル名は環境によって変わる。
sudo dpkg -i Cg-3.0_November2010_x86.deb
ラベル:
python
2010年12月19日日曜日
今日のワイン
ボルドー LA GARROUSSE 2006年 (Grand Vin de Bordeaux)
香りがフルーティでおいしい。
それから、カナートの地下食料品売り場 SUZUYA のフランスパンもおいしかった。
あとはフランスで買ったブルーチーズの組み合わせ。
すばらしい。
香りがフルーティでおいしい。
それから、カナートの地下食料品売り場 SUZUYA のフランスパンもおいしかった。
あとはフランスで買ったブルーチーズの組み合わせ。
すばらしい。
2010年12月6日月曜日
特定のディレクトリを除いてfind
ホームディレクトリ以下の、
ignore ディレクトリを除く、すべてのディレクトリから .txt を探したいとき
find $HOME -path "$HOME/ignore" -prune -o -name "*.txt"
参考URL:
http://d.hatena.ne.jp/yanma_4/20080721/1216617075
ignore ディレクトリを除く、すべてのディレクトリから .txt を探したいとき
find $HOME -path "$HOME/ignore" -prune -o -name "*.txt"
参考URL:
http://d.hatena.ne.jp/yanma_4/20080721/1216617075
ラベル:
tips
登録:
コメント (Atom)