#!/bin/bash # 检查到未定义的变量则停止执行并报错 set -u # 检查参数数量 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 # 检查容器是否存在 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 /home/cicv/work/pji_desktop/simulation/data/pjirobot/data:/root/pjirobot "$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 && rosrun load_map load_map" #docker exec "$CONTAINER_NAME" /bin/bash -c "$command" ## 启动导航节点 #command="cd $PJI_NAV_PATH && source install/setup.bash && roslaunch pji_navigation navigation.launch" #docker exec "$CONTAINER_NAME" /bin/bash -c "$command" ## 启动engine节点 #command="cd $PJI_ENGINE_PATH && source install/setup.bash && roslaunch pji_launch pji_engine.launch" #docker exec "$CONTAINER_NAME" /bin/bash -c "$command"