こんにちは。佐藤です。
前回はGazeboでまっすぐにRasPiMouseが走ることができるようになりました。
概要
今回は制御用のコントローラを設計します。
前回動かしたモデルをもっと簡単に制御できるようにするため、publisherのスクリプトを用意します。
スクリプトの作成
raspimouse_controlのパッケージの中にscriptsディレクトリを作成します。
cd ~/catkin_ws/src/raspimouse_control mkdir scripts cd scripts
その中にvel_publisher.pyを作成します。
#!/usr/bin/env python import rospy from geometry_msgs.msg import Twist rospy.init_node('vel_publisher') pub = rospy.Publisher('/raspimouse/diff_drive_controller/cmd_vel', Twist, queue_size=10) while not rospy.is_shutdown(): vel = Twist() direction = raw_input('w: forward, s: backward, a: left, d: right > ') if 'w' in direction: vel.linear.x = 0.5 if 's' in direction: vel.linear.x = -0.5 if 'a' in direction: vel.angular.z = 1.0 if 'd' in direction: vel.angular.z = -1.0 if 'q' in direction: break print vel pub.publish(vel)
送っているコマンドは以下のコマンドとほぼ同じです。
rostopic pub -1 /raspimouse/diff_drive_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
実行できるようにするためには実行権限を与える必要があります。
chmod +x vel_publisher.py
キーボードのw/sで前進/後進、a/dで超信地旋回ができます。
Gazeboを起動した後、このスクリプトを別ウィンドウで実行します。
roslaunch raspimouse_gazebo raspimouse_with_emptyworld.lauch
rosrun raspimouse_control vel_publisher.py
このように動かすことができました!
次回はこのセンサの話についても触れていきます。
補足
Gazebo+ROSでの二輪駆動について
今のところ、diff_drive_controllerを使用してモデルを制御しています。
しかし、実機ではそれぞれのステッピングモータに周波数を与えて動かすように制御しています。
シミュレーションモデルでも同様にするべく、jointをPositionJointInterfaceとして設定し、コントローラをposition_controllers/JointPositionControllerでモデルを作成してみました。
すると、ホイールは回転するのですが、ボディが前進しません。つまり、摩擦が働いていないのと同じ状態になっているのです。
摩擦係数の設定値がおかしいのかと考え、摩擦係数を小さくした状態でdiff_drive_controllerを使用すると、確かにホイールが空転します。
このようなホイールとボディだけのモデルを作って試してみましたが、全く変化はありませんでした。
シミュレーションモデルで試したプログラムを実機で使用する際にはdiff_drive_controllerと同様のコマンドで動かすことができるようなコントローラを用意する必要がありそうです。
参考文献
- 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… - ros_controls/ros_controllers の制御の仕組み (position/effort/velocity_controllers の基礎) – Qiitahttp://qiita.com/MoriKen/items/78b0ad8c1eae257646dd
- Controller と HardwareInterface との間の処理の仕組み(1. ロボットモデルの定義と登録) – Qiitahttp://qiita.com/MoriKen/items/613635b90f3a98042dc5
- Controller と HardwareInterface との間の処理の仕組み(2. RobotHWSimのプラグインについて) – Qiitahttp://qiita.com/MoriKen/items/5cab7436c1b36c25e0ce
- Controller と HardwareInterface との間の処理の仕組み(3. Controllerについて) – Qiitahttp://qiita.com/MoriKen/items/c29f653d03baffe5f0e2
- Gazebo から ROS のプラグインを呼ぶ処理の仕組み(1. Gazebo起動時のSystemPluginの読込み) – Qiitahttp://qiita.com/MoriKen/items/2ed9c887dd078e69cc23
- Gazebo から ROS のプラグインを呼ぶ処理の仕組み(2. ロボットモデル登録時のModelPluginの読込み) – Qiitahttp://qiita.com/MoriKen/items/86289224696756388df4
- Raspberry Pi MouseのURDFモデル作成 その1 | RT MicroMouse
Raspberry Pi MouseのURDFモデル作成 その1はじめまして。この夏、インターンシップでアールティのお仕事のお手伝いをしています佐藤です。 Raspberry Pi MouseのURDFモデルの作成をし、Gazeboでシミュレーションを行うところまで行っていきたいと思います。 ROSを使... - 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上で正しく表示できることを確認します。 その後、... - Gazeboで走るRasPiMouse その3 | RT MicroMouse
Gazeboで走るRasPiMouse その3こんにちは。佐藤です。 前回はGazeboでRasPiMouseが動かせることを確認しました。 概要 今回は見た目を少し改良し、まっすぐに走ることができるようにします。 見た目の改良 前回まではこのように真っ白でした。 これをこのように色を...