今回の目標
EdisonもしくはPC上のpython環境からGR001を制御する.
これを実現するために以前C言語で作成した通信ライブラリrsxをpythonから利用できる様に拡張します.
拡張したライブラリを利用してpython環境からGR001を制御します.
※ :ライブラリの利用のみを行う場合には# 1.を飛ばしてください.
1. python用通信ライブラリ(rsxpy)のビルド/実行環境を構築
今回はEdison上でビルドします.
boost-pythonがビルドに必要で、ipythonが実行環境として便利なので
これらをインストールします.
1 | > sudo apt-get install libboost-python-dev |
2. ライブラリの取得
以前作成したRS301/RS302サーボ向けの通信ライブラリを修正するため
通信ライブラリrsxを取得します.
1 | git clone git@github.com:takarakasai/rsx.git |
3. ライブラリ内部の説明
rsxをpythonから利用するためのライブラリrsxpyに拡張します。
これにはboost_pythonを利用します.
3.1 全体構成
rsxpy向けに新たに用意したソースコードは以下のとおりです。
boost_pythonはC++のテンプレートライブラリなので、一旦C++によるラッパ(rsxpp)を作成して
boost_pythonにてpython向けのAPIを作成していきます.
1 | ./rsx/h/rsxpp/rsxpp.h // rsxライブラリのC++ラッパ |
3.2 C++によるラッパクラスの作成
ここではrsxppというクラスを作成します.
1 | -- h/rsxpp/rsxpp.h |
1 | -- h/rsxpp/rsxpp.h |
3.3 boost_pythonによるAPIの公開
1 | -- h/rsxpp/rsxpp.cc |
3 . ライブラリのビルド
1 | > m kdir build |
3. 実行
pythonのインタプリタを起動します.
ipythonだと関数や定数はタブ補完してくれます.
1 | > cd python |
ipythonのインタプリタから通信APIを叩いていきます.
1 | // ライブラリを読み込んで、通信クラスをインスタンス化します. |