1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RealSenseとOpenManipulator-xをROS2 humbleで動かして物体を掴む

Posted at

はじめに

こんにちは、しがない高校生をしているBasalte(ばさると)と申します。
今日はROS 2 humbleを使ってマニピュレーションをした話です。
粗いところもありますので、適宜指摘いただけると幸いです。

宣伝

普段はPyLoT Roboticsというチームを立ち上げ、RoboCup@Home Eucationという大会に出場しました!
もしよければこちらのリンクも合わせてご覧ください!!

構成

Openmanipulator-xのグリッパーの上にRealSenseを取り付け、画像認識と物体把持を完結できるようにしています。

システム

システム構成です。
Openmanipulator-xとRealSenseを扱うノードをそれぞれ立て、物体認識結果からアームの位置を決定して推移するプログラムです。
使用ライブラリはこちら

いずれも少し改造して使っています。(フォークして色々いじってます)

使用ノードはこのようになっています。
realsense-ros + Detic(+ Clip) + 逆運動学(自作) + DynamixelSDK

raelsenseからのデータはimageとdepthが同時に送信できるrgbd topicを使用しています。使い方などはこちらの神記事をご覧ください。

Detic+Clipでの画像認識

Deticで汎用的な物体認識を行い、どんな物体が来るかわからない未知環境ではClipを追加して認識物体をチューニングする機能を備えています。
Clipは画像と文章との類似度を出力することができ、Deticでbottleとしか出てこないものでも、そのboundingboxの中身をClipに入力して
"A long, thin red metal cylinder","Water in a blue package"
この二つの文章との類似度をとることによって、コーラか水かを見分けることができます。これにより掴むべきものをより簡単に認識でき、チューニングも簡単に行うことができます。(処理は重いです)

自分はOUXTのDeticパッケージを改造してRealSenseからのDepthデータも受け取って3次元座標を計算してtopicで出力しています。

逆運動学

最初にロボットアームの各モーターの角度から順運動学を計算し、カメラからの3次元座標をアームの根本からの座標に直します。次にアームの根本から物体の座標を逆運動学(自作)関数に投入し、モーターが取るべき角度を計算して出力します。
本来ならオブジェクトの点群からEndEffectorが取るべき角度も計算したいのですが、使用しているロボットアームに十分な自由度がないため難しいです。
(取得している動画が手元になかったのであとで追加します!すいません!!!)

まとめ

以上のようにロボットアームが物体を取得するプログラムを組むことができます。
今後実際のコードもこちらで紹介したいと考えているので、更新をお待ちください。

今後も改造のしようがあるため、頑張っていきたいです。

また動作がカクカクしているため、もっと滑らかにモーターの動作の経過を調節するコードも書けたらいいなと考えています。

1
2
2

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?