読者です 読者をやめる 読者になる 読者になる

Pythonコードの中でシェルを使う

Pythonスクリプトの中からシェルのコマンドを呼び出して使う。

$ python
>>> import commands
>>> commands.getoutput("<任意のコマンド>")

ネットワーク関連のコマンド覚え書き

ゲートウェイのIPを調べる

$ route -n

IPアドレスMACアドレス等を調べる

$ ifconfig

同じLANに接続されているコンピュータのIPアドレス一覧を取得する

# arp-scan -I <ネットワークデバイス(wlan0等)> -l

シンボリックリンクの作成

シンボリックリンクとは、対象となるファイルやディレクトリへのパスが書かれた特殊なファイルである
シンボリックリンクを作成・削除しても、対象には何も影響を与えない。
またリンク対象の実体ファイルを削除すると、リンクが壊れる。

シンボリックリンクの作成

$ ln -s <リンク先の名前> <作成したいリンクの名前>

Pythonでリストの中身が勝手に変わってしまう時は

Python2.7

Pythonのあるリスト(Aとする)に別のリスト(Bとする)をアペンドすると、アペンドしたリスト(B)の変更がアペンド先のリスト(A)の中身に影響を与えることがある←よくわかってないです

>>> listA = ['A']
>>> listB = ['B']

>>> listA.append(listB)
>>> listA
['A',['B']]

>>> listB.append('C')
>>> listB 
['B','C']
>>> listA
['A',['B','C']] ← これ

これを回避するためには、copyモジュールのdeepcopy関数を使うと良いらしい。

>>> import copy

>>> listA = ['A']
>>> listB = ['B']

>>> listA.append(copy.deepcopy(listB)) ← ここで使います
>>> listA
['A',['B']]

>>> listB.append('C')
>>> listB 
['B','C']
>>> listA
['A',['B']] ← listBの変更の影響を受けなくなった

git,GitHubの便利なコマンド覚え書き

  • ワークツリー上での削除をGitHubに反映させる
    $ git commit -aの後$ git push

  • 直前のcommitのコメントを編集する
    $ git commit --amend

  • 今までの一連の変更内容を確認する
    $ git log -p

  • commitする前の変更を取り消す
    $ git checkout HEAD .

pythonのunittestの使い方

pythonのunittestモジュールを用いることで、関数のテストを行う

対象となるコード(target.py)

def myadd(a,b):
    return a+b

def mypow(a,b):
    return a**b

これをテストするコード(test.py)

#coding:utf-8
import unittest
from target import myadd
from target import mypow

class TestTarget(unittest.TestCase):

    def test_myadd(self):
        # 関数myaddのテスト
        input_1 = 2
        input_2 = 3
        expected = 5 # 期待される結果
        result = myadd(input_1,input_2)
        self.assertEqual(result,expected) # 結果が等しいかどうか確かめる

    def test_mypow(self):
        # 関数mypowのテスト
        input_1 = 2
        input_2 = 3
        expected = 8 # 期待される結果
        result = mypow(input_1,input_2)
        self.assertEqual(result,expected) # 結果が等しいかどうか確かめる

if __name__=="__main__":
    unittest.main()

assertEqual():結果が等しいかどうか確かめる
assertTrue():結果が真かどうか確かめる
assertFalse():結果が偽かどうか確かめる

ROSでワークスペースとパッケージを作る

ワークスペースの作り方

ROSのワークスペース(catkin_ws)を作成する

$ mkdir -p ~/catkin_ws/src  
$ cd ~catkin_ws/src
$ catkin_init_workspace  
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash (この行は~/.bashrcの最後に追記しておくとよい)

これでワークスペースが作成できる

パッケージの作り方  

ワークスペース中に新しいパッケージを作成する

$ cd ~/catkin_ws/src
$ catkin_create_pkg <パッケージ名> rospy roscpp std_msgs
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash

これで自作パッケージを使うことができるようになる