mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-05 22:15:04 +00:00
212 lines
5.1 KiB
Bash
Executable File
212 lines
5.1 KiB
Bash
Executable File
#!/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 "$@"
|