#!/bin/bash
REPO_PATH=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "检测到仓库根目录: $REPO_PATH"
ROS1_WS_PATH="${REPO_PATH}/ros1_ws/dog_msgs_ws"
ROS2_WS_PATH="${REPO_PATH}/ros2_ws"
if [ ! -d "$ROS2_WS_PATH" ]; then
echo "错误: 找不到 ros2_ws 目录。请确保脚本位于 ledog_ros2 根目录下。"
exit 1
fi
CURRENT_SHELL=$(basename "$SHELL")
if [[ "$CURRENT_SHELL" == "zsh" ]]; then
SETUP_EXT="zsh"
echo "检测到当前 Shell 为 zsh,将使用 setup.zsh"
else
SETUP_EXT="bash"
echo "检测到当前 Shell 为 bash (或未知),将使用 setup.bash"
fi
SESSION_NAME="ledog"
if ! command -v tmux &> /dev/null
then
echo "错误: tmux 未安装。请先运行 'sudo dnf install tmux'"
exit 1
fi
tmux has-session -t $SESSION_NAME 2>/dev/null
if [ $? = 0 ]; then
echo "检测到已存在的会话,正在关闭..."
tmux kill-session -t $SESSION_NAME
fi
echo "正在启动新的 tmux 会话: $SESSION_NAME (2x2 网格)"
tmux new-session -d -s $SESSION_NAME -n "RobotControl" -c $REPO_PATH
tmux split-window -t $SESSION_NAME:0 -c $REPO_PATH
tmux split-window -t $SESSION_NAME:0 -c $REPO_PATH
tmux split-window -t $SESSION_NAME:0 -c $REPO_PATH
tmux select-layout -t $SESSION_NAME:0 tiled
tmux send-keys -t $SESSION_NAME:0.0 "source ${ROS2_WS_PATH}/install/setup.${SETUP_EXT}" C-m
tmux send-keys -t $SESSION_NAME:0.0 "echo '>>> 启动硬件接口...'" C-m
tmux send-keys -t $SESSION_NAME:0.0 "ros2 launch so101_hw_interface so101_hw.launch.py" C-m
tmux send-keys -t $SESSION_NAME:0.1 "source ${ROS2_WS_PATH}/install/setup.${SETUP_EXT}" C-m
tmux send-keys -t $SESSION_NAME:0.1 "echo '>>> 启动手柄控制器...'" C-m
tmux send-keys -t $SESSION_NAME:0.1 "ros2 launch joystick_alphadog_with_so101_servo unified_control.launch.py use_sim:=False" C-m
tmux send-keys -t $SESSION_NAME:0.2 "source ${ROS2_WS_PATH}/install/setup.${SETUP_EXT}" C-m
tmux send-keys -t $SESSION_NAME:0.2 "echo '>>> 启动 MoveIt...'" C-m
tmux send-keys -t $SESSION_NAME:0.2 "sleep 3" C-m
tmux send-keys -t $SESSION_NAME:0.2 "ros2 launch lerobot_moveit so101_moveit.launch.py display:=False" C-m
tmux send-keys -t $SESSION_NAME:0.3 "echo '>>> 启动 ROS 1 网桥...'" C-m
tmux send-keys -t $SESSION_NAME:0.3 "sleep 5" C-m
tmux send-keys -t $SESSION_NAME:0.3 "source ${ROS1_WS_PATH}/devel/setup.${SETUP_EXT}" C-m
tmux send-keys -t $SESSION_NAME:0.3 "source ${ROS2_WS_PATH}/install/setup.${SETUP_EXT}" C-m
tmux send-keys -t $SESSION_NAME:0.3 "ros2 launch joystick_alphadog_with_so101_servo start_static_bridge.launch.py" C-m
tmux select-pane -t $SESSION_NAME:0.0
echo "所有节点已在 tmux 会话 '$SESSION_NAME' 中启动。"
echo "请运行 'tmux attach -t $SESSION_NAME' 来查看。"