run_simulation.sh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #!/bin/bash
  2. # 检查到未定义的变量则停止执行并报错
  3. set -u
  4. # 检查参数数量
  5. if [ "$#" -ne 7 ]; then
  6. echo "Error: Incorrect number of arguments"
  7. echo "Usage: $0 RANDOM_FLAG COUNT OBSTACLE_FLAG DEFAULT_START_FLAG DEFAULT_END_FLAG START_POINT END_POINT"
  8. exit 1
  9. fi
  10. RANDOM_FLAG=$1
  11. COUNT=$2
  12. OBSTACLE_FLAG=$3
  13. DEFAULT_START_FLAG=$4
  14. DEFAULT_END_FLAG=$5
  15. START_POINT=$(echo "$6" | tr ',' ' ')
  16. END_POINT=$(echo "$7" | tr ',' ' ')
  17. MAP_BAG_NAME="origin_map.bag"
  18. SIMULATION_PATH="/home/cicv/work/pji_desktop/simulation"
  19. SIMULATION_RANDOM_LOG_PATH="$SIMULATION_PATH/logs/simulation_random.log"
  20. SIMULATION_CUSTOM_LOG_PATH="$SIMULATION_PATH/logs/simulation_custom.log"
  21. RECORD_BAG_LOG_PATH="$SIMULATION_PATH/logs/record_bag.log"
  22. # 激活conda环境
  23. source activate simulation
  24. # 判断是否为随机起终点
  25. if [ "$RANDOM_FLAG" == "true" ]; then # 随机起终点
  26. command="cd $SIMULATION_PATH/random_install && source install/setup.bash && rosrun random_point random_point $SIMULATION_PATH/data/mapBuf $COUNT"
  27. nohup script -q -c bash -c "$command" > "$SIMULATION_RANDOM_LOG_PATH" 2>&1 &
  28. # 录包
  29. nohup python "$SIMULATION_PATH/rosbag_record_0905.py" "$SIMULATION_PATH/data/record_bag/" "$COUNT" > "$RECORD_BAG_LOG_PATH" 2>&1
  30. elif [ "$RANDOM_FLAG" == "false" ]; then # 给定起终点
  31. # 起点设置
  32. if [ "$DEFAULT_START_FLAG" == "true" ]; then
  33. # 默认起点
  34. echo "Use default start point"
  35. ## 配置默认起点
  36. command="cd $SIMULATION_PATH/catkin_ws && catkin_make && source devel/setup.bash && rosrun goal_publish custom $SIMULATION_PATH/data/map_bag/$MAP_BAG_NAME"
  37. ### 清除环境
  38. pkill -f "goal_publish/initialPose"
  39. pkill -f "goal_publish/custom"
  40. sleep 1
  41. echo 'bash -c '\""$command"\"
  42. nohup bash -c "$command" >/dev/null 2>&1 &
  43. sleep 1
  44. elif [ "$DEFAULT_START_FLAG" == "false" ]; then
  45. # 自定义起点
  46. echo "Setting start point: $START_POINT"
  47. ## 发布自定义起点 - gazebo
  48. command="cd $SIMULATION_PATH/catkin_ws && catkin_make && source devel/setup.bash && rosrun goal_publish initialPose $START_POINT"
  49. ### 清除环境
  50. pkill -f "goal_publish/initialPose"
  51. sleep 1
  52. echo 'bash -c '\""$command"\"
  53. nohup bash -c "$command" >/dev/null 2>&1 &
  54. sleep 1
  55. ## 发布自定义起点 - rviz
  56. command="cd $SIMULATION_PATH/catkin_ws && catkin_make && source devel/setup.bash && rosrun goal_publish initialPose_rviz $START_POINT"
  57. ### 清除环境
  58. pkill -f "goal_publish/initialPose_rviz"
  59. sleep 1
  60. echo 'bash -c '\""$command"\"
  61. nohup bash -c "$command" >/dev/null 2>&1 &
  62. ### 这里必须设置不少于5s的延迟时间,否则rviz中的起点设置会出现问题
  63. sleep 5
  64. echo "Start point: $START_POINT has been set"
  65. fi
  66. # 终点设置
  67. if [ "$DEFAULT_END_FLAG" == "true" ]; then
  68. # 默认终点
  69. echo "Use default end point"
  70. ## 发布默认终点
  71. # command="cd $SIMULATION_PATH/catkin_ws && source devel/setup.bash && rosrun goal_publish pub_node $SIMULATION_PATH/data/build_map_bag/$BUILD_MAP_NAME $SIMULATION_PATH/evaluation_bag/example_0821_4.bag"
  72. command="cd $SIMULATION_PATH/catkin_ws && rm -r build devel && catkin_make && source devel/setup.bash && rosrun goal_publish pub_node $SIMULATION_PATH/data/map_bag/$MAP_BAG_NAME $SIMULATION_PATH/data/old_bag/example.bag"
  73. ## 录包
  74. ### 激活conda环境
  75. # source activate simulation
  76. # nohup python "$SIMULATION_PATH"/rosbag_record.py "$SIMULATION_PATH"/data/record_bag/test.bag >/dev/null 2>&1 &
  77. ## 清除环境
  78. pkill -f "goal_publish/goal" # 下发自定义/默认终点前必须先清除goal,不能只清除pub_node
  79. pkill -f "goal_publish/pub_node"
  80. pkill -f "rosbag_record"
  81. sleep 1
  82. echo 'bash -c '\""$command"\"
  83. nohup python "$SIMULATION_PATH"/rosbag_record.py "$SIMULATION_PATH"/data/record_bag/test.bag >record_bag.log 2>&1 &
  84. ## 设置终点并执行
  85. nohup bash -c "$command" > "$SIMULATION_CUSTOM_LOG_PATH" 2>&1 &
  86. elif [ "$DEFAULT_END_FLAG" == "false" ]; then
  87. # 自定义终点
  88. echo "Setting end point: $END_POINT"
  89. ## 发布自定义终点
  90. command="cd $SIMULATION_PATH/catkin_ws && rm -r build devel && catkin_make && source devel/setup.bash && rosrun goal_publish goal $END_POINT"
  91. ## 录包
  92. ### 激活conda环境
  93. # source activate simulation
  94. ## 清除环境
  95. pkill -f "goal_publish/goal"
  96. pkill -f "goal_publish/pub_node"
  97. pkill -f "rosbag_record"
  98. sleep 1
  99. echo 'bash -c '\""$command"\"
  100. nohup python "$SIMULATION_PATH"/rosbag_record.py "$SIMULATION_PATH"/data/record_bag/test.bag >/dev/null 2>&1 &
  101. nohup bash -c "$command" > "$SIMULATION_CUSTOM_LOG_PATH" 2>&1 &
  102. ## 设置终点并执行
  103. echo "End point: $END_POINT has been set"
  104. fi
  105. fi
  106. # 是否加载障碍物
  107. if [ "$OBSTACLE_FLAG" == "true" ]; then # 加载
  108. echo "Loading default obstacle..."
  109. # 动态加载障碍物
  110. command="cd $SIMULATION_PATH/pji_work && source devel/setup.bash && rosrun test demo $SIMULATION_PATH/merge_obstacles_data/merged_obstacles_new_0517_1.csv"
  111. nohup bash -c "$command" >/dev/null 2>&1 &
  112. # gnome-terminal --tab -e 'bash -c '\""$command"\"
  113. sleep 0.5
  114. echo 'bash -c '"$command"
  115. echo "Default obstacle loaded"
  116. fi