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