From 374a21a6d9883133af5083e2e0160e95b9363de9 Mon Sep 17 00:00:00 2001 From: chyoo Date: Wed, 29 Jul 2026 11:27:01 +0900 Subject: [PATCH] chore: sync NAV2 module sources --- .gitignore | 3 + .../behavior/navigate_to_pose_no_spin.xml | 32 ++-------- .../config/planning_2d_sim_turtlebot3.yaml | 5 ++ .../nav2_planning.launch.cpython-310.pyc | Bin 2844 -> 0 bytes .../launch/nav2_planning.launch.py | 60 ++++++------------ 5 files changed, 35 insertions(+), 65 deletions(-) delete mode 100644 src/planning_pkg/launch/__pycache__/nav2_planning.launch.cpython-310.pyc diff --git a/.gitignore b/.gitignore index 76b3365..c8d7bf2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ install/ log/ .colcon/ *.log +__pycache__/ +**/__pycache__/ +*.py[cod] diff --git a/src/planning_pkg/behavior/navigate_to_pose_no_spin.xml b/src/planning_pkg/behavior/navigate_to_pose_no_spin.xml index 3537e32..13bb784 100755 --- a/src/planning_pkg/behavior/navigate_to_pose_no_spin.xml +++ b/src/planning_pkg/behavior/navigate_to_pose_no_spin.xml @@ -4,31 +4,11 @@ --> - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/src/planning_pkg/config/planning_2d_sim_turtlebot3.yaml b/src/planning_pkg/config/planning_2d_sim_turtlebot3.yaml index fd51698..228a656 100644 --- a/src/planning_pkg/config/planning_2d_sim_turtlebot3.yaml +++ b/src/planning_pkg/config/planning_2d_sim_turtlebot3.yaml @@ -6,6 +6,11 @@ bt_navigator: global_frame: map robot_base_frame: base_footprint odom_topic: /odom + default_nav_to_pose_bt_xml: '' + default_nav_through_poses_bt_xml: '' + navigators: [navigate_to_pose] + navigate_to_pose: + plugin: nav2_bt_navigator/NavigateToPoseNavigator bt_loop_duration: 20 default_server_timeout: 2000 wait_for_service_timeout: 4000 diff --git a/src/planning_pkg/launch/__pycache__/nav2_planning.launch.cpython-310.pyc b/src/planning_pkg/launch/__pycache__/nav2_planning.launch.cpython-310.pyc deleted file mode 100644 index 20e8a4c4a2cb0064f0f81e8e341f501c0be919f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2844 zcmcImNsrt_6!zY3_clFCmYG08SR0t`04F4bhzLPKFhm3n6hfBARqZxoyG&JiW_r|p zf&&80i5mndL0q`=3pj%K1HK_nC|r>c`>V2hW}=WIF8TRwwZ8YgGVOFc4W5s_-+u4M z6;1m|3MZci2rt0PzXgIdtS4HkBVCugkr=6oOvRgtmDh4R|reZ>~m-cf;IIpI*wkRer zQ|DU1f|LltuEvQ{yg~L@ECk8k4$`D_d7Szw_?DJng>t}T92AN0cY~xLWiz3XpO9UW zlvbRLX=yXMO+{&q*`;R(CUVl9G|plM$)F)m6ig%p?9U7g)&o`92q!cS2`_Cm2r{0* zp)Sv~ewN@X-`C;gpMga{(tM!b)Mwf){ibnCo13697Mi&Ql6fTAAX!I}1EICQ)aMOh zV&?;W?h0$>;s$mj=rM2BQd3DD*5<95iM<_zUBRuH{kewQGYe?v3wz$mnzgQbtW*7a zvzF@L#@?(s^YGFQbKViQaAxgU2lw&vp$T;5(3p2cL%1rz)?{koGqY}_iGl-rI0Z-`$7du+eB{8U0DS|q zY!@(zbP;h%%Jl_6V5Xxbz-D0f^1>aqI~GuRya|wLaaypD_+vmM>gE!lFr`E#;iv<% z!ubhbOmo5qI%)^K|U`Wc$=Gy^38xn{GheD z2_W87_#3!oqpo75NA^irh+sPb^k+~dN{1FAF9d2pA<2Wi40US8$0P}+rKc7vs|hcg zFt(~^9JSS=>iDuVumIFos*@pRXQlp>(%%(qwl0kwWn3fy|!J$S@*qE{uikeJSW=LOGl9nWGNo+~vWjR=aA_({(`%pDyKuTw4Pk#RkOsIFf z3Asc#T*&_8eVmh{-UkHrs>G2=r1pVYO2MnNTB)omYwDYVBMDP=pAZaJ8KfOYUP1#5 z;DDLF*4O|B{&fmuG@&UOg_9|zquZZ+^~-19+`e_=_NO;Sa8(ou;iGrP1&epd=Hh_g zm7zP5{N1O9mxh=8JwDs{4c z!*vYP&}DP}GVBFsIj*s)FB{Tk>CWGVb*Bet|1vD+52IliRiBDlx~p5i8Q%Y;b9F~G z<8SMC;|J#-=Q4W&wiCj8^vK&#Cd-TPav5Kt3Ah30+DyA?2vb;CKh$r*FVswf8f0uf4SO=5^!+82eSeG6!sGLZ~A~f>nGg^0@2;|1?mL13~=y z&>;&Jzb_wy1DE|>b4j-hHUxHSu!c4OGEk-C43m97S3e%Zx}b1{1LRbLsfD3#9oZT{ z%z|MmXvneAYHhwFPZh>0I5nlya=khzXv4)g5?JW;3B!q{bA>{*tWqqbX-cy?!75~K w$~DL^s7;+X6q)`^os9cjmFUmQ;BZ+5+Iri77uu4dlJhJNBu}^gbQ^8)FF-*ddjJ3c diff --git a/src/planning_pkg/launch/nav2_planning.launch.py b/src/planning_pkg/launch/nav2_planning.launch.py index 5431691..974cba6 100755 --- a/src/planning_pkg/launch/nav2_planning.launch.py +++ b/src/planning_pkg/launch/nav2_planning.launch.py @@ -2,7 +2,7 @@ from ament_index_python.packages import get_package_share_directory from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument +from launch.actions import DeclareLaunchArgument, TimerAction from launch.actions import GroupAction from launch.actions import OpaqueFunction from launch.substitutions import LaunchConfiguration, PathJoinSubstitution @@ -25,9 +25,7 @@ def launch_setup(context, *args, **kwargs): level = LaunchConfiguration('level').perform(context) log_level = LaunchConfiguration('log_level').perform(context) - lifecycle_nodes = ['controller_server', - 'smoother_server', - 'planner_server', + lifecycle_nodes = ['planner_server', 'bt_navigator', 'waypoint_follower'] @@ -39,11 +37,9 @@ def launch_setup(context, *args, **kwargs): 'behavior', 'navigate_to_pose_no_spin.xml' ]) - default_nav_through_poses_bt_xml = PathJoinSubstitution([ - pkg_planning, - 'behavior', - 'navigate_through_poses_no_spin.xml' - ]) + # Humble starts the NavigateThroughPoses navigator as well. Reuse the + # minimal pose tree so its optional recovery actions are not required. + default_nav_through_poses_bt_xml = default_nav_to_pose_bt_xml param_file_name = None @@ -57,7 +53,7 @@ def launch_setup(context, *args, **kwargs): pkg_planning, 'config', param_file_name]) param_substitutions = { - 'use_sim_time': 'true', + 'use_sim_time': sim_mode, 'default_nav_to_pose_bt_xml': default_nav_to_pose_bt_xml, 'default_nav_through_poses_bt_xml': default_nav_through_poses_bt_xml } @@ -70,16 +66,6 @@ def launch_setup(context, *args, **kwargs): load_nodes = GroupAction( actions=[ - Node( - package='nav2_controller', - executable='controller_server', - name='controller_server', - output='screen', - respawn=False, - respawn_delay=2.0, - parameters=[configured_params], - arguments=['--ros-args', '--log-level', log_level], - ), Node( package='nav2_planner', executable='planner_server', @@ -110,25 +96,21 @@ def launch_setup(context, *args, **kwargs): parameters=[configured_params], arguments=['--ros-args', '--log-level', log_level], ), - Node( - package='nav2_smoother', - executable='smoother_server', - name='smoother_server', - output='screen', - respawn=False, - respawn_delay=2.0, - parameters=[configured_params], - arguments=['--ros-args', '--log-level', log_level], - ), - Node( - package='nav2_lifecycle_manager', - executable='lifecycle_manager', - name='lifecycle_manager_planning', - output='screen', - arguments=['--ros-args', '--log-level', log_level], - parameters=[{'use_sim_time': True}, - {'autostart': True}, - {'node_names': lifecycle_nodes}] + # Let the Nav2 servers finish creating their lifecycle services first. + TimerAction( + period=2.0, + actions=[Node( + package='nav2_lifecycle_manager', + executable='lifecycle_manager', + name='lifecycle_manager_planning', + output='screen', + arguments=['--ros-args', '--log-level', log_level], + parameters=[{ + 'use_sim_time': sim_mode == 'true', + 'autostart': True, + 'node_names': lifecycle_nodes, + }] + )], ), ], )