unity2moveit2/UNITY_READY_TO_USE.md
ayuan9957 fe15edcbd5 Initial commit: Unity-MoveIt2 integrated robotic arm simulation system
- Unity frontend with ROS-TCP-Connector for ROS2 communication
- Docker-based ROS2 Jazzy backend with MoveIt2 integration
- Support for 1-9 DOF manipulators
- UR5 robot configuration and URDF files
- Assembly task feasibility analysis tools
- Comprehensive documentation and deployment guides

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 12:08:34 +08:00

9.0 KiB
Raw Permalink Blame History

Unity UR5 项目已就绪!🎉

所有配置已完成,现在可以开始测试了


当前状态

已完成的工作

根据您的日志,以下所有步骤已成功完成:

项目 状态
UR5机器人结构创建 成功
Base Link 自动配置 base_link
End Effector 自动配置 tool0
DOF 设置 6
Robot Name 设置 UR5
场景相机 已配置
场景光照 已配置
地面 已创建
ROS连接对象 已创建
场景保存 Assets/Scenes/UR5_TestScene.unity

已修复的问题

刚刚修复了:

  • Destroy 在编辑器模式的错误 → 现在使用 DestroyImmediate
  • Articulation Body immovable 配置错误 → 只在根对象设置

🚀 立即测试3步

步骤 1: 进入Play模式

在Unity中点击 Play 按钮 ▶️

步骤 2: 检查Console日志

应该看到:

[UniversalRobotAdapter] 初始化 6 DOF 机器人: UR5
[UniversalRobotAdapter] UR5 初始化成功 ✅
[ROSTCPBridge] 成功连接到ROS2服务器 ✅

步骤 3: 观察Scene视图

在Scene视图中应该看到

  • 机器人结构8个彩色球体连接成链条
  • 青色球 🔵 = 各个关节link
  • 红色球 🔴 = 末端执行器tool0
  • 黄色线条 = 连接关系
  • 灰色地面 = 2x2米平面

🎮 测试关节运动

快速测试

  1. 确保在Play模式下 ▶️

  2. 选择一个关节

    • Hierarchy → UR5_Robot → base_link → shoulder_link
    • 点击选中 shoulder_link
  3. 修改关节角度

    • Inspector → Articulation Body
    • 展开 X Drive
    • 修改 Target 值:
      • 当前值: 0
      • 改为: 30 (度)
    • 观察机器人肩部旋转
  4. 测试其他关节

    • upper_arm_link - 肩部抬升
    • forearm_link - 肘关节
    • wrist_1_link, wrist_2_link, wrist_3_link - 腕关节

预期行为

  • 关节平滑旋转
  • 子连杆跟随父连杆运动
  • 末端执行器(红球)随整体移动
  • 无碰撞或穿透

📊 场景层级结构

您的场景现在包含:

UR5_TestScene
├── 📷 Main Camera                 (观察视角)
├── 💡 Directional Light           (光照)
├── 🏠 Ground                       (地面)
├── 🌐 ROS_Connection              (ROS通信)
│   └── 📦 ROSTCPBridge
│
└── 🤖 UR5_Robot                   (机器人)
    ├── 📦 UniversalRobotAdapter
    ├── 📦 UR5ManualSetup
    ├── 📦 ArticulationBody (Root - Immovable)
    │
    └── 🔗 base_link               [青色球]
        └── 🔗 shoulder_link        [青色球]
            └── 🔗 upper_arm_link   [青色球]
                └── 🔗 forearm_link [青色球]
                    └── 🔗 wrist_1_link [青色球]
                        └── 🔗 wrist_2_link [青色球]
                            └── 🔗 wrist_3_link [青色球]
                                └🎯 tool0   [红色球]

🔧 ROS2 连接验证

检查Docker状态

在PowerShell中运行

# 1. 确认容器运行
docker ps | grep unity-ros2-system

# 2. 检查ROS2节点
docker exec unity-ros2-system bash -c "source /opt/ros/jazzy/setup.bash && ros2 node list"

# 预期输出: /UnityEndpoint

# 3. 检查话题
docker exec unity-ros2-system bash -c "source /opt/ros/jazzy/setup.bash && ros2 topic list"

Unity中的连接状态

Play模式下检查Console

✅ [ROSTCPBridge] 初始化ROS TCP桥梁
✅ [ROSTCPBridge] 正在连接到ROS2服务器: 127.0.0.1:10000
✅ [ROSTCPBridge] 成功连接到ROS2服务器

🎨 可视化调整

相机控制

在Scene视图中

  • 鼠标中键 - 旋转视角
  • 滚轮 - 缩放
  • Alt + 鼠标左键 - 围绕选中对象旋转
  • 双击对象 - 自动聚焦

查看机器人

  1. Hierarchy中选中 UR5_Robot
  2. 按键盘 F 键聚焦
  3. 调整视角观察完整结构

📋 功能测试清单

