0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ROSの勉強 第26弾:倉庫シミュレーション

Posted at

#プログラミング ROS< 倉庫シミュレーション >

はじめに

1つの参考書に沿って,ROS(Robot Operating System)を難なく扱えるようになることが目的である.その第26弾として,「倉庫シミュレーション」を扱う.

環境

仮想環境
ソフト VMware Workstation 15
実装RAM 2 GB
OS Ubuntu 64 ビット
isoファイル ubuntu-mate-20.04.1-desktop-amd64.iso
コンピュータ
デバイス MSI
プロセッサ Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 2.50GHz
実装RAM 8.00 GB (7.89 GB 使用可能)
OS Windows (Windows 10 Home, バージョン:20H2)
ROS
Distribution noetic
プログラミング言語 Python 3.8.5
シミュレーション gazebo

倉庫シミュレーション

倉庫内での管理において,移動ロボットが使われることが多くある.その中で,正しくものを把握し,それに対する処理をこなす必要がある.そのシミュレーションを今までに学習してきた内容を踏まえて作り上げていく予定だった.後述するが,それはかなわなかった.よって一部のみを記述し,それ以外はなぜできなかったのかについて記述する.

倉庫内モデルの準備

まず,環境を整える.

ワークスペースの作成
mkdir -p ~/ws/src/stockroom_bot
cd ~/ws/src
catkin_init_workspace
catkin_create_pkg stockroom_bot rospy
cd ~/ws/src/stockroom_bot
エイリアスの設定
alias sb = 'source ~/ws/devel/setup.bash; export GAZEBO_MODEL_PATH=${HOME}/ws/src/stockroom_bot/models/'

これを,~/.bashに追記すれば,sbというエイリアスが自動で作成される.これにより,'sb'とコマンドラインにタイプするだけで,stockroom_botの開発やテストのためのターミナル設定を読み込める.ここでは,Gazeboがモデルを呼び出す際に,あらかじめsbとコマンドを打っておけば~/ws/src/stockroom_bot/models/まで呼び出しに行くことを設定している.

モデル作成の準備
mkdir -p ~/ws/src/stockroom_bot/models/bin

先ほどの設定でPathに指定したフォルダを作成.

容器のモデルパッケージはそのディレクトリに作る.
/models/binにmodel.configというファイルを置く.

model.config
<?xml version = "1.0"?>
<model>
	<name>Bin</name>
	<sdf version = "1.4">model.sdf</sdf>
</model>

このファイルでは,単に名前が書かれており,
実際の容器モデルがmodel.sdfというファイルにあることをGazeboに伝えている.いわば案内状

モデル作成

model.sdf/models/binのフォルダに置く

model.sdf
<?xml version = '1.0'?>
<sdf version = '1.4'>
	<model name = 'box'> <!--configファイル内の名前と一致させる-->
		<static>true</static> <!--Gazeboが動力学を計算する必要がないことを示す→CPU実行時間を節約-->
		<link name = "bottom"> <!--物理学的な処理およびレンダリングに使用される幾何学的構造を記述できる-->
			<collision name = "collision_bottom">
				<geometry>
					<box>
						<size>0.4 0.4 0.02</size> <!--geometry box sizeを入れ子にすることで,40cm×40cm×2cmの直方体を作成-->
					</box>
				</geometry>
			</collision>
			<collision name = "collision_left">
				<pose>-0.2 0 0.1 0 0 0</pose> <!--x y z ロール ピッチ ヨーの座標変換で動かす-->
				<geometry><box><size>0.02 0.4 0.2</size></box></geometry>
			</collision>
			<collision name = "collision_right">
				<pose>0.2 0 0.1 0 0 0</pose>
				<geometry><box><size>0.02 0.4 0.2</size></box></geometry>
			</collision>
			<collision name = "collision_back">
				<pose>0 0.2 0.1 0 0 0</pose>
				<geometry><box><size>0.4 0.02 0.2</size></box></geometry>
			</collision>
			<collision name = "collision_front">
				<pose>0 -0.2 0.1 0 0 0</pose>
				<geometry><box><size>0.4 0.02 0.05</size></box></geometry>
			</collision>
			<visual name = "visual_bottom">
				<geometry><box><size>0.4 0.4 0.02</size></box></geometry>
				<material><script><name>Gazebo/Blue</name></script></material> <!--materialで,組み込みのGazeboのマテリアルを参照し図形の色を設定する-->
			</visual>
			<visual name = "visual_left">
				<pose>-0.2 0 0.1 0 0 0</pose> <!--x y z ロール ピッチ ヨーの座標変換で動かす-->
				<geometry><box><size>0.02 0.4 0.2</size></box></geometry>
			</visual>
			<visual name = "visual_right">
				<pose>0.2 0 0.1 0 0 0</pose>
				<geometry><box><size>0.02 0.4 0.2</size></box></geometry>
			</visual>
			<visual name = "visual_back">
				<pose>0 0.2 0.1 0 0 0</pose>
				<geometry><box><size>0.4 0.02 0.2</size></box></geometry>
			</visual>
			<visual name = "visual_front">
				<pose>0 -0.2 0.025 0 0 0</pose>
				<geometry><box><size>0.4 0.02 0.05</size></box></geometry>
			</visual>
		</link>
	</model>
</sdf>

これで容器のモデル作成が完了した.この時点で,Gazeboでの読み込みが可能となる.以下にその様子を示す.

~$gazebo

適当にgazeboを起動させると次のような何もない空間が用意される.
gazebo
下図のパネルには,先ほどまでに用意したフォルダが追加されている.
gazebo_call_model
それをクリックすると...
model
無事にgazebo上でモデルを出現させることができた.

失敗

倉庫シミュレーションであるから,本来ならば,ここから容器を識別するためにラベル付けを行う予定であった.実際に学習しようとした内容は以下の通りである.

・容器に貼るラベル
・ALVARマーカーシステムを用いる
・ALVARはROSに組み込まれており,難しい設定をしなくとも,驚くほどうまく機能するから
・ALVARマーカータグは2次元の2値画像

sudo apt-get install ros-DISTRIBUTION-ar-track-alvar* imagemagick

によりパッケージを取得できるとmelodicあたりまでは,ROS wikiでの記載があった.
このパッケージは,ALVARを読み取るだけでなく,マーカータグを作成するプログラムも提供している.
複数個のラベルが必要になる時には,自動生成するスクリプトを用意すると便利(ALVARマーカータグの画像と各容器にラベルを付けるマテリアルスクリプトの用意)

どうやらnoeticではリリースされておらず,うまくインストールできなかった.
(2021/03/19)

今回はこのような理由により,これ以上に倉庫シミュレーションを進めることができなかった.また,リリースされたときには,ぜひやってみたい.ほかの方法もあるようだが,ROSの学習を一通り済ませてから試してみることにする.

感想

今回は,不完全燃焼という感じではあったが,とりあえずモデル作成の基礎としてconfigファイルとsdfファイルの中身およびファイルの配置関係を学び,さらにGazeboに対してのPathの通し方と,環境設定などを簡単なコマンドにより再現できるエイリアスということについても知ることができた.倉庫シミュレーションそのものはできなかったが,多くのことを学ぶことができたと思う.

参考文献

プログラミングROS Pythonによるロボットアプリケーション開発
        Morgan Quigley, Brian Gerkey, William D.Smart 著
                       河田 卓志 監訳
            松田 晃一,福地 正樹,由谷 哲夫 訳
                  オイラリー・ジャパン 発行

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?