myCobot ”Pi”をPCで動かす
この記事の概要
ここでは、ラズパイが組み込まれているElephant RoboticsのmyCobotを、そのラズパイではなくPCで制御するために私が行った手順について(メモのつもりで)記載します。
私には沢山つまずいたところがありましたので、どなたかの参考になれば幸いです。
※著者はLinuxを今回初めて使い始めたところで、Zennの記事作成も初めてです。至らない点が無数にあるかと思います。ご注意ください。
なぜメーカーが、ロボットに組み込まれたラズパイに環境を構築してくれているのに、それを使わずにわざわざ自前のPCで制御したいのか?
それは、ROSやGazeboのことを考えるとやっぱり強力なマシンで直接扱いたいからというのが最も大きな理由です。
最初からM5モデルを購入しておけば、面倒なことはなかったのかもしれませんが、私の用途としては一通り必要な環境が組み込まれていて簡単にデモ展示に引っ張り出せるPiモデルが魅力的でした。
最大のつまずきポイント
自分で環境が構築できる詳しい方にとっては、次の一文しか読む価値がないかもしれません。
正しく環境を構築したのに、ロボットを制御するPythonスクリプトを実行してもロボットが動かないという場合、組み込まれているラズパイをシャットダウンしてからスクリプトを実行するというのを試してみてください。
ロボット本体の電源を切っても、PCとUSBで接続していたらラズパイは落ちない上にロボットも動かなくなるのでUbuntuを操作してシャットダウンです。
私の場合は下記の手順でクリーンな環境を構築しなおすという手間を掛けてしまいましたが、今思えばこれをやる前にWindows上に構築していたAnacondaの仮想環境でもラズパイをシャットダウンするだけで動かせたかもしれません。こちらは後日検証の予定です。
実行環境
使用した環境は次の通りです。
-
ロボットのモデル
おそらくmyCobot320 for Pi 2022です。Ubuntu 20.04で開発環境がラズパイに構築されていました。 -
PC
環境構築中の手戻りが結構あったので、VirtualBoxによる仮想環境を使用しました。PCをスタンドアロンで使用するなどが可能なら、VirtualBoxを使用せず直にUbuntu 20.04で構築したほうがパフォーマンス的には有利でしょう。
ホスト:Ubuntu 24.04
ゲスト:Ubuntu 20.04
環境構築
ここから環境構築のために行った手順を記載していきます。
VirtualBox固有の手順
ターミナルの準備
仮想環境のUbuntu 20.04を立ち上げたところではターミナルが起動しませんでした。
SettingsからRegionを変更してから戻してターミナルが起動するようにしました。最初はUnited UtatesだったのをUKにしてUSに戻したと思います。変更先は何でもいいかもしれません。
共有フォルダの設定
ロボットの制御用にあらかじめ書いていたPythonスクリプトを仮想環境に持ってくるための手順なので、データの受け渡しをしないなら不要です。
1.仮想環境の左上のメニューにあるDevicesからInsert Guest...を実行。
2.マウントされたドライブを実行。
仮想環境からのUSBへのアクセス
USBシリアルのドライバがロードされているか確認
lsmod | grep ch341
ホスト環境でロボットに割り当てられているポートを確認(ls /dev/ttyUSB* /dev/ttyACM*でよかった?)
sudo dmesg | tail -n 20
ACM0への権限を確認
ls -l /dev/ttyACM0
dialoutグループに現在のユーザーが含まれているか確認
groups
含まれていない場合
sudo usermod -aG dialout [ユーザー名]
変更したら反映のために再起動 -> 念のためもう一度groupsで確認
VirtualboxのホストからゲストのUSB設定のQinHeng Electronics USB Serialをフィルタに追加
ゲストでどのポートに割り当てられているか確認
ls /dev/ttyUSB* /dev/ttyACM*
->/dev/ttyACM0
ゲストでロボット制御用のスクリプトを実行した際にPermissionErrorが出たとき
ホストの時と同様の手順でアクセス権確認、付与、反映
ls -l /dev/ttyACM0
groups
sudo usermod -aG dialout [ユーザー名]
QoLのための手順
日本語配列キーボードのインストール
sudo apt update
sudo apt install ibus-mozc
sudo reboot
本命の環境構築
pipのインストール
Pythonは入っていましたが、pipが使えなかったのでインストールします。
sudo apt install python3-pip
pymycobotに必要なコンポーネントのインストール
pymycobotをインストールしようとすると、pyserial, crc, numpy, cv2が入っていないと言われるのでインストールします。
sudo python3 -m pip install pyserial pyserial
sudo python3 -m pip install pyserial crc
sudo python3 -m pip install pyserial numpy
sudo python3 -m pip install pyserial opencv-python
PATHの追加
必須ではないようですが、pymycobotをインストールするときにPATHの警告が出るので対処しておきます。
nano ~/.bashrc
ここに下記を追記
export PATH="
したらエディタを抜けて変更を適用
source ~/.bashrc
して、一応確認しておく
echo $PATH
これで/home/[ユーザー名]/.local/binが表示されればOK
最後にpymycobotをインストール
pip install pymycobot --upgrade --user
ロボットに組み込まれているラズパイのUbuntuをシャットダウンして、ゲスト環境から任意の制御スクリプトを実行
python3 example.py
メーカーのドキュメント
参考にしたものをここに載せます。
-
環境構築やAPI関係のガイド
https://docs.elephantrobotics.com/docs/gitbook-en/ -
Python APIのリスト
上のガイドにもAPIについては記載がありますが、古いようなので下記が参考になりました。このリンクの記事と同じ階層にmyCobot280など、別のロボットについての情報もあります。
https://github.com/elephantrobotics/pymycobot/blob/main/docs/MyCobot_320_en.md -
プロダクトの概要
ハードウェアの仕様や座標系についての記載があります。
https://github.com/elephantrobotics/myCobot320-docs/tree/gitbook-en/2-ProductFeature/2.2_320_PI_product -
ユーザーノート
https://github.com/elephantrobotics/myCobot320-docs/tree/gitbook-en/3-UserNotes/320_PI
Discussion