Files
Uni-Lab-OS/dummy2_debug/start_dummy2_ros2.sh
2025-08-14 16:03:13 +08:00

212 lines
5.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Dummy2 ROS2服务启动脚本
# 用于启动Dummy2机械臂的ROS2服务
echo "==================================="
echo "Dummy2 ROS2服务启动脚本"
echo "==================================="
# 设置变量
DUMMY2_WS="/home/hh/dummy2/ros2/dummy2_ws"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 检查workspace是否存在
if [ ! -d "$DUMMY2_WS" ]; then
echo "错误: Dummy2工作空间不存在: $DUMMY2_WS"
exit 1
fi
echo "Dummy2工作空间: $DUMMY2_WS"
# 函数检查ROS2环境
check_ros2_environment() {
echo "检查ROS2环境..."
if [ -z "$ROS_DISTRO" ]; then
echo "警告: ROS_DISTRO环境变量未设置"
echo "尝试设置ROS2 Humble环境..."
source /opt/ros/humble/setup.bash
fi
echo "ROS2版本: $ROS_DISTRO"
# 检查ROS2命令是否可用
if command -v ros2 &> /dev/null; then
echo "✓ ROS2命令可用"
else
echo "✗ ROS2命令不可用"
echo "请确保ROS2已正确安装"
exit 1
fi
}
# 函数构建workspace
build_workspace() {
echo ""
echo "构建Dummy2工作空间..."
cd "$DUMMY2_WS"
# 设置ROS2环境
source /opt/ros/humble/setup.bash
# 构建workspace
echo "运行colcon build..."
if colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release; then
echo "✓ 构建成功"
else
echo "✗ 构建失败"
return 1
fi
# 设置环境
source install/setup.bash
echo "✓ 环境设置完成"
}
# 函数:启动硬件接口
start_hardware_interface() {
echo ""
echo "启动Dummy2硬件接口..."
cd "$DUMMY2_WS"
source /opt/ros/humble/setup.bash
source install/setup.bash
echo "启动命令: ros2 launch dummy2_hw dummy2_hw.launch.py"
echo "注意: 这将在前台运行按Ctrl+C停止"
echo "启动后请在新终端中运行MoveIt服务"
echo ""
# 启动硬件接口
ros2 launch dummy2_hw dummy2_hw.launch.py
}
# 函数启动MoveIt服务
start_moveit_service() {
echo ""
echo "启动MoveIt2服务..."
cd "$DUMMY2_WS"
source /opt/ros/humble/setup.bash
source install/setup.bash
echo "启动命令: ros2 launch dummy2_moveit_config demo.launch.py"
echo "注意: 这将在前台运行按Ctrl+C停止"
echo ""
# 启动MoveIt服务
ros2 launch dummy2_moveit_config demo.launch.py
}
# 函数:检查服务状态
check_services() {
echo ""
echo "检查ROS2服务状态..."
source /opt/ros/humble/setup.bash
echo "ROS2话题:"
ros2 topic list | head -10
echo ""
echo "ROS2服务:"
ros2 service list | head -10
echo ""
echo "ROS2节点:"
ros2 node list
}
# 主菜单
show_menu() {
echo ""
echo "请选择操作:"
echo "1. 构建Dummy2工作空间"
echo "2. 启动硬件接口"
echo "3. 启动MoveIt服务"
echo "4. 检查服务状态"
echo "5. 显示启动说明"
echo "0. 退出"
echo ""
read -p "请输入选项 (0-5): " choice
}
# 显示启动说明
show_instructions() {
echo ""
echo "==================================="
echo "Dummy2启动说明"
echo "==================================="
echo ""
echo "完整启动流程:"
echo ""
echo "1. 首先构建工作空间 (选项1)"
echo ""
echo "2. 在终端1启动硬件接口 (选项2):"
echo " ./start_dummy2_ros2.sh"
echo " 然后选择选项2"
echo ""
echo "3. 在终端2启动MoveIt服务 (选项3):"
echo " 打开新终端,运行:"
echo " cd $DUMMY2_WS"
echo " source /opt/ros/humble/setup.bash"
echo " source install/setup.bash"
echo " ros2 launch dummy2_moveit_config demo.launch.py"
echo ""
echo "4. 在终端3测试Unilab控制:"
echo " cd /home/hh/Uni-Lab-OS"
echo " python test_dummy2_real_control.py --test-control"
echo ""
echo "注意事项:"
echo "- 确保Dummy2硬件已连接"
echo "- 检查CAN2ETH网络设置"
echo "- 确保机械臂在安全位置"
}
# 主程序
main() {
check_ros2_environment
if [ "$1" = "hw" ]; then
start_hardware_interface
elif [ "$1" = "moveit" ]; then
start_moveit_service
elif [ "$1" = "check" ]; then
check_services
elif [ "$1" = "build" ]; then
build_workspace
else
while true; do
show_menu
case $choice in
1)
build_workspace
;;
2)
start_hardware_interface
;;
3)
start_moveit_service
;;
4)
check_services
;;
5)
show_instructions
;;
0)
echo "退出"
exit 0
;;
*)
echo "无效选项,请重新选择"
;;
esac
done
fi
}
# 运行主程序
main "$@"