以前の記事で、奥行きの情報を取得する深度センサーがついたデプスカメラ「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である。

この連載の記事
- 第339回 復職が不安なあなたへ。“戻らない復職”を私が選んだ理由
- 第338回 DJをやってみようと思い立った
- 第337回 「子どもを預けて働く罪悪感が消えない」働く母親の悩みに答えます
- 第336回 ChatGPT、Gemini、Claude──特徴が異なるAI、どう使い分ける?
- 第335回 100点を目指さない勇気。家庭と仕事、両立時代のキャリア戦略
- 第334回 心の病気になりかけている。でも、休むことが怖い…
- 第333回 AITuberが競馬予想「うちゅうじんは競馬がしたい!」
- 第332回 【悩み】部下が流産。自分には子がいる。どう気遣うべき…?
- 第331回 死産後、うれしかった言葉 しんどかった言葉
- 第330回 ボカロ曲を作ったら、わからないことだらけで面白かった
- この連載の一覧へ

























