前回はCADで作った3Dモデルからハードウェア実物を作るところを紹介した。今回は、作ったハードウェアをROSで実際に動かすところを紹介する。サーボ1つを動かすまでに、かなりの試行錯誤を繰り返し、大変な時間を要した。
ROSで動いたハードウェア pic.twitter.com/7oXgBFLT50
— きゅんくん (@kyun_kun) February 12, 2020
今回の工程
今回の工程
・アールティが開発した研究用アームロボット「CRANE-X7」のコードを、GitHubからクローンしてビルドする。
・MoveIt!というパッケージをインストールする。
・コードを修正し、実機を動かす。
・Pythonでトリガーをもとに動かせるコードを書く。
前回までの工程で間違っていたことなど
はじめに、前回までの工程の間違っていたところ、変えた方が良いところ、今回の工程で出た基礎的な勘違いや間違いを記載する。工程を実施するうちに発見したものである。前回のGitHubのコードは修正した。
・IDの書き換え。
IDを根元から「1、2、3……」とせず、「3、4、1、2、5」としてしまっていた。理由は、2XLのIDの変え方がわからなかったからだ(シングルマネージャーは1度に1軸しか繋げてはならない)。
2XLはDYNAMIXEL Wizard 2.0を使って書き換えれば良いそうだ。XL430は以前の記事に書いたシングルマネージャーを使った方法でもIDを書き換えられるが、DYNAMIXEL Wizard 2.0でもできたので、そちらを利用した。DYNAMIXEL Wizard 2.0は、シェルから開かないと起動できなかった。
$ chmod +x DynamixelWizard2Setup_x64.appImage
$ ./DynamixelWizard2Setup_x64.appImage
で起動できた。chmodをつければ、GUIでも起動できるようだ。
・URDFが干渉している。
各メッシュ同士が干渉していた。各メッシュのcollisionのsizeに0.9を掛けて解決した。
・名前の頭が数字。
2nd, 3rdのように頭を数字にしてしまっていた。Second, thirdのように変更したら動いた。
・2XLのどちらがID1でどちらがID2かを勘違いしていた。
写真の赤丸を付けた軸がID1で、もう1つの軸がID2だったのだが、逆だと勘違いしていた。
・組みなおしたときに原点を合わせられていなかった。
いろいろ修正するのに何回か組み直したが、その際に原点がずれてしまった。ばらした状態で原点を合わせてから組み直した。
・C++やPythonとROSのトピック名の名前空間は意味合いが違う。
ROSの名前空間は、デフォルトのトピック名に付けられる。たとえば、カメラ系でありがちなのは、/camera/rgb/image_rawのような感じである。このとき、/cameraや、/rgbが名前空間の役割を果たす。デフォルトで付いてることもあるが、付けたい場合は、launchの中に、
のようにnsを書く。そうすると、node起動で指定した名前"ros_node"で名前が付き、上がるのではなく、名前空間が付き、/robot_name/ros_nodeの名前でノードが上がる。
・rqt_graphでleaf topicというチェックボックスを外すと、隠れたトピックが現れる。
leaf topicについて調べたところ、このページが見つかった。サブスクライバーを持たないトピックのことをリーフトピックというようだ。
この連載の記事
- 第318回 DTM勢がAIで作曲したら、AIの得意分野と苦手分野が見えてきた
- 第317回 ものづくり版コミケ「Makerフェア」2024年は面白かった。出展者の世代交代もなされているように見えた
- 第315回 0歳児、いつから保育園に? 女性の働き方、とことん考えてみました
- 第315回 推しの細胞がついた指輪を作ってもらった
- 第314回 おしゃれすぎるファン付きウェアを買って重要な問題に気付いた
- 第313回 0歳児がいながら、働く。ベストなやり方は?
- 第312回 パートナーの反対で転職できない問題
- 第311回 YouTubeの再生を止めないために画面を自動でタップする機械を作った
- 第310回 地方に移住したいが、東京にとどまるべきか
- 第309回 「マジック:ザ・ギャザリング」という深淵の入り口に立った。まだ底は見えない
- この連載の一覧へ