run_simulation.sh 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/bin/bash
  2. # 检查到未定义的变量则停止执行并报错
  3. set -u
  4. # 检查参数数量
  5. if [ "$#" -ne 5 ]; then
  6. echo "Error: Incorrect number of arguments"
  7. echo "Usage: $0 OBSTACLE_FLAG DEFAULT_START_FLAG DEFAULT_END_FLAG START_POINT END_POINT"
  8. exit 1
  9. fi
  10. OBSTACLE_FLAG=$1
  11. DEFAULT_START_FLAG=$2
  12. DEFAULT_END_FLAG=$3
  13. START_POINT=$(echo "$4" | tr ',' ' ')
  14. END_POINT=$(echo "$5" | tr ',' ' ')
  15. BUILD_MAP_NAME="build_map.bag"
  16. SIMULATION_PATH="/home/cicv/work/pji_desktop/simulation"
  17. # 是否加载障碍物
  18. if [ "$OBSTACLE_FLAG" == "true" ]; then # 加载
  19. echo "Loading default obstacle..."
  20. # 动态加载障碍物
  21. command="cd $SIMULATION_PATH/pji_work && source devel/setup.bash && rosrun test demo $SIMULATION_PATH/merge_obstacles_data/merged_obstacles_new_0517_1.csv; exec bash"
  22. nohup bash -c "$command" >/dev/null 2>&1 &
  23. # gnome-terminal --tab -e 'bash -c '\""$command"\"
  24. sleep 0.5
  25. echo 'bash -c '"$command"
  26. echo "Default obstacle loaded"
  27. fi
  28. # 起点设置
  29. if [ "$DEFAULT_START_FLAG" == "true" ]; then
  30. # 默认起点
  31. echo "Use default start point"
  32. elif [ "$DEFAULT_START_FLAG" == "false" ]; then
  33. # 自定义起点
  34. echo "Setting start point: $START_POINT"
  35. ## 发布自定义起点 - gazebo
  36. command="cd $SIMULATION_PATH/catkin_ws && catkin_make && source devel/setup.bash && rosrun goal_publish initialPose $START_POINT"
  37. ### 清除环境
  38. pkill -f "goal_publish/initialPose"
  39. sleep 1
  40. echo 'bash -c '\""$command"\"
  41. nohup bash -c "$command" >/dev/null 2>&1 &
  42. sleep 5
  43. ## 发布自定义起点 - rviz
  44. command="cd $SIMULATION_PATH/catkin_ws && catkin_make && source devel/setup.bash && rosrun goal_publish initialPose_rviz $START_POINT"
  45. ### 清除环境
  46. pkill -f "goal_publish/initialPose_rviz"
  47. sleep 1
  48. echo 'bash -c '\""$command"\"
  49. nohup bash -c "$command" >/dev/null 2>&1 &
  50. ### 这里必须设置不少于5s的延迟时间,否则rviz中的起点设置会出现问题
  51. sleep 5
  52. echo "Start point: $START_POINT has been set"
  53. fi
  54. # 终点设置
  55. if [ "$DEFAULT_END_FLAG" == "true" ]; then
  56. # 默认终点
  57. echo "Use default end point"
  58. ## 发布默认终点
  59. 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; exec bash"
  60. ## 录包
  61. ### 激活conda环境
  62. source activate simulation
  63. nohup python "$SIMULATION_PATH"/rosbag_record.py "$SIMULATION_PATH"/data/record_bag/test.bag >/dev/null 2>&1 &
  64. ## 清除环境
  65. pkill -f "goal_publish/goal" # 下发自定义/默认终点前必须先清除goal,不能只清除pub_node
  66. pkill -f "goal_publish/pub_node"
  67. sleep 1
  68. echo 'bash -c '\""$command"\"
  69. ## 设置终点并执行
  70. nohup bash -c "$command" >/dev/null 2>&1 &
  71. elif [ "$DEFAULT_END_FLAG" == "false" ]; then
  72. # 自定义终点
  73. echo "Setting end point: $END_POINT"
  74. ## 发布自定义终点
  75. command="cd $SIMULATION_PATH/catkin_ws && catkin_make && source devel/setup.bash && rosrun goal_publish goal $END_POINT"
  76. ## 录包
  77. ### 激活conda环境
  78. source activate simulation
  79. nohup python "$SIMULATION_PATH"/rosbag_record.py "$SIMULATION_PATH"/data/record_bag/test.bag >/dev/null 2>&1 &
  80. ## 清除环境
  81. pkill -f "goal_publish/goal"
  82. pkill -f "goal_publish/pub_node"
  83. sleep 1
  84. echo 'bash -c '\""$command"\"
  85. nohup bash -c "$command" >/dev/null 2>&1 &
  86. ## 设置终点并执行
  87. echo "End point: $END_POINT has been set"
  88. fi