ROSのコマンド覚え書き
調べる系
rostopic type /..
,rosservice type
topic,serviceの型を調べる
rostopic list
,rosservice list
,rosparam list
現在登録されているすべてのTopic,Service,パラメータが表示される
rosservice type /.. | rossrv show
サービスが受け取る引数と戻り値を調べる
rosmsg show /..
メッセージの名前や型を調べる
起動系
rosservice call /..
Serviceを呼び出す
ツール系
rqt_graph
ノード同士の関係を表示する
rqt_console
コンソールで、流通しているTopicやServiceを確認する
ファイルのアーカイブと圧縮とパスワード保護
tarコマンド
用途
ファイルをアーカイブ(まとめる)する
- アーカイブファイルの作成
$ tar cf <アーカイブファイル> <アーカイブ元のファイルパス>
- アーカイブファイルの内容を確認する
$ tar tf <アーカイブファイル>
- アーカイブファイルの展開
$ tar xf <アーカイブファイル>
- アーカイブ + 圧縮
$ tar czf <アーカイブファイル> <アーカイブ元のファイルパス>
gzipコマンド
用途
ファイルを圧縮する
- 圧縮
$ gzip <圧縮したいファイル>
- 圧縮ファイルを展開
$ gzip -d <圧縮されたファイル>
or$ gunzip <圧縮されたファイル>
zipコマンド
用途
ファイルのアーカイブと圧縮
- zipファイル作成
$ zip -r <圧縮ファイル名> <圧縮対象パス>
- zipファイルを展開
$ unzip <圧縮ファイル名>
- パスワード付きzipファイルの作成
$ zip -re <圧縮ファイル名> <圧縮対象パス>
bashのブレース展開で連番のファイルを作成
bashではブレース展開を用いることで、連番のファイルを作成することが出来る
{<開始>..<終了>}
例1 001.txtから020.txtまでを作成
$ touch {001..020}.txt $ ls 001.txt 003.txt 005.txt 007.txt 009.txt 011.txt 013.txt 015.txt 017.txt 019.txt 002.txt 004.txt 006.txt 008.txt 010.txt 012.txt 014.txt 016.txt 018.txt 020.txt
例2 A-Zまで表示
$ echo {A..Z} A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Pythonのデコレータ
作成した関数を書き換えずに、その関数の働きに変更を加えたい時、デコレータを用いることができる。 デコレータとは、入力として関数(変更を加えたい関数)を取り、出力として別の関数(変更を加える関数)を取る関数のことである。
具体例
引数として取ったふたつの数の和を返す関数add()があったとする。
def add(a,b): return a+b >>> add(3,4) 7
この関数を、中身を書き換えずに、"引数として取った二つの数の和の自乗"を返すようにしたい(つまり3と4を入れると72の49を返すようにする)。
ここで、デコレータを用いる。
デコレータは、引数として取った関数に対して処理を行う別の関数を定義し、その別の関数を返す。
def square(func): def new_func(*args,**kargs): result = func(*args,**kargs) return result ** 2 return new_func
作成したデコレータで関数を修飾するには、修飾したい関数の定義の直前に@<デコレータ名>とすればよい
@square def add(a,b): return a+b >>> add(3,4) 49
TensorFlowで乱数生成
一様分布
random_uniform関数を用いて一様に分布する乱数を生成する サンプル
#coding:utf-8 import tensorflow as tf #100次元、0から10まで一様に分布する不動少数点型の変数を作成 uniform = tf.random_uniform( \ [100],minval=0,maxval=10,dtype=tf.float32) sess = tf.Session() with tf.Session() as session: print uniform.eval()
正規分布
random_uniform関数を用いて正規分布する乱数を生成
#coding:utf-8 import tensorflow as tf norm = tf.random_normal([100],mean=0,stddev=10) with tf.Session() as session: print norm.eval()
シェルスクリプト覚え書きその2 制御構造編
条件分岐
- if文
例:ひとつ目の引数が1ならYES,そうでないならNOと出力
#!/bin/bash if [ "$1" = "1" ] ;then # [,],=の前後にスペースが必要 echo "YES" else echo "NO" fi
比較
文字列の比較
str1 = str2
str1とstr2が等しい
str1 != str2
str1とstr2が等しくない
-n str1
str1が空
-z str1
str1は空ではない整数の比較
int1 -eq int2
int1 == int2
int1 -ne int2
int1 != int2
int1 -lt int2
int1 < int2
int1 -le int2
int1 <= int2
int1 -gt int2
int1 > int2
int1 -ge int2
int1 >= int2
例:2つの引数のうち小さい方を表示する
if [ "$1" -le "$2" ];then echo $1 else echo $2 fi
- case文
<文字列>が<パターン>に一致する場合に処理を実行して抜ける
case <文字列> in <パターン1>) 処理 ;; <パターン2>) 処理 ;; esac
繰り返し
- for文
for文を用いるとリストの各要素について順番に処理を行うことが出来る
for <変数名> in <リスト> do 繰り返す部分 ここではリストの各要素が変数名で参照できる done
例 001.txtから005.txtまでの5つのファイルを作成*1
#!/bin/bash for n in $(seq 1 5) do touch "00$n.txt" done
- while文
<条件>が真である(終了ステータスが0である)間は繰り返し処理を行う
while <条件(コマンド)> do 繰り返し処理 done
例:無限ループ
一秒ごとにhogeと言う
#!/bin/bash while : do echo hoge sleep 1 done
*1:実際にはブレース展開のほうが便利 katorinax.hatenablog.com