Skip to content

TeamSOBITS/sobits_navigation_stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

370 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JP | EN

Contributors Forks Stargazers Issues License

SOBITS Navigation Stack

目次
  1. 概要
  2. セットアップ
  3. 実行・操作方法
  4. マイルストーン
  5. 参考文献

概要

SOBIT PRO,SOBIT EDU,SOBIT MINI,SOBIT LIGHT,HSR(実機&Simulation)のための自律移動パッケージ.
Navigationのオープンソースの概要はこちらをチェック.
また自律移動の仕組みについても,ROSのオープンソースを参照.

(上に戻る)

セットアップ

本レポジトリのセットアップ方法について説明します.

(上に戻る)

環境条件

System Version
Ubuntu 22.04 (Jammy Jellyfish)
ROS Humble Hawksbill
Python 3.0~

(上に戻る)

インストール方法

  1. ROS2のsrcフォルダに移動します.

    cd ~/colcon_ws/src/
  2. 本レポジトリをcloneします.

    git clone -b humble-devel https://github.com/TeamSOBITS/sobits_navigation_stack.git
  3. レポジトリの中へ移動します.

    cd sobits_navigation_stack
  4. 依存パッケージをインストールします.

    bash install.sh
  5. パッケージをコンパイルします.

    cd ~/colcon_ws/
    colcon build --symlink-install
    source ~/colcon_ws/install/setup.sh

(上に戻る)

実行・操作方法

Navigationを使う上での基本的な流れ

  1. 地図生成
    • 目的地まで障害物を回避した経路を生成するため,ロボットが事前に地図を知る必要がある
    • 地図の障害物のデータと,現在ロボットが取得しているデータから,ロボットが現在どこにいるのかを推測する
  2. 地点登録
    • 生成した地図の,どの位置からどの位置までの経路を生成するかのポイントとなる位置を登録する
  3. Action通信で呼び出す
    • ロボットの現在の地点から登録した地点まで,地図上の障害物がない安全なエリアに経路生成をする
    • 到着まで時間がかかることから,結果だけでなく途中経過も発信することのできるAction通信を用いる

(上に戻る)

地図生成

  1. ロボットを起動する
    ロボット本体と,2D-LiDARを起動させる.
    詳しくは,それぞれのロボットのgit hub(SOBIT PROSOBIT EDUSOBIT MINISOBIT LIGHT)を確認.
    HSR(実機&Simulation)の場合はsigverseやHSR本体のセンサデータを使えるように起動する.
    ただし,SOBIT LIGHTはKachakaAPIからマップを廃止する必要があるため,SOBIT LIGHTのREADMEを確認してください.

  2. 地図を生成する

    • 手動で地図を生成する場合

      1. slam.launch.py にあるrobot_nameを使用するロボットに切り換えた後,以下のコマンドを実行する. 実行後に地図を保存するか聞かれるが,一旦無視する.

        ros2 launch sobits_slam slam.launch.py
      2. 次に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
  3. 生成した地図を保存する
    地図生成が完了したら,地図を保存する.

  4. 新たに地図ファイルを作成した場合はcolcon buildを実行する.
    既存の地図ファイルと置き換えて作成した場合はcolcon buildを実行する必要はない.

    cd ~/colcon_ws/
    colcon build --symlink-install
    source ~/colcon_ws/install/setup.sh

(上に戻る)

地点登録

  1. 生成した地図のパスを指定する 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データファイルを指定する.

  2. 実機で地点登録するかどうかを設定する

    • 実機で地点登録しない場合
      create_location_file.launch.pyuse_robotをfalseにする.
      'use_robot', default_value='false'
    • 実機で地点登録する場合
      はじめにcreate_location_file.launch.pyuse_robotをtrueにし,robot_nameを使用するロボットに変更する.
      'use_robot', default_value='true'
  3. 実機で地点登録する場合はロボットを起動する
    ロボット本体と,2D-LiDARを起動させる.
    詳しくは,それぞれのロボットのgit hub(SOBIT PROSOBIT EDUSOBIT MINISOBIT LIGHT)を確認.
    HSR(実機&Simulation)の場合はsigverseやHSR本体のセンサデータを使えるように起動する.
    ただし,SOBIT LIGHTはKachakaAPIからマップを廃止する必要があるため,SOBIT LIGHTのREADMEを確認してください.

  4. 地点登録を起動する
    以下のコマンドで起動する.

    ros2 launch sobits_slam create_location_file.launch.py

    起動後,地点登録を始める前に地点登録ファイルを保存する.

  5. 地点を登録する

    • 実機で地点登録しない場合
      RVIZ上で,2D Goal Poseを選択し,登録したい位置と向きでmapにクリック

    • 実機で地点登録する場合
      ロボットを地点登録したい位置まで移動させて地点登録する.
      ロボットの移動のさせ方は以下2通りがある.

      • Navigationの機能を用いる場合
        RVIZ上で,2D Goal Poseを選択し,mapにクリックする.
      • 地図生成したときのように人間が操作する場合
        以下のコマンドで実行
        ros2 launch sobits_slam teleop.launch.py
    • ADD LOCATION:地点名を入力して登録

    • Delete   :登録した地点を削除

    • Rename   :登録した地点名を変更

  6. すべての地点登録が終了したら,起動しているlaunchをすべて終了させる
    新たに地点登録ファイルを作成した場合はcolcon buildを実行する.

    cd ~/colcon_ws/
    colcon build --symlink-install
    source ~/colcon_ws/install/setup.sh

