diff --git a/app/navigation2/scripts/Navigation_ROS2_R1_SIM.xml b/app/navigation2/scripts/Navigation_ROS2_R1_SIM.xml index 24b19bd..9ee92dd 100644 --- a/app/navigation2/scripts/Navigation_ROS2_R1_SIM.xml +++ b/app/navigation2/scripts/Navigation_ROS2_R1_SIM.xml @@ -5,6 +5,13 @@ + + ros2_launch.sh + /usr/local/src/hsp/tour-guide-robot/app/navigation2/launch/robot_state_publisher.launch.py use_sim_time:=true + /home/user1/tour-guide-robot/app/navigation2/scripts/ + console + + ros2 launch robot_state_publisher.launch.py use_sim_time:=true diff --git a/app/navigation2/scripts/ros2_launch.sh b/app/navigation2/scripts/ros2_launch.sh new file mode 100755 index 0000000..eb15817 --- /dev/null +++ b/app/navigation2/scripts/ros2_launch.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# This scripts wraps ros2 launch handling the SIGTERM signal - currently bugged in ros2 (https://github.com/ros2/launch/issues/666) +# In particular, the user can substitute the ros2 launch command in yarpmanager with this script. +# The syntax is the same but the full path to the launch_file is needed. +# Stopping the script via yarpmanager will correctly stop the nodes. Killing the script will leave the nodes dangling. + + +_term() { + echo "Got SIGTERM" + kill -2 -${group} +} + +if [ "$#" -lt 2 ] +then + echo "Usage ros2_launch.sh " + exit -1 +fi + +trap _term SIGTERM + +setsid ros2 launch $@ --noninteractive & + +group=$! +echo "Group pid: $group" +child=$! +wait "$child"