Raspberry PiでDOBOT M1を動作させよう!

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の中国語をすべて削除してください。

お問い合わせ

dobot@techshare.co.jp