12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #!/bin/bash
- # 检查到未定义的变量则停止执行并报错
- set -u
- # 检查参数数量
- if [ "$#" -ne 2 ]; then
- echo "Error: Incorrect number of arguments"
- echo "Usage: $0 CONTAINER_NAME DOWNLOAD_FILE_PATH"
- exit 1
- fi
- CONTAINER_NAME=$1
- DOWNLOAD_FILE_PATH=$2
- MAP_UPDATE_PATH="/home/cicv/work/pji_desktop/map_update"
- UPDATE_DATA_PATH="$MAP_UPDATE_PATH/data"
- MAP_UPDATE_LOG_PATH="$MAP_UPDATE_PATH/logs/map_update.log"
- MAP_UPDATE_FINISH_FLAG="Result JSON file created"
- # 容器内路径
- CONTAINER_WORKSPACE="/home/cartographer_detailed_comments_ws-master"
- # 清除历史文件
- ## 检查要删除的目录是否为空
- if [[ -z "$UPDATE_DATA_PATH" ]]; then
- echo "Error: Variable UPDATE_DATA_PATH is not set or empty"
- exit 1
- fi
- ## 删除对应目录
- sudo safe-rm -rf "$UPDATE_DATA_PATH"/*
- # 解压地图更新对应的压缩包
- unzip "$DOWNLOAD_FILE_PATH" -d "$UPDATE_DATA_PATH"
- # 解压原始地图
- unzip "$UPDATE_DATA_PATH/origin_map_folder"/*.zip -d "$UPDATE_DATA_PATH/origin_map_folder/zip_folder"
- cp "$UPDATE_DATA_PATH/origin_map_folder/zip_folder/map.yaml" "$UPDATE_DATA_PATH/origin_map_folder/"
- safe-rm "$UPDATE_DATA_PATH/origin_map_folder"/*.zip
- # 检查容器启动状态
- if [ "$(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME)" = "true" ]; then
- echo "Container $CONTAINER_NAME is already running."
- else
- echo "Starting container $CONTAINER_NAME..."
- docker start "$CONTAINER_NAME"
- fi
- command="source $CONTAINER_WORKSPACE/devel_isolated/setup.sh && $CONTAINER_WORKSPACE/build_map.sh $CONTAINER_WORKSPACE/config.json"
- # 容器内执行地图更新脚本
- nohup docker exec "$CONTAINER_NAME" /bin/bash -c "$command" > "$MAP_UPDATE_LOG_PATH" 2>&1 &
- # 检查地图更新是否完成
- tail -F "$MAP_UPDATE_LOG_PATH" | while read LINE; do
- # echo "$LINE"
- # 检查录包完成标志
- if echo "$LINE" | grep -q "$MAP_UPDATE_FINISH_FLAG"; then # 已完成
- # pgm转换为png
- python "$MAP_UPDATE_PATH/convert_pgm_to_png.py" "$UPDATE_DATA_PATH/bag_folder/mapBuf/map.pgm" "$UPDATE_DATA_PATH/bag_folder/mapBuf/map_pre.png"
- # python "$MAP_UPDATE_PATH/convert_pgm_to_png.py" "$UPDATE_DATA_PATH/bag_folder/update_map"/*.pgm "$UPDATE_DATA_PATH/bag_folder/update_map/map_update.png"
- python "$MAP_UPDATE_PATH/convert_pgm_to_png.py" "$UPDATE_DATA_PATH/bag_folder/update_map"/*.pgm "$UPDATE_DATA_PATH/bag_folder/mapBuf/map_update.png"
- # 用更新后的pgm 替换 原始地图pgm
- sudo cp "$UPDATE_DATA_PATH/bag_folder/update_map"/*.pgm "$UPDATE_DATA_PATH/origin_map_folder/zip_folder"/map.pgm
- # 打包成新的地图压缩包
- sudo zip -j "$UPDATE_DATA_PATH"/update.zip "$UPDATE_DATA_PATH/origin_map_folder/zip_folder"/*
- echo "$MAP_UPDATE_FINISH_FLAG"
- break
- fi
- done
|