ROS:自作のロボットを自作の仮想空間でナビゲーションしてみる(5/5)ナビゲーション


TurtleBot3 のシミュレーション環境でmy_robotを使ってみます。

 

(1/5)ロボットを作成して動かしてみる

(2/5)仮想空間作成

(3/5)地図を作成

(4/5)TurtleBot3のシミュレーション環境を使ってみる

 

この環境は自律走行シミュレーターとしては非常に使いやすいです。

この環境に自作ロボットを組み込む手っ取り早い方法として、Waffle モデルをmy_robotに置き換えることにします。

で、ナビゲーションをやってみます。

Goalを設定する方法は、Rvizの2D Nav Goal と、Python の外部コマンドで設定する方法の2種類です。

 


my_robotで作成したロボットのモデルは以下のフォルダーにあります(あるはずです)。

~/catkin_ws/src/my_robot/urdf/my_robot.urdf.xacro

TurtleBot3 のシミュレーション環境で使うWaffle モデルは以下のフォルダーにあります。

/opt/ros/melodic/share/turtlebot3_description/urdf/turtlebot3_waffle.urdf.xacro

元のモデルは改名保存しておいて、置き換えます。

 

これでWaffle としてmy_robotが使えます。

 


1:2D Nav Goal でナビゲーション

独自空間(my_room.world)でmy_robotを使ってみましょう。

以下のlaunchファイルについては(4/5)参照

 

hector slam で作った地図を使ってナビゲーションしてみます(gmappingの場合、2D Pose Estimation による初期位置補正が必要になりますが、hector は不要なので扱いやすいです)。

navigationを起動します。

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/my_room_hector_map.yaml

 

メニュの「2D Nav Goal」を選択して、隣室中央でクリックしてGoalを設定してみました。

最適経路が策定されて自律走行を開始します。

 

 


2:ナビゲーションのGoal設定を外部コマンドでやってみる

上記のナビゲーションでは2D Nav Goal とマウスクリックでGoalを設定しましたが、ここではPythonで実行コマンドを作成してみます。

Pythonのコードを使ったコマンドをROSのパッケージにします。

ROSではGoalを指示するtopicは/move_base_simple/goalで、メッセージの型は以下のようになっています。

geometry_msgs/PoseStamped 

 

コマンド用のROSパッケージの依存パッケージは以下の2つです。

rospy、geometry_msgs

パッケージ名をnav_goal、Pythonファイル名をgo2goal.pyとします。

ワークスペースに移動してパッケージを作成

Pythonを使うのでscriptsフォルダーを作って移動し、新規のファイルを開いておきます。

コードはこんな感じ。

Goalの座標値を引数で渡して、移動させます。

 

権限を与えておきます。

sudo chmod +x go2goal.py

source ~/catkin_ws/devel/setup.bash

 

ところで座標はどうなっているかというと…。

Gazeboの座標はこうなっていますが、ここが原点ではありません。

RvizのBot3の初期位置、ここが原点です。

で、移動先を指定しますが、x軸方向に2、y軸方向に−2移動するとします。

こういうコマンドを実行します。

右下の別ターミナルでコマンドを実行しています。これで命令がPublishされますが、実行までに少々タイムラグがあります(5秒ほど)。実行されると指定の位置に矢印が現れて最適経路が表示され、Bot3が移動を開始します。また実行が開始されればコマンドはCtrl + C で終了しても可です。

 

原点は初期位置で固定されているので、以下のようなコマンドの場合

rosrun nav_goal go2goal.py -1.0 0.0

ここに移動します。

 

 

 

 

 

 

 

 

 

 

 

 

 

これでロボットに対して「玄関へ行って」という音声コマンドも送れるようになります。

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*