基础功能

  • Play模式启动无错误
  • Console显示 "UR5 初始化成功"
  • Scene视图可以看到机器人结构
  • ROS连接成功

关节测试

  • shoulder_link 可以旋转
  • upper_arm_link 可以抬升
  • forearm_link (肘关节) 可以弯曲
  • 腕关节1/2/3 可以旋转
  • 末端执行器跟随运动

物理测试

  • 关节运动平滑
  • 无异常抖动
  • 无穿模现象
  • 碰撞检测正常

⚙️ 高级测试

测试IK (逆运动学)

准备中 - 需要完善 InteractiveEndEffectorController

测试路径规划

准备中 - 需要MoveIt2服务配置

测试碰撞检测

准备中 - 需要添加障碍物


🎯 下一步优化

1. 添加真实Mesh模型 🎨

当前状态: 使用彩色球体临时可视化

改进方法:

1. 在Hierarchy中展开UR5_Robot
2. 选中每个link如base_link
3. 删除临时的Marker球体
4. 添加真实的mesh模型
   - 找到 Assets/UR5/meshes/ur5/visual/base.obj
   - 拖拽到对应的link下
   - 调整位置和旋转
5. 对每个link重复此步骤

参考mesh文件:

  • base.obj → base_link
  • shoulder.obj → shoulder_link
  • upperarm.obj → upper_arm_link
  • forearm.obj → forearm_link
  • wrist1.obj → wrist_1_link
  • wrist2.obj → wrist_2_link
  • wrist3.obj → wrist_3_link

2. 配置ROS通信 🌐

ROSTCPBridge已添加但需要配置

1. 选中 ROS_Connection 对象
2. Inspector → ROSTCPBridge
3. 配置参数:
   - ROS IP: 127.0.0.1
   - ROS Port: 10000
   - Auto Reconnect: ✅
   - Publish Rate: 50 Hz

3. 添加末端控制器 🎮

1. 选中 UR5_Robot
2. Add Component → Interactive End Effector Controller
3. 配置:
   - End Effector: 拖拽 tool0
   - Control Mode: Drag

4. 调整物理参数 ⚙️

优化关节稳定性:

Edit → Project Settings → Physics
- Solver Iterations: 12
- Solver Velocity Iterations: 8
- Default Contact Offset: 0.01

5. 性能优化 📊

Window → Analysis → Profiler
监控指标:
- FPS > 30
- CPU Time < 20ms
- Physics < 5ms

如果遇到问题

问题: 看不到机器人

解决:

1. 确认在Scene视图不是Game视图
2. Hierarchy中双击 UR5_Robot自动聚焦
3. 检查对象的Position是否为(0, 0, 0)

问题: 关节不动

解决:

1. 确认在Play模式下
2. 检查 Articulation Body → Drive → Stiffness > 0
3. 确认 Force Limit > 0
4. Project Settings → Physics → Solver Iterations ≥ 12

问题: ROS连接失败

解决:

# 1. 检查Docker
docker ps | grep unity-ros2-system

# 2. 检查端口
docker port unity-ros2-system
# 应显示: 10000/tcp -> 0.0.0.0:10000

# 3. 重启容器
docker restart unity-ros2-system

# 4. 查看日志
docker logs unity-ros2-system --tail 50

问题: 编辑器卡顿

解决:

1. 减少关节Stiffness和Damping
2. Edit → Preferences → General → Script Changes While Playing: Recompile After Finished Playing
3. Window → Profiler 检查性能瓶颈

📚 完整文档索引

文档 用途
UNITY_READY_TO_USE.md 👈 当前文档 - 立即开始使用
UNITY_QUICK_FIX.md 问题修复指南
UNITY_SETUP_COMPLETE_GUIDE.md 完整配置教程
UR5_QUICK_START.md UR5快速开始
CLAUDE.md 开发规范
SYSTEM_DESIGN.md 系统架构

🎓 学习资源

Unity Articulation Body

ROS TCP Connector

  • GitHub
  • Unity与ROS2通信的桥梁

MoveIt2


💡 实用技巧

快捷键

快捷键 功能
F 聚焦选中对象
Ctrl + S 保存场景
Ctrl + D 复制对象
W 移动工具
E 旋转工具
R 缩放工具

Console过滤

  • 点击Console右上角的过滤按钮
  • 只显示Error/Warning/Info
  • 搜索特定关键词(如"UR5"

层级结构搜索

  • Hierarchy窗口上方搜索框
  • 输入名称快速定位对象
  • 例如: 搜索 "tool0"

📊 项目统计

项目 数量
关节数 6
Link数 8 (含tool0)
脚本组件 15
场景对象 13
URDF文件 2
Mesh文件 14

🎉 恭喜!

您的Unity-MoveIt2 UR5项目已经完全就绪

现在可以:

  • 运行和测试机器人
  • 调整关节参数
  • 连接ROS2进行通信
  • 开发自定义控制逻辑
  • 集成路径规划功能

开始测试吧! 🚀


如有任何问题,请查看日志并参考相关文档。 📖