DOBOTのサンプルプログラムのPython,C#,JAVAはDLLというものを参照しています。このDLLはC++で記述されているライブラリです。自分のOSにあったDLLがない場合は自分でコンパイルして作成することができます。今回はRaspberry Pi 3B+でDLLを作成し、それを使用してPythonでDOBOT M1を動作させる方法を記載します。動作している様子はこちら
DOBOT M1のDLLを作る
まずDLLのソースコードをダウンロードし、DobotDll.proを編集します。ダウンロードはこちら:DobotDll-M1-64x-source-20180227.zip
cd ~/Download unzip DobotDll-M1-64x-source-20180227.zip cd DobotDll vim DobotDll.pro
変更内容は次のようになります。(40行目付近)
DESTDIR = ../../../DobotDllOutput(変更前) DESTDIR = ../../DobotDllOutput(変更後)
依存パッケージをインストールし、コンパイルします。
sudo apt-get install libqt5serialport5 sudo apt-get install libqt5serialport5-dev qmake -o makefile DobotDll.pro make
makeをすると次のようなエラーが出るかもしれません。エラー内容に従ってファイルを修正し再度makeしてください。今回のエラーではsrc/ComPlatform/RingBuffer.cpp内の74,82,100,108行目にintを付けると解消できます。
========== src/ComPlatform/RingBuffer.cpp:74:5: error: ‘__disable_irq’ was not declared in this scope __disable_irq(); ^~~~~~~~~~~~~ src/ComPlatform/RingBuffer.cpp:82:5: error: ‘__enable_irq’ was not declared in this scope __enable_irq(); ^~~~~~~~~~~~ src/ComPlatform/RingBuffer.cpp: In function ‘void RingBufferDequeue(RingBuffer*, void*)’: src/ComPlatform/RingBuffer.cpp:100:5: error: ‘__disable_irq’ was not declared in this scope __disable_irq(); ^~~~~~~~~~~~~ src/ComPlatform/RingBuffer.cpp:108:5: error: ‘__enable_irq’ was not declared in this scope __enable_irq(); ^~~~~~~~~~~~
makeが成功した場合はホーム直下にDobotDllOutputというフォルダが生成され、中にlibDobotDllM1.so.1.0.0などのDLLが生成されます。DLLの作成は以上です。
サンプルプログラムを動作させる
DOBOT社のホームページの “DOWNLOAD CENTER / Development protocol”から”Dobot Demo v2.1″をダウンロードします。ダウンロードサイト
サンプルプログラムを展開します。今回はpythonを使用します。
cd ~/Download unzip Dobot-Demo-V2.1-en.zip cd 'Dobot Demo V2.1 - en' unzip demo-magician-python-32-master.zip mv demo-magician-python-32-master ~/dobot cd DobotDllOutput cp ~/dobot/DobotDllType.py
先ほど作成したDLLを読み込むようにプログラムを修正します。DobotDllType.pyの595行目付近を以下のように編集します。
return cdll.loadlibrary("./libDobotDll.so") (変更前) return CDLL("./libDobotDllM1.so") (変更後)
最後にDOBOT M1が2点間を移動するサンプルプログラムをこちらからダウンロードしてください:ptp_demo
ダウンロードしたら~/DobotDllOutputディレクトリ内にptp_demo.pyを移動します。そしてラズパイとDOBOT M1をシリアルケーブルで接続しプログラムを実行します。
cd ~/DobotDllOutput unzip ~/Download/ptp_demo.zip Python3 ptp_demo.py
DOBOT M1が上下に移動することができれば完了です。実行時にDobotDllType.py内の中国語によってエラーが発生するかもしれません。その場合はDobotDllType.pyの中国語をすべて削除してください。