今回の目標
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 [email protected]: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 |
// ライブラリを読み込んで、通信クラスをインスタンス化します. |