123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/bin/bash
- set -u
- source /home/cicv/work/pji_desktop/config.sh
- if [ "$#" -ne 2 ]; then
- echo "Error: Incorrect number of arguments"
- echo "Usage: $0 IMAGE_NAME CONTAINER_NAME"
- exit 1
- fi
- IMAGE_NAME=$1
- CONTAINER_NAME=$2
- WORLD_NAME="map.world"
- MAP_PGM_NAME="map.pgm"
- MAP_YAML_NAME="map.yaml"
- MAP_BAG_NAME="origin_map.bag"
- source activate simulation
- python "$SIMULATION_PATH"/catkin_ws/src/goal_publish/script/send_initial_pos_0521.py \
- "$SIMULATION_PATH"/data/map_bag/"$MAP_BAG_NAME" \
- "$SIMULATION_PATH"/catkin_ws/src/SimulationEnvs/launch/env_node.launch \
- "$SIMULATION_PATH"/catkin_ws/src/Navigation/launch/amcl.launch
- xmlstarlet ed -u "/launch/include/arg[@name='world_name']/@value" \
- -v '$(find SimulationEnvs)/worlds/'"$WORLD_NAME" "$SIMULATION_PATH"/catkin_ws/src/SimulationEnvs/launch/env_node.launch | sponge "$SIMULATION_PATH"/catkin_ws/src/SimulationEnvs/launch/env_node.launch
- xmlstarlet ed -u "/launch/arg[@name='map']/@default" \
- -v "$MAP_YAML_NAME" "$SIMULATION_PATH"/catkin_ws/src/Navigation/launch/map_server.launch | sponge "$SIMULATION_PATH"/catkin_ws/src/Navigation/launch/map_server.launch
- MAP_PGM_PATH="$SIMULATION_PATH"/catkin_ws/src/Navigation/map/"$MAP_PGM_NAME"
- yq e '.image = '\""$MAP_PGM_PATH"\" -i "$SIMULATION_PATH"/catkin_ws/src/Navigation/map/"$MAP_YAML_NAME"
- cd "$SIMULATION_PATH"/catkin_ws
- safe-rm -r build devel
- catkin_make
- source devel/setup.bash
- pkill -f "map2gazebo"
- pkill -f "gazebo"
- pkill -f "rviz"
- pkill -f "SimulationEnvs"
- pkill -f "Navigation"
- rosnode kill --all
- sleep 1
- nohup roslaunch SimulationEnvs env_node.launch > "$SIMULATION_PATH"/logs/env_node.launch.log 2>&1 &
- sleep 1
- disown
- nohup roslaunch Navigation navigation.launch > "$SIMULATION_PATH"/logs/navigation.launch.log 2>&1 &
- disown
- CONTAINER_ID=$(docker ps -aqf name=^"${CONTAINER_NAME}"$)
- if [ -n "$CONTAINER_ID" ]; then
- echo "Container $CONTAINER_NAME already exists,removing..."
- docker rm -f "$CONTAINER_ID"
- echo "Container removed"
- fi
- echo "Start container..."
- docker run -itd --name "$CONTAINER_NAME" --net=host -v "$SIMULATION_PATH"/data/pjirobot/data:/root/pjirobot/data "$IMAGE_NAME" /bin/bash
- CONTAINER_ID=$(docker ps -aqf name=^"${CONTAINER_NAME}"$)
- if [ -n "$CONTAINER_ID" ]; then
- echo "Container $CONTAINER_NAME started"
- fi
- MAP_SERVICE_PATH="/home/load_map_service"
- PJI_NAV_PATH="/home/pji_nav"
- PJI_ENGINE_PATH="/home/pji_engine"
- command="cd $MAP_SERVICE_PATH && source devel/setup.bash && nohup rosrun load_map load_map > load_map.log 2>&1 &"
- docker exec "$CONTAINER_NAME" /bin/bash -c "$command"
- sleep 0.5
- command="cd $PJI_NAV_PATH && source install/setup.bash && nohup roslaunch pji_navigation navigation.launch >/dev/null 2>&1 &"
- docker exec "$CONTAINER_NAME" /bin/bash -c "$command"
- sleep 0.5
- command="cd $PJI_ENGINE_PATH && source install/setup.bash && nohup roslaunch pji_launch pji_engine.launch >/dev/null 2>&1 &"
- docker exec "$CONTAINER_NAME" /bin/bash -c "$command"
- echo "done"
|