20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

myCobotでほんとうにmoveitする

Last updated at Posted at 2021-01-26

意味深なタイトル

先日、myCobotでmoveitするというタイトルで記事を投稿しました。とりあえず動かして、とりあえず記事投稿しましたが「本当にこれで合ってるの? なんか違う気がする」ともやもやと気になってました。moveitについて調べ、先人の記事を片っ端から読んでいくと、あれ?全然違う。。。恥ずかしい。。。

良かった点をあえて挙げると、myCobotの公式のリポジトリにはまだmoveit対応されたものがありませんので、記事投稿することで「moveitで動かせた」実績が残せたことに意味があったと思います(なんちゃってなんだけど)。

とういうわけで、moveitのお作法に正しく従ったパッケージを作成しました。

パッケージのリポジトリ

こちらに置きました。使用方法などはreadmeを読んでください。
nisshan-x / mycobot_moveit

作成の裏側

moveitのお作法にしたがって書いたら動きました。

・・・だと話しが終わってしまうので、「moveit対応していないロボットアームをどうやって対応させたか?」を自分なりに書いてみたいと思います。

前提条件

今回のmyCobotは以下の条件が整っていました。このおかげでmoveit対応ができました。

  • ハードウェアインタフェースが用意されている。
  • URDFで書かれた3Dモデルが用意されている
    どちらも自分で対応するのは骨が折れますので、揃っててラッキーです。

手順1. URDFの書き直し

公式リポジトリにURDFと3Dモデル(Colladaフォーマット)が用意されていますが、これを使わずにURDFを書き直しました。Rvizで表示するだけなら良いのですが、Gazeboで表示できる書き方になっていないです。あと、公式のURDFはリンクとジョイントが混ざってて正直「あかんー」とおもいました(笑)

なお、なぜか公式のColladaファイル(dae拡張子)はGazeboで表示できませんでした。先にGazebo表示に成功したたいりょーくんのファイルを利用させていただきました。ありがとうございます!

手順2. moveitのsetup_assistant

URDFができたので、moveitのsetup_assistantを立ち上げて読み込みます。やり方はやはりmoveit公式のチュートリアルの通りです。前回なんちゃって対応だったので、今回は入念に読みました。

手順3. HardwareInterfaceの記述

moveitはHardwareInterfaceという実機を抽象化するコンセプトを取り入れており、それゆえに様々な会社のロボットアームやオリジナルアームを制御することができます。また、前述のGazeboといったPC内のシミュレータと実機が同じインタフェースで切り替えができるようになっています。

このHardwareInterfaceやros_controlの使い方がさっぱり理解できず、途方に暮れていたのですが、 @MoriKen さんの記事 Controller と HardwareInterface との間の処理の仕組み(1. ロボットモデルの定義と登録) のおかげでなんとか理解し、組むことができました。srcの下のコードを見ると分かるのですが、全部で100行にも満たないです。HardwareInterfaceさまさまです。

完成

ラズパイやAI本で有名なからあげさんが私のパッケージを使ってくださいました!!!
(しかもデバッグさせてしまった…)

最後に反省: 前回、なぜ間違えたのか?

myCobot公式のpythonスクリプトの中に、アームの関節の角度を指定して動かすROSノードがあります。このノードがjoint_stateをsubscribeしているのを見て「これでいいじゃん」と無理矢理合わせてmoveitを動かしてしまいました。joint_state は本来アームの状態を示すトピックなので「指示する用途には使ってはいけない」ですね。良く調べもせずに現物合わせで作ってはいけない、と反省です。

参考

20
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?