mkdir -p ~/promis_nav2_maps/darmstadt_map
mkdir -p ~/promis_nav2_maps/configYour source path:
C:\Users\rensh\Desktop\CE Semester 7\Simon Kohaut\code
In WSL:
cp "/mnt/c/Users/rensh/Desktop/CE Semester 7/Simon Kohaut/code/map.pgm" \
~/promis_nav2_maps/darmstadt_map/
cp "/mnt/c/Users/rensh/Desktop/CE Semester 7/Simon Kohaut/code/map.yaml" \
~/promis_nav2_maps/darmstadt_map/ls ~/promis_nav2_maps/darmstadt_mapExpected:
map.pgm map.yaml
nano ~/promis_nav2_maps/config/map_server_params.yamlContent:
map_server:
ros__parameters:
yaml_filename: /home/xiaoyuweng/promis_nav2_maps/darmstadt_map/map.yaml
lifecycle_manager:
ros__parameters:
use_sim_time: false
autostart: true
node_names: ['map_server']Save and exit.
cat ~/promis_nav2_maps/config/map_server_params.yamlsource /opt/ros/humble/setup.bash
ros2 run nav2_map_server map_server \
--ros-args \
--params-file ~/promis_nav2_maps/config/map_server_params.yamlsource /opt/ros/humble/setup.bash
ros2 run nav2_lifecycle_manager lifecycle_manager \
--ros-args \
--params-file ~/promis_nav2_maps/config/map_server_params.yamlsource /opt/ros/humble/setup.bash
ros2 topic listExpected:
/map
/map_server/transition_event
source /opt/ros/humble/setup.bash
ros2 topic echo /map --onceExpected fields:
- resolution: 1.0
- width: 200
- height: 200
- origin.x: -100
- origin.y: -100
source /opt/ros/humble/setup.bash
rviz2-
Set
Fixed Frametomap -
Click
Add -
Choose
By topic -
Select
/map -
Set QoS:
- Reliability = Reliable
- Durability = Transient Local
Optional:
- Change view to
TopDownOrtho
source /opt/ros/humble/setup.bash
ros2 run tf2_ros static_transform_publisher \
--x 0 --y 0 --z 0 \
--roll 0 --pitch 0 --yaw 0 \
--frame-id map \
--child-frame-id odomsource /opt/ros/humble/setup.bash
ros2 run tf2_ros static_transform_publisher \
--x 0 --y 0 --z 0 \
--roll 0 --pitch 0 --yaw 0 \
--frame-id odom \
--child-frame-id base_linkKeep both terminals running.
nano ~/promis_nav2_maps/config/nav2_navigation_only.yamlPaste the full YAML content (same as before).
Do NOT stop:
- map_server
- lifecycle_manager
- static TF
source /opt/ros/humble/setup.bash
ros2 launch nav2_bringup navigation_launch.py \
use_sim_time:=false \
params_file:=/home/xiaoyuweng/promis_nav2_maps/config/nav2_navigation_only.yamlros2 node listExpect:
- /planner_server
- /controller_server
- /bt_navigator
- /behavior_server
ros2 topic list | grep costmapros2 topic list | grep planros2 action listAdd:
- Map → /map
- Map → /global_costmap/costmap
- Map → /local_costmap/costmap
- TF
- Path → /plan
Optional:
- Path → /plan_smoothed
ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose \
"{pose: {header: {frame_id: map}, pose: {position: {x: 10.0, y: 10.0, z: 0.0}, orientation: {w: 1.0}}}}"ros2 topic echo /plan --onceros2 action send_goal /compute_path_to_pose nav2_msgs/action/ComputePathToPose \
"{goal: {header: {frame_id: map}, pose: {position: {x: 10.0, y: 10.0, z: 0.0}, orientation: {w: 1.0}}}, start: {header: {frame_id: map}, pose: {position: {x: 0.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}, use_start: true}"Logs:
[follow_path] [ActionServer] Aborting handle.
Meaning:
- Planning succeeded
- Execution failed due to no odometry
Ctrl + CStop all running terminals if needed.
ros2 run nav2_map_server map_server --ros-args --params-file ~/promis_nav2_maps/config/map_server_params.yamlros2 run nav2_lifecycle_manager lifecycle_manager --ros-args --params-file ~/promis_nav2_maps/config/map_server_params.yamlros2 run tf2_ros static_transform_publisher --frame-id map --child-frame-id odom ...ros2 run tf2_ros static_transform_publisher --frame-id odom --child-frame-id base_link ...ros2 launch nav2_bringup navigation_launch.py use_sim_time:=false params_file:=...rviz2ros2 action send_goal /navigate_to_pose ...ros2 topic echo /plan --once