はじめに
こんにちは、しがない高校生をしているBasalteと申します。
今日は少しRobotis製品を触ってみたという記事です。
Openmanipulator-xやDiynamixelなどのRobotis製品は、製品の3DデータやROSのパッケージなどのオープンソースが数多く公開されています。
その中でもROSを使わない方法でOpenmanipulator-xを制御をしてみたかったので、Processingを使う環境を構築していきます。
まだ動いたわけではないので、自分用の備忘録として残しておきます。うまくいったらその時にまた更新します。
環境
・Intel MacOS sonoma
・Arduino IDE 2.2.1
・Processing 3.5.4
こちらの公式サイトに3.4.5で動作するという記載があったのでこちらを使用します。(最新は4.3)
Arduinoの構築(完了)
まず、Arduino IDEにボードを追加する必要があります。
左上のメニュー画面から、
Arduino IDE > perferences...
のsettingsの画面の下の方にURLを記述する欄があるので、こちらを追加します。
https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
次に、OpenCR用のライブラリをインストールします。
左上の Tools > Board: > Board Manager...
するとライブラリのリストがたくさん出てくると思うので、OpenCRを選択してInstall
最後に
File > Examples... > OpenManipulator > Chain > Open_Manipulator_Chain
を選択して書き込むとモーターを制御する下準備は完了です。
ちなみにですが、OpenCRの電源を落とすときや違うプログラムをOpenCRに書き込むときは必ずアームに手を添えるか地面に降ろしておくべきです。急にモーターの制御が止まるとアームが地面などに落下して衝突するからです。
現状(12/2現在)
今のところ動いていないです。
エラーがいくつか出ているので今後解決していきます。
今は出ているエラーと解決した(?)エラーを備忘録しておきます。
Serial関連のエラー
Please, Set On Controller
[0] "/dev/cu.Bluetooth-Incoming-Port"
[1] "/dev/cu.URT0"
[2] "/dev/cu.usbmodemFFFFFFFEFFFF1"
[3] "/dev/tty.Bluetooth-Incoming-Port"
[4] "/dev/tty.URT0"
[5] "/dev/tty.usbmodemFFFFFFFEFFFF1"
Error, disabling serialEvent() for /dev/tty.usbmodemFFFFFFFEFFFF1
null
こちらのエラーは
connectOpenCR(5); // Inside the brackets depends on a laptop enviroment.
この(5)の部分がデフォルトでは(0)になっているので、これを上のログの中からOpenCRが接続されている番号に書き換えましょう。多分治ります。
描画関連のエラー
OPENGLを使うな、setup()の中でsize()を使うななどといった警告が出てきますが、
そもそも描画がされないのでなんとも言えない状態です。
Javaのバージョンの問題かOPENGLの依存の問題かなと思っていますが、あまり深く確かめられていません。
.objが読み込まれない(?)
この辺りは自分が知識がなく、よくわからないので突っ込みすぎる前に寝かせています。
今の所、次のようなコードで
/*******************************************************************************
* Get shape
*******************************************************************************/
void initShape()
{
goal_link1_shape = loadShape("meshes/chain_link1.obj");
goal_link2_shape = loadShape("meshes/chain_link2.obj");
goal_link3_shape = loadShape("meshes/chain_link3.obj");
goal_link4_shape = loadShape("meshes/chain_link4.obj");
goal_link5_shape = loadShape("meshes/chain_link5.obj");
goal_left_palm_shape = loadShape("meshes/chain_link_grip_l.obj");
goal_right_palm_shape = loadShape("meshes/chain_link_grip_r.obj");
ctrl_link1_shape = loadShape("meshes/chain_link1.obj");
ctrl_link2_shape = loadShape("meshes/chain_link2.obj");
ctrl_link3_shape = loadShape("meshes/chain_link3.obj");
ctrl_link4_shape = loadShape("meshes/chain_link4.obj");
ctrl_link5_shape = loadShape("meshes/chain_link5.obj");
ctrl_left_palm_shape = loadShape("meshes/chain_link_grip_l.obj");
ctrl_right_palm_shape = loadShape("meshes/chain_link_grip_r.obj");
ctrl_link1_shape.setFill(color(200));
ctrl_link2_shape.setFill(color(200));
ctrl_link3_shape.setFill(color(200));
ctrl_link4_shape.setFill(color(200));
ctrl_link5_shape.setFill(color(200));
ctrl_left_palm_shape.setFill(color(200));
ctrl_right_palm_shape.setFill(color(200));
setCtrlJointAngle(0, 0, 0, 0);
gripperOff();
receive_gripper_pos[0] = 0.030 * 1000 ;
receive_gripper_pos[1] = receive_gripper_pos[0] * (-2);
}
以下のようなエラーに遭遇します。
User
Unsupported format: meshes/chain_link1.obj
Unsupported format: meshes/chain_link2.obj
Unsupported format: meshes/chain_link3.obj
Unsupported format: meshes/chain_link4.obj
Unsupported format: meshes/chain_link5.obj
Unsupported format: meshes/chain_link_grip_l.obj
Unsupported format: meshes/chain_link_grip_r.obj
NullPointerException
正直自分もよくわかっていないので、しばらくは大人しくROSを使う方法の構築をやってみます。
どなたかわかる方がいらっしゃれば教えていただけると幸いです。