以前の記事で、奥行きの情報を取得する深度センサーがついたデプスカメラ「Intel RealSense Depth C amera D435i」を使って物を認識させることができた。その続きといきたいところだが、思いのほか難しく成果が出なかったので、今回はCADで作ったアームロボットの3Dモデルを「Gazebo」という3DロボットシミュレーターでROSと連携して動かしてみたい。
かなり試行錯誤したので、ROSとGazeboの連携でトラブルに見舞われている人には役に立つかもしれない(笑)。筆者が引っ掛かった点しか書かないので、チュートリアルとしては役に立たないと思う。失敗集として読んでほしい。間違ったコードを載せると混乱のもとなので、最終的なコードをGitHubに載せた。
— きゅんくん (@kyun_kun) December 10, 2019
今回の流れ
今回の流れは(試行錯誤も含め)、
1.CADで3Dモデルを作り、stlを吐く(CADの使い方はここでは書かない)。
2.URDFというロボットの構造を記述するためのXMLのフォーマットでロボットの構造を書き、RVizというROS アプリケーションの3D視覚化ツールで表示する(URDFの書き方はここでは書かない)。
3.URDFがGazeboで表示できない。URDFではなくxacro(XML macroの略)で、まずはただの立方体を表示することにした。
4.イナーシャがないことが原因とわかり、立方体を表示できたが、なぜかプルプル震えている……。リンクとジョイントが地面にめり込んでいるのが原因と知り、修正した。
5.xacroでリンクひとつずつの表示・動作を試みることにした。
6.ジョイントが動いたが、なぜかチカチカしている……。イナーシャが適当すぎたことが原因と気づき、CADでイナーシャを表示して書き込んだ。チカチカしなくなった。
7.イナーシャを1桁間違えていたことに気付く。正しいイナーシャにしたら、ごちゃっと重力で下に落ちた。ジョイントも外れている。ジョイントの種類が問題とわかり、修正。
8.今度は「joint1_position_controller」という動かすためのトピックが出ているのに動かなくなった。ジョイントの種類を変えたときのリミットの値が間違っていたことに気づき、修正。
9.端末のコマンドではなくrqtというGUIソフト開発ツールで動かす。
10.モデルに色をつける(色の付け方はここでは書かない)。
と、まあ失敗だらけである。
今回はThinkPadではなく、Let‘snote CF-SVでデュアルブートしたUbuntu16.04を使っている。ROSのバージョンはkineticである。

この連載の記事
- 第321回 ごめんLive2D、わたしが間違ってた
- 第320回 きゅんくんの2024年一番買ってよかったもの発表します
- 第319回 歌声合成ソフト「UTAU」でオリジナルキャラを歌わせてみた
- 第318回 DTM勢がAIで作曲したら、AIの得意分野と苦手分野が見えてきた
- 第317回 ものづくり版コミケ「Makerフェア」2024年は面白かった。出展者の世代交代もなされているように見えた
- 第315回 0歳児、いつから保育園に? 女性の働き方、とことん考えてみました
- 第315回 推しの細胞がついた指輪を作ってもらった
- 第314回 おしゃれすぎるファン付きウェアを買って重要な問題に気付いた
- 第313回 0歳児がいながら、働く。ベストなやり方は?
- 第312回 パートナーの反対で転職できない問題
- この連載の一覧へ