generate_world.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/bash
  2. # 检查到未定义的变量则停止执行并报错
  3. set -u
  4. source /home/cicv/work/pji_desktop/config.sh
  5. # 检查参数数量
  6. if [ "$#" -ne 1 ]; then
  7. echo "Error: Incorrect number of arguments"
  8. echo "Usage: $0 MAP_BAG_PATH"
  9. exit 1
  10. fi
  11. MAP_BAG_PATH=$1
  12. #SIMULATION_PATH="/home/cicv/work/pji_desktop/simulation"
  13. MAP2GAZEBO_LOG_PATH="$SIMULATION_PATH/logs/run_map2gazebo.log"
  14. GAZEBO_WORLD_LOG_PATH="$SIMULATION_PATH/logs/gazebo_world.log"
  15. MAP_STL_PATH="$SIMULATION_PATH/catkin_map2gazebo/src/models/map/meshes/map.stl"
  16. MAP2GAZEBO_START_FLAG="map2gazebo running"
  17. GAZEBO_WORLD_END_FLAG="Exported STL"
  18. # 激活conda环境
  19. source activate simulation
  20. # 清除环境
  21. ## kill ros节点
  22. rosnode kill --all
  23. ## 删除历史日志
  24. if [ -f "$MAP2GAZEBO_LOG_PATH" ]; then
  25. safe-rm "$MAP2GAZEBO_LOG_PATH"
  26. fi
  27. ## 删除旧STL文件
  28. if [ -f "$MAP_STL_PATH" ]; then
  29. safe-rm "$MAP_STL_PATH"
  30. fi
  31. sleep 0.5
  32. # 执行命令
  33. command="cd $SIMULATION_PATH/catkin_map2gazebo && safe-rm -r build devel && catkin_make && source devel/setup.bash && roslaunch --screen map2gazebo map2gazebo.launch"
  34. nohup script -q -c bash -c "$command" > "$MAP2GAZEBO_LOG_PATH" 2>&1 &
  35. disown
  36. # 检查脚本运行状态
  37. tail -F "$MAP2GAZEBO_LOG_PATH" | while read LINE; do
  38. # 检查脚本是否启动
  39. if echo "$LINE" | grep -q "$MAP2GAZEBO_START_FLAG"; then # 已启动
  40. echo "Service map2gazebo started."
  41. sleep 0.5
  42. # 播包 (含/map话题)
  43. rosbag play "$MAP_BAG_PATH"
  44. sleep 0.5
  45. fi
  46. # 检查STL文件是否生成
  47. if echo "$LINE" | grep -q "$GAZEBO_WORLD_END_FLAG"; then # 已生成
  48. # 清除环境
  49. ## kill上面启动的脚本
  50. pkill -f "map2gazebo"
  51. ## 关闭gazebo
  52. pkill -f "gazebo"
  53. echo "Service map2gazebo stopped."
  54. # 执行命令
  55. command="cd $SIMULATION_PATH/catkin_map2gazebo && safe-rm -r build devel && catkin_make && source devel/setup.bash && roslaunch --screen map2gazebo gazebo_world.launch"
  56. nohup script -q -c bash -c "$command" > "$GAZEBO_WORLD_LOG_PATH" 2>&1 &
  57. disown
  58. fi
  59. done