LoginSignup
27
26

More than 1 year has passed since last update.

ROS2 Foxy環境にTurtleBot3のGazeboシミュレーションをインストールしてNavigation2を動かすまで

Last updated at Posted at 2021-03-07

はじめに

ROS2 Foxy環境でTurtleBot3のGazeboシミュレーションパッケージをインストールしてNavigation2を動かしたのでその手順のメモ

動作環境

項目
CPU Ryzen5
OS Ubuntu20.04.02LTS
ROS2 Foxy Fitzroy

TurtleBot3の環境構築

Gazebo関係パッケージのインストール

$ sudo apt install gazebo11 ros-foxy-gazebo-ros-pkgs

ワークスペースの作成とTutleBot3関係パッケージのインストール

$ mkdir -p ~/turtlebot3_ws/src
$ cd ~/turtlebot3_ws
$ sudo apt install python3-vcstool
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/ros2/turtlebot3.repos
$ vcs import src < turtlebot3.repos

パッケージのビルド

$ colcon build --symlink-install

ビルドに失敗したら以下でdynamixel_sdkパッケージをインストールしてください

$ sudo apt install ros-foxy-dynamixel-sdk

ワークスペースの環境設定

$ echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc

TurtleBot3のモデルの環境変数を~/.bashrcに記述
TURTLEBOT3_MODEL=にはburger, waffle, waffle_piのいずれかを指定
とりあえずburgerを使用

$ echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/turtlebot3_ws/src/turtlebot3/turtlebot3_simulations/turtlebot3_gazebo/models' >> ~/.bashrc
$ echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
$ source ~/.bashrc

Gazeboシミュレーションの実行

以下で実行、Gazeboが起動するまで最初は時間がかかります。

$ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

以下の用にGazeboワールドとロボットのモデルが表示されれば成功

Screenshot from 2021-03-07 16-51-25.png

TurtleBot3のモデルが簡単な形状になっていますがこれでいいらしいです。

Screenshot from 2021-03-01 19-34-20.png

Navigation2のインストール

以下でインストール

$ sudo apt install ros-foxy-navigation2
$ sudo apt install ros-foxy-nav2-bringup 

ソースからビルドする場合(最新版を使う場合こちら推奨)

$ cd ~/ros2_ws/src
$ git clone https://github.com/ros-planning/navigation2.git
$ cd navigation2
$ git checkout foxy-devel
$ cd ~/ros2_ws
$ colcon build --symlink-install

Navigation2の実行

TurtleBot3 シミュレーションを起動

$ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

Navigation2の実行

$ ros2 launch turtlebot3_navigation2 navigation2.launch.py

rviz2が起動し、以下のような画面が表示されます。

rviz_screenshot_2021_03_06-22_00_56.png

まずrviz2上の2D Pose Estimateをクリック、地図上の初期位置をドラックして初期位置を設定します。
次にNavigation2 Goalをクリックして移動させたい位置と姿勢をドラックしてゴールを指定するとGazebo上のTurtlebot3が指定した位置に向かって動き出します。

Videotogif (5)

おわりに

最初はこちらのNavigation2ドキュメントを参考にTurtleBot3パッケージをaptから取ってきてやったのですがうまくいきませんでした。

今後はNavigation2について理解していきたいと思います。

(2021/05/03 追記:最新版で上のNavigation2ドキュメント通りの方法で動くようになっていました。)

参考

おまけ

Navigation2実行時のrqt_graphやトピックを見てみます。

トピック一覧

$ ros2 topic list
/amcl/transition_event
/amcl_pose
/bt_navigator/transition_event
/clicked_point
/clock
/cmd_vel
/controller_server/transition_event
/cost_cloud
/downsampled_costmap
/downsampled_costmap_updates
/evaluation
/global_costmap/costmap
/global_costmap/costmap_raw
/global_costmap/costmap_updates
/global_costmap/footprint
/global_costmap/global_costmap/transition_event
/global_costmap/published_footprint
/global_costmap/voxel_marked_cloud
/goal_pose
/imu
/initialpose
/joint_states
/local_costmap/clearing_endpoints
/local_costmap/costmap
/local_costmap/costmap_raw
/local_costmap/costmap_updates
/local_costmap/footprint
/local_costmap/local_costmap/transition_event
/local_costmap/published_footprint
/local_costmap/voxel_grid
/local_costmap/voxel_marked_cloud
/local_plan
/map
/map_server/transition_event
/map_updates
/marker
/mobile_base/sensors/bumper_pointcloud
/odom
/parameter_events
/particle_cloud
/particlecloud
/plan
/planner_server/transition_event
/received_global_plan
/recoveries_server/transition_event
/robot_description
/rosout
/scan
/tf
/tf_static
/transformed_global_plan
/waypoint_follower/transition_event
/waypoints

ノード一覧

$ ros2 node list
/amcl
/amcl_rclcpp_node
/bt_navigator
/bt_navigator_rclcpp_node
/controller_server
/controller_server_rclcpp_node
/gazebo
/global_costmap/global_costmap
/global_costmap/global_costmap_rclcpp_node
/global_costmap_client
/lifecycle_manager_localization
/lifecycle_manager_localization_service_client
/lifecycle_manager_navigation
/lifecycle_manager_navigation_service_client
/local_costmap/local_costmap
/local_costmap/local_costmap_rclcpp_node
/local_costmap_client
/map_server
/planner_server
/planner_server_rclcpp_node
/recoveries_server
/recoveries_server_rclcpp_node
/robot_state_publisher
/rviz2
/rviz2
/rviz2
/rviz2
/transform_listener_impl_558dfb1ede70
/transform_listener_impl_55c19cce39e0
/transform_listener_impl_561e7b781750
/transform_listener_impl_5625557a28c0
/transform_listener_impl_564441e1cea0
/turtlebot3_diff_drive
/turtlebot3_imu
/turtlebot3_joint_state
/turtlebot3_laserscan
/waypoint_follower
/waypoint_follower_rclcpp_node

rqt_graph

$ rqt_graph

rosgraph.png

ROS1のNavigationではmove_baseノードにまとめられていた機能が個別のノードに分かれているためかなり複雑になっています。

27
26
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
27
26