こんにちは。佐藤です。
前回はGazeboでRasPiMouseが動かせることを確認しました。
概要
今回は見た目を少し改良し、まっすぐに走ることができるようにします。
見た目の改良
前回まではこのように真っ白でした。
これをこのように色を付けて実物にもう少し近づけてみます。
簡単にできる方法はいくつかあります。
- テクスチャをマッピングしたメッシュデータを用意する
- xacroでメッシュデータにテクスチャをマッピングする
- 色付きのメッシュデータを用意する
- xacroでメッシュデータの色を指定する
今回はstlを用意する時点で色ごとに分割して出力し、Colladaファイルへ変換する際に色をつけます。
変換方法についてはこちらをご覧ください。
Raspberry Pi MouseのURDFモデル作成 その1 | RT MicroMouse
このようにいくつかのパーツに分けて色を付けたあと、
最後にまとめてColladaファイルとしてエクスポートします。
このデータをxacroあるいはurdfで指定することで色付きのモデルができます。
ホイールの回転方向修正
前回はx軸方向へ進むコマンドを送信してもその場で旋回してしまっていました。
rostopic pub -1 /raspimouse/diff_drive_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
回転軸が逆なようです。
今回のモデルで軸を定義しているのではraspimouse_descriptionの中にあるrobots/raspimouse.urdf.xacroとurdf/wheel/wheel.urdf.xacroです。
これらを編集します。
編集箇所は以下のとおりです。右回りに回転するはずです。
軸の原点をロール角を+90度回転させた方の回転軸を逆向きにしました。
<!-- Wheel --> <xacro:wheel prefix="right" parent="base_link"> <origin xyz="0 -0.0425 0.02215" rpy="1.57 0 0"/> <axis xyz="0 0 -1"/> </xacro:wheel> <xacro:wheel prefix="left" parent="base_link"> <origin xyz="0 0.0425 0.02215" rpy="-1.57 0 0"/> <axis xyz="0 0 1"/> </xacro:wheel>
ちなみに、前回も紹介しましたがwheelというマクロは次のように定義されています。
<xacro:macro name="wheel" params="prefix parent *joint_origin *joint_axis"> <joint name="${prefix}_wheel_joint" type="continuous"> <insert_block name="joint_origin"/> <insert_block name="joint_axis"/> <parent link="${parent}"/> <child link="${prefix}_wheel"/> <limit effort="70" velocity="15"/> <safety_controller k_velocity="10" /> <dynamics damping="1.0" friction="1.0" /> </joint> <link name="${prefix}_wheel"> <visual> <geometry> <mesh filename="package://raspimouse_description/meshes/dae/wheel/RasPiMouse_wheel.dae"/> </geometry> </visual> <collision> <geometry> <mesh filename="package://raspimouse_description/meshes/dae/wheel/RasPiMouse_wheel.dae"/> </geometry> </collision> <inertial> <origin xyz="-0.000107 0 0.002875"/> <mass value="${wheel_mass}"/> <inertia ixx="0.000002208187" ixy="0.000000000001" iyy="0.00000218412" ixz="0.000000004787" iyz="0.000000000003" izz="0.000004078299"/> </inertial> </link> </xacro:macro>
このように回転軸の向きを統一することによってロボットをまっすぐ進めることができるようになりました。
次回はセンサと走らせるためのコマンドについて触れていきます。
補足
重心位置について
前回はInventorで慣性行列を計算し、URDFの定義に書き加えました。
重心はホイールの回転軸上ではなく、若干後ろ側に寄っています。
また、ホイールの回転軸が固定されておらず、フリーになっています。
そのため、ボディが後ろに回転しようとし、床と触れた結果ホイールが回転して前に少しずつ進んでしまうという状態です。
(早送りにしています。)
ボディの摩擦係数を変えてみたり、回転軸の摩擦を変えてみたりしましたが、どれもうまく行きませんでした。
ボディの摩擦係数を変えると、回転し始める際にかなり揺れます。
滑らないほど回転軸の摩擦を大きくするとcmd_vel geometry_msgs/Twistを送った際にホイールが外れてしまいました。
そこで、微少量後退するコマンドを周期的に送ったところ、全くと言っていいほど動かなくなりました。
rostopic pub -r 1 /raspimouse/diff_drive_controller/cmd_vel geometry_msgs/Twist '{linear: {x: -0.001, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
今のところdiff_drive_controllerを使用していますが、実際のRasPiMouseとはコマンドが異なるのでros_control側で軸を固定することができるようにする必要がありそうです。
tk-WARNINGについて
Gtk-WARNING **: module_path にはテーマ・エンジンがありません: “pixmap”,
と言われることがあります。
gtk2-engines-pixbufが足りていないので、以下のコマンドでインストールできます。
sudo apt-get install gtk2-engines-pixbuf
参考文献
- ROSを使用したCRANE+の動かし方 その1 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その1はじめまして!アールティでアルバイトをしております大学2年生の長谷川と申します。これから、何回かに分けまして、ROSを使用してTurtleBot2用ロボットアーム「CRANE+」を動かす方法について解説していきたいと思います。ROSを知らな - ROSを使用したCRANE+の動かし方 その2 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その2こんにちは!長谷川です。前回はROSそのものについての解説をしましたが、今回はROSを実際にインストールしてみましょう。長くなると思いますが、環境が整わないとCRANE+を動かすこともできないので、ご辛抱ください。使用PCの環境この連載で使 - ROSを使用したCRANE+の動かし方 その3 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その3こんにちは!長谷川です。前回はROSのインストールについて説明しましたが、今回はROSの環境のセットアップとROSのファイルシステムについて説明したいと思います。今回は、主に英語版Wikiのチュートリアルに従って進みます。日本語版Wikiの - ROSを使用したCRANE+の動かし方 その4 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その4こんにちは!長谷川です。前回はROSの環境のセットアップとROSのファイルシステムについて説明しましたが、今回はROSのパッケージの作成とビルドについて説明したいと思います。今回も前回同様、主に英語版Wikiのチュートリアルに従って進みます - ROSを使用したCRANE+の動かし方 その5 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その5こんにちは!長谷川です。前回はROSのパッケージの作成とビルドについて説明しましたが、今回はCRANE+を動かすための環境の構築について説明したいと思います。CRANE+を動かすためのチュートリアルここを見ていただくとわかりますが、「CRA - ROSを使用したCRANE+の動かし方 その6 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その6こんにちは!長谷川です。前回はCRANE+を動かすための環境の構築について説明しましたが、今回はCRANE+の全ての関節を同時に、かつ自動で動かす方法について説明したいと思います。ROSのノードとトピックについてCRANE+を動かす前に、R - ROSを使用したCRANE+の動かし方 その7 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その7こんにちは!長谷川です。前回はCRANE+の全ての関節を同時に、かつ自動で動かす方法について説明しましたが、今回はその時出てきたソースコードの解説を通して、ROSのプログラムの書き方について説明したいと思います。プログラムについてのチュート - ROSを使用したCRANE+の動かし方 その8 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その8こんにちは!長谷川です。前回はROSのプログラムの書き方について説明しましたが、今回はCRANE+のURDFモデルの作り方について説明したいと思います。URDFモデルとはURDFとはUnified Robot Description For - ROSを使用したCRANE+の動かし方 その9 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その9こんにちは!長谷川です。前回はCRANE+のURDFモデルの作り方について説明しましたが、今回は、前回作ったモデルと実物のCRANE+の連動のさせ方について説明したいと思います。プログラムの作成まずは、モデルとCRANE+を連動させるプログ - ROSを使用したCRANE+の動かし方 その10 | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その10こんにちは!長谷川です。この連載も、ついに10回目に突入しました。ここまで見てくださった皆様、本当にありがとうございます!前回は、前々回作ったモデルと実物のCRANE+の連動のさせ方について説明しましたが、今回は、CRANE+の状態をモデル - ROSを使用したCRANE+の動かし方 その11(完結) | RT Robot Shop Blog
ROSを使用したCRANE+の動かし方 その11(完結)こんにちは!長谷川です。前回はCRANE+の状態をモデルに反映させる方法について説明しましたが、今回は、CRANE+の状態をrviz上でモニタリングしつつ、CRANE+を自動で動かす方法について説明したいと思います。使用するプログラム実は、 - Gazebo + ROS で自分だけのロボットをつくる 1.STLファイルをつくる- Qiita
Gazebo + ROS で自分だけのロボットをつくる 2.STLファイルをつくる - Qiitaはじめに今回は、手順2.についてです。完成までの手順好きなCADソフトを使ってSTLファイルを作る ←今ココ好きなソフトを使ってCOLLADAファイルを作るURDFファイルを作るGaze… - Gazebo + ROS で自分だけのロボットをつくる 2.好きなソフトを使ってCOLLADAファイルを作る- Qiita
Gazebo + ROS で自分だけのロボットをつくる 3.COLLADAファイルをつくる - Qiitaはじめに今回は、手順3.についてです。完成までの手順好きなCADソフトを使ってSTLファイルを作る好きなソフトを使ってCOLLADAファイルを作る ←今ココURDFファイルを作るGaze… - Gazebo + ROS で自分だけのロボットをつくる 3.URDFファイルをつくる- Qiita
Gazebo + ROS で自分だけのロボットをつくる 4.URDFファイルをつくる - Qiitaはじめに今回は、手順4.についてです。完成までの手順好きなCADソフトを使ってSTLファイルを作る好きなソフトを使ってCOLLADAファイルを作るURDFファイルを作る ←今ココGaze… - Gazebo + ROS で自分だけのロボットをつくる 4. GazeboとROSの連携- Qiita
Gazebo + ROS で自分だけのロボットをつくる 5. GazeboとROSの連携 - Qiitaはじめに今回は、手順5.についてです。完成までの手順好きなCADソフトを使ってSTLファイルを作る好きなソフトを使ってCOLLADAファイルを作るURDFファイルを作るGazeboとRO… - Raspberry Pi MouseのURDFモデル作成 その1 | RT MicroMouse
https://rt-net.jp/mobility/archives/3168 - Raspberry Pi MouseのURDFモデル作成 その2 | RT MicroMouse
Raspberry Pi MouseのURDFモデル作成 その2こんにちは!佐藤です。 今回は前回の続きでURDFのモデルの作成を行っていきます。 前回はとりあえず動かすことを目的としてパッケージを用意して、URDFを記述するところまで行いました。 URDFファイルについて はじめに記述したURDFファ... - Raspberry Pi MouseのROSコマンド確認 | RT MicroMouse
Raspberry Pi MouseのROSコマンド確認こんにちは!佐藤です。 アールティでブログを書くのにもだんだん慣れてきました。 前回はxacroファイルでモデルの形だけではなく重さなど詳細情報も含めて定義しました。 これから先は実際に動かす方法を踏まえつつ各種ファイルを用意していく必要が... - GazeboでRasPiMouseのチュートリアル | RT MicroMouse
GazeboでRasPiMouseのチュートリアルこんにちは!佐藤です。 前回はRaspberry Pi MouseをROSを使って動かすためのコマンドを確認しました。 Raspberry Pi Mouseから少し話がそれてしまいますが、今回はGazeboでURDFを使う方法をGazebo... - Gazeboで走るRasPiMouse その1 | RT MicroMouse
Gazeboで走るRasPiMouse その1こんにちは。佐藤です。 Raspberry Pi Mouseと書くと思ったより文字数が多いですねー。 実はタイトルだけ前回からRasPiMouseと表記するように変更しました。 さて、前回はGazeboの使い方について紹介しました。 今回も... - Gazeboで走るRasPiMouse その2 | RT MicroMouse
Gazeboで走るRasPiMouse その2こんにちは。佐藤です。 前回はGazeboでガソリンスタンドのモデルデータを表示して、RasPiMouse(の一部)を表示するところまで行いました。 概要 今回は慣性行列を定義し、Gazebo上で正しく表示できることを確認します。 その後、...