こんにちは。佐藤です。
前回はRaspberry Pi MouseのシミュレーションモデルがGazebo上のサンプル迷路で動くところまで確認しました。
そして、公開の予告だけで終わってしまっていました。
今回は、そのファイルをすべて公開いたしましたのでセットアップ方法をはじめからご紹介します。
概要
Gazeboを動作させる環境が整っているPCで、今回公開したシミュレーションモデルを動作させる手順を説明します。
ファイル概要
GitHubに公開しています。
公開先はこちらです。
https://github.com/rt-net/raspimouse_sim
使用方法
READMEにも少し書いてありますが、こちらでも簡単に説明したいと思います。
さらに詳細な説明はROS Wikiにまとめるべく現在準備中です。
Gazeboの起動までの大まかな手順は先月のエントリと同じです。
GazeboでRasPiMouseのチュートリアル | RT MicroMouse
動作環境
以下の環境で動作確認を行っています。
- OS : Ubuntu Desktop Trusty 14.04 64bit
- ROS : ROS Indigo
- Gazebo : 2.x
なお、Gazeboを使用しますので、ある程度のスペックを必要とします。
今回執筆に使用したマシンのスペックは以下の通りです。
- dynabook-R73W4M
- CPU : Intel Core i7-4710QM
- RAM : 16GB
パッケージのインストール
ROS IndigoやGitはインストールされており、ネットワークに接続されている状態です。
以下の3つのパッケージが必要です。
- ros-indigo-desktop-full
- ros-indigo-gazebo-ros-control
- ros-indigo-ros-controllers
以下のコマンドでapt-getを使用してインストールします。
sudo apt-get install ros-indigo-desktop-full ros-indigo-gazebo-ros-control ros-indigo-ros-controllers
apt-getコマンドでinstallする前に以下のコマンドでパッケージリストは最新版にしておいてください。
sudo apt-get update
以下のコマンドでワークスペースに追加のパッケージを保存します。
cd ~/catkin_ws/src git clone --recursive https://github.com/rt-net/raspimouse_sim.git
無事にgit cloneできていれば以下のように表示されます。
Cloning into 'raspimouse_sim'... remote: Counting objects: 73, done. remote: Compressing objects: 100% (60/60), done. remote: Total 73 (delta 9), reused 73 (delta 9), pack-reused 0 Unpacking objects: 100% (73/73), done. Checking connectivity... done. Submodule 'raspimouse_ros' (https://github.com/ryuichiueda/raspimouse_ros.git) registered fo r path 'raspimouse_ros' Cloning into '/home/username/catkin_ws/src/raspimouse_sim/raspimouse_ros'... Submodule path 'raspimouse_ros': checked out '66b217efddf8ad8a2a8e4cd2384d2d994155cd7b'
Gazebo起動方法
パッケージを保存したあとはビルドします。
(cd ~/catkin_ws && catkin_make) && source ~/catkin_ws/devel/setup.bash
まずはroscoreとベースシステムを起動します。
roscore & roslaunch raspimouse_gazebo raspimouse_with_samplemaze.launch
このようなウィンドウが出てくると思います。
Gazebo関連で出てきたエラーについてはこちらに書いていますのでご覧ください。
Gazeboで走るRasPiMouse その5 | RT MicroMouse
https://rt-net.jp/mobility/archives/3348
ロボットの操作
次に動いているところを確認するためにvelocityコマンドを送信します。
ベースシステムを起動したウィンドウではそのまま起動することはできません。ですから、screenやtmuxなどのターミナルマルチプレクサを使用するか、ターミナルを別ウィンドウで新たに開いてください。
rosrun raspimouse_control controller_vel_publisher.py
これでコマンドを送信できるスクリプトを呼び出せましたので、wasdの4つのキーでRasPiMouseを操作できます。
今回のこのモデルを作成するにあたり、その途中過程をブログにて公開してます。よろしければご覧ください。
なお、現在GitHubに公開しているファイルはブログ公開時とは名称や表記方法が異なる場合があります。ご了承ください。
- 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
https://rt-net.jp/mobility/archives/3262 - 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が動かせることを確認しました。 概要 今回は見た目を少し改良し、まっすぐに走ることができるようにします。 見た目の改良 前回まではこのように真っ白でした。 これをこのように色を... - Gazeboで走るRasPiMouse その4 | RT MicroMouse
Gazeboで走るRasPiMouse その4こんにちは。佐藤です。 前回はGazeboでまっすぐにRasPiMouseが走ることができるようになりました。 概要 今回は制御用のコントローラを設計します。 前回動かしたモデルをもっと簡単に制御できるようにするため、publisherのス... - Gazeboで走るRasPiMouse その5 | RT MicroMouse
Gazeboで走るRasPiMouse その5こんにちは。佐藤です。 前回はGazeboでまっすぐに走るRasPiMouseをコントロールすることができるようになりました。 概要 今回はセンサを取り付けてみます。さらに試験用に3x3のGazebo用のフィールドを用意して走行させてみます。 センサは実機と同様に近づけば近づくほど大きくなるような値を返すようにします。