(上に戻る)

ナビゲーションを実行

  1. mapを地図生成した地図に書き換える
    Navigationに地図を登録する.
    nav2.launch.pyのmapを作成した地図のファイル名に書き換える.

    例:作成した地図のファイル名がmap_example.yamlのとき

    default_value=os.path.join(get_package_share_directory('sobits_slam'), 'map', 'map_example.yaml'),

    ここで書くのは,地図データです.地点登録のファイルと間違わないようにしてください.

  2. 地点登録した情報を登録する
    nav2.launch.pyのlocation_file_pathを作成した地点登録ファイルに書き換える.

    例:作成した地点登録ファイル名がlocation_example.yamlのとき

    default_value=os.path.join(
            get_package_share_directory('sobits_slam'), 'location', 'location_example.yaml'),
  3. nav2.launch.pyrobot_nameを使用するロボット名に書き換える.

    • ロボット頭部についているカメラを活用して首振りしながらナビゲーションを行う場合はuse_flex_navをTrueに書き換える
  4. ロボットを起動する
    ロボット本体と,2D-LiDARを起動させる.
    詳しくは,それぞれのロボットのgit hub(SOBIT PROSOBIT EDUSOBIT MINISOBIT LIGHT)を確認.
    HSR(実機&Simulation)の場合はsigverseやHSR本体のセンサデータを使えるように起動する.
    ただし,SOBIT LIGHTはKachakaAPIからマップを廃止する必要があるため,SOBIT LIGHTのREADMEを確認してください.

  5. Navigationを起動する
    以下のコマンドでNavigationを起動する.

    ros2 launch sobits_nav nav2.launch.py

    これによりマップとその上に地点登録したTFが出現する.

  6. アクションクライアントを起動する
    これは基本的にプログラムから起動する.
    地点登録した地点名ならどこにでも移動することが可能.

(上に戻る)

進入禁止領域の設定

地図上にロボットが進入してほしくない領域(侵入禁止領域)を設定することができます。 例えば机の天板の領域などです。

  1. 進入禁止領域マップの作成

    1. 地図生成で作成した地図画像(.pgmファイル)を画像編集ソフト(例: GIMP)で開きます。
    2. 進入禁止にしたい領域を黒色(カラーコード: #000000)で塗りつぶします。その他の領域は白色(#FFFFFF)または灰色(#CDCDCD)のままにします。
    3. 編集した画像を新しい名前(例: map_example_keepout_mask.pgm)で保存します。
    4. 元の地図の .yaml ファイルをコピーし、新しい名前(例: map_example_keepout_mask.yaml)に変更します。
    5. コピーした .yaml ファイルを開き、image の値を新しい画像ファイル名(例: map_example_keepout_mask.pgm)に変更します。
    6. パッケージをコンパイルします.
      cd ~/colcon_ws/
      colcon build --symlink-install
      source ~/colcon_ws/install/setup.sh
  2. Navigationの起動

    1. nav2.launch.pyuse_keepout_filter 引数を True に書き換えます。
    2. nav2.launch.pykeepout_mask_yaml_fileのパスを作成した進入禁止領域のマップに書き換えます。
    3. nav2.launch.pyの`を起動します。
    ros2 launch sobits_nav nav2.launch.py

(上に戻る)

マイルストーン

  • カメラを用いた地図生成
  • 障害物のレイヤーのカスタム
    • bumperレイヤー
    • noise_colorレイヤー
    • objectsレイヤー

現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.

(上に戻る)

参考文献

(上に戻る)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors