Ubuntu上でMyoと接続したい!
↑3分で出来る。と思いきや、しょうもない事で何回かハマったのでメモ
開発環境
- Ubuntu16.04LTS
- ROS kinetic
- Python2.7
ROS上でmyoを起動する
myoに関するプロジェクトをダウンロード
Githubで「ros myo」と検索した所複数ヒット、
しかし、一部プロジェクトでは接続不安定だったので相性とかあるのかも?
今回利用させて頂いたのは以下のリポジトリ、
https://github.com/roboTJ101/ros_myo.git
ROSのWorkspaceに移動してgit cloneします。以下を実行してください。
git clone https://github.com/roboTJ101/ros_myo.git
前提パッケージをインストールする。
- enum34
- pySerial
上記2つのPythonPackageをインストールします。以下を実行してください。
sudo pip install enum34
sudo pip install pySerial
pipがデフォルトでPython2系ではない人は上記のコマンドではインストール出来ません。
Pipのデフォルトは確認するには、以下を実行してください。
pip -V | grep -P -o "python[0-9\.]+"
色付きの文字で、python3.x(xは数字)とか出たら、
sudo pip install〜〜をpip→pip2.7とかに変えてインストールしてくれ。
catkin_makeする
rosのworkspaceに移動してcatkin_makeしましょう。以下を実行してください。
cd <ROSのWorkspaceのPath>
catkin_make
myoを充電
何らかのデバイスとUSB接続していると、上手く通信出来ないようです。
また、myoには電源ボタンが無く、常にスタンバイモードです。
一応、満充電から一周間程度維持出来るらしい。
myo付属のドングルを装着
ハマったポイントです。
MyoはBluetooth接続ですが、Myo付属のドングルを装着しないと上手く動作できませんでした。
しかも、ダミー底の下とかいう滅茶苦茶わかりづらい位置にマウントされています。
myoと接続するためのNodeを立ち上げる
roscoreしましょう。ターミナル上で以下を実行してください。
roscore
myoと通信する為のNodeを起動します。
roscoreしたターミナルとは別で、以下を実行してください。
rosrun ros_myo myo-rawNode.py
以上でmyoと接続完了です。
myoが配信するtopicについて
トピック名 | メッセージ型 | 備考 |
---|---|---|
myo_imu | Imu | 普通のImu型、加速度や角速度、quaternion(HWで計算済みの角度※)が取得できる |
myo_ori | Vector3 | euler[rad](HWで計算済みの角度※) |
myo_ori_deg | Vector3 | euler[degree](HWで計算済みの角度※) |
myo_emg | MyoArray | 8つの筋電センサの値を取得できる |
myo_arm | MyoArm | 未確認 |
myo_gest | MyoPose | 握るなどのジェスチャーが対応する数字で取得できる |
myo_gest_str | String | 握るなどのジェスチャーが文字列で取得できる |
pose | PoseStamped | Myoの姿勢が配信されます。rviz上で簡単に確認できる |
※Myo内蔵のチップで計算された値。応答速度・正確性が高い、Yaw軸は時間とともにズレるので注意。(該当コードを参照したところ、Myoから送られたデータをそのまま使用しているため、内臓チップで計算された値と判断)