SOBIT PRO,SOBIT EDU,SOBIT MINI,HSR(Simulation)のための自律移動パッケージ.
Navigationのオープンソースの概要はこちらをチェック.
また自律移動の仕組みについても,ROSのオープンソースを参照.
(上に戻る)
本レポジトリのセットアップ方法について説明します.
(上に戻る)
| System | Version |
|---|---|
| Ubuntu | 22.04 (Jammy Jellyfish) |
| ROS | Humble Hawksbill |
| Python | 3.0~ |
(上に戻る)
-
ROS2の
srcフォルダに移動します.cd ~/colcon_ws/src/
-
本レポジトリをcloneします.
git clone -b humble-devel https://github.com/TeamSOBITS/sobits_navigation_stack.git
-
レポジトリの中へ移動します.
cd sobits_navigation_stack -
依存パッケージをインストールします.
bash install.sh
-
パッケージをコンパイルします.
cd ~/colcon_ws/
colcon build --symlink-install
source ~/colcon_ws/install/setup.sh
(上に戻る)
Navigationを使う上での基本的な流れ
- 地図生成
- 目的地まで障害物を回避した経路を生成するため,ロボットが事前に地図を知る必要がある
- 地図の障害物のデータと,現在ロボットが取得しているデータから,ロボットが現在どこにいるのかを推測する
- 地点登録
- 生成した地図の,どの位置からどの位置までの経路を生成するかのポイントとなる位置を登録する
- Action通信で呼び出す
- ロボットの現在の地点から登録した地点まで,地図上の障害物がない安全なエリアに経路生成をする
- 到着まで時間がかかることから,結果だけでなく途中経過も発信することのできるAction通信を用いる
(上に戻る)
-
ロボットを起動する
ロボット本体と,2D-LiDARを起動させる.
詳しくは,それぞれのロボットのgit hub(PRO,EDU,MINI)を確認.
HSR(シミュレータ)の場合はsigverseやHSR本体のセンサデータを使えるように起動する. -
地図を生成する
-
手動で地図を生成する場合
-
gmapping.launch.py にあるrobot_nameを使用するロボットに切り換えた後,以下のコマンドを実行する. 実行後に地図を保存するか聞かれるが,一旦無視する.
ros2 launch sobits_slam gmapping.launch.py
-
次にteleop.launch.pyにあるvelocity_topic_nameを使用するロボットのトピック名に切り換えた後,以下のコマンドを実行する. 起動したxtermターミナル(青いターミナル)で操作方法を確認しながら,Rvizの地図を見てロボットを操作する.
ros2 launch sobits_slam teleop.launch.py
-
-
自律地図生成を使用する場合
active_slam.launch.pyにあるrobot_nameを使用するロボット名に書き換える.
- ロボット頭部についているカメラを活用して首振りしながら自律地図生成を行う場合は
use_flex_navをTrueに書き換える.
以下のコマンドを実行する.
ros2 launch sobits_slam active_slam.launch.py
- ロボット頭部についているカメラを活用して首振りしながら自律地図生成を行う場合は
-
-
生成した地図を保存する
地図生成が完了したら,地図を保存する. -
新たに地図ファイルを作成した場合はcolcon buildを実行する.
既存の地図ファイルと置き換えて作成した場合はcolcon buildを実行する必要はない.cd ~/colcon_ws/
colcon build --symlink-install
source ~/colcon_ws/install/setup.sh
(上に戻る)
-
生成した地図のパスを指定する create_location_file.launch.pyのmapを書き換える.
mapは,自分で生成した地図を指定する.
例えば,map_example.pgmというマップの場合は,以下のように指定する.DeclareLaunchArgument( # mapのファイルパス 'map', default_value=os.path.join(get_package_share_directory("sobits_slam"), 'map', 'map_example.yaml') ),※ 拡張子が.ymalになることに注意.直接画像ファイルを指定するのではなく,地図のymalデータファイルを指定する.
-
実機で地点登録するかどうかを設定する
- 実機で地点登録しない場合
create_location_file.launch.pyの use_robotをfalseにする.'use_robot', default_value='false'
- 実機で地点登録する場合
はじめにcreate_location_file.launch.pyのuse_robotをtrueにし,robot_nameを使用するロボットに変更する.'use_robot', default_value='true'
- 実機で地点登録しない場合
-
実機で地点登録する場合はロボットを起動する
ロボット本体と,2D-LiDARを起動させる.
詳しくは,それぞれのロボットのgit hub(PRO,EDU,MINI)を確認.
HSR(シミュレータ)の場合はsigverseやHSR本体のセンサデータを使えるように起動する. -
地点登録を起動する
以下のコマンドで起動する.ros2 launch sobits_slam create_location_file.launch.py
起動後,地点登録を始める前に地点登録ファイルを保存する.
-
地点を登録する
-
実機で地点登録しない場合
RVIZ上で,2D Goal Poseを選択し,登録したい位置と向きでmapにクリック -
実機で地点登録する場合
ロボットを地点登録したい位置まで移動させて地点登録する.
ロボットの移動のさせ方は以下2通りがある.- Navigationの機能を用いる場合
RVIZ上で,2D Goal Poseを選択し,mapにクリックする. - 地図生成したときのように人間が操作する場合
以下のコマンドで実行ros2 launch sobits_slam teleop.launch.py
- Navigationの機能を用いる場合
-
ADD LOCATION:地点名を入力して登録
-
Delete :登録した地点を削除
-
Rename :登録した地点名を変更
-
-
すべての地点登録が終了したら,起動しているlaunchをすべて終了させる
新たに地点登録ファイルを作成した場合はcolcon buildを実行する.cd ~/colcon_ws/
colcon build --symlink-install
source ~/colcon_ws/install/setup.sh
(上に戻る)
-
mapを地図生成した地図に書き換える
Navigationに地図を登録する.
nav2.launch.pyのmapを作成した地図のファイル名に書き換える.
例:作成した地図のファイル名がmap_example.yamlのときdefault_value=os.path.join(get_package_share_directory('sobits_slam'), 'map', 'map_example.yaml'),
ここで書くのは,地図データです.地点登録のファイルと間違わないようにしてください.
-
地点登録した情報を登録する
nav2.launch.pyのlocation_file_pathを作成した地点登録ファイルに書き換える.
例:作成した地点登録ファイル名がlocation_example.yamlのときdefault_value=os.path.join( get_package_share_directory('sobits_slam'), 'location', 'location_example.yaml'), -
nav2.launch.pyの robot_nameを使用するロボット名に書き換える.
- ロボット頭部についているカメラを活用して首振りしながらナビゲーションを行う場合は
use_flex_navをTrueに書き換える
- ロボット頭部についているカメラを活用して首振りしながらナビゲーションを行う場合は
-
ロボットを起動する
ロボット本体と,2D-LiDARを起動させる.
詳しくは,それぞれのロボットのgit hub(PRO,EDU,MINI)を確認.
HSR(シミュレータ)の場合はsigverseやHSR本体のセンサデータを使えるように起動する. -
Navigationを起動する
以下のコマンドでNavigationを起動する.ros2 launch sobits_nav nav2.launch.py
これによりマップとその上に地点登録したTFが出現する.
-
アクションクライアントを起動する
これは基本的にプログラムから起動する.
地点登録した地点名ならどこにでも移動することが可能.
(上に戻る)
- カメラを用いた地図生成
- 障害物のレイヤーのカスタム
- bumperレイヤー
- noise_colorレイヤー
- objectsレイヤー
現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.
(上に戻る)
(上に戻る)