unity2moveit2/scripts/create-new-unity-project.ps1
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

188 lines
6.1 KiB
PowerShell

# Create New Unity Project for ROS2 Integration
# 为ROS2集成创建新的Unity项目
param(
[string]$ProjectName = "ROS2_Niryo_Control",
[string]$ProjectPath = "D:\ros2\DockerRos2Arm-niryo_arm\Unity_MoveIt2\NewUnityProject",
[string]$UnityPath = "C:\Program Files\Unity\Hub\Editor\2021.3.33f1c1\Editor\Unity.exe",
[switch]$CreateOnly,
[switch]$OpenAfterCreate
)
Write-Host "=== Creating New Unity Project for ROS2 Integration ===" -ForegroundColor Green
# Check if Unity exists
if (-not (Test-Path $UnityPath)) {
Write-Host "Error: Unity not found at $UnityPath" -ForegroundColor Red
exit 1
}
# Create project directory
$FullProjectPath = Join-Path $ProjectPath $ProjectName
Write-Host "Creating project directory: $FullProjectPath" -ForegroundColor Yellow
if (Test-Path $FullProjectPath) {
Write-Host "Warning: Project directory already exists. Removing..." -ForegroundColor Yellow
Remove-Item $FullProjectPath -Recurse -Force
}
New-Item -ItemType Directory -Path $FullProjectPath -Force | Out-Null
# Create Unity project using command line
Write-Host "Creating Unity project..." -ForegroundColor Yellow
$createArgs = @(
"-createProject", $FullProjectPath,
"-batchmode",
"-quit"
)
$process = Start-Process -FilePath $UnityPath -ArgumentList $createArgs -Wait -PassThru -NoNewWindow
if ($process.ExitCode -eq 0) {
Write-Host "Unity project created successfully!" -ForegroundColor Green
} else {
Write-Host "Error creating Unity project. Exit code: $($process.ExitCode)" -ForegroundColor Red
exit 1
}
# Create basic project structure
Write-Host "Setting up project structure..." -ForegroundColor Yellow
$directories = @(
"Assets/Scripts/ROS",
"Assets/Scripts/Robot",
"Assets/Scripts/UI",
"Assets/Prefabs/Robot",
"Assets/Materials",
"Assets/Scenes",
"Assets/Resources",
"Assets/URDF"
)
foreach ($dir in $directories) {
$fullPath = Join-Path $FullProjectPath $dir
New-Item -ItemType Directory -Path $fullPath -Force | Out-Null
}
# Create manifest.json for ROS packages
$manifestPath = Join-Path $FullProjectPath "Packages\manifest.json"
$manifestContent = @"
{
"dependencies": {
"com.unity.collab-proxy": "2.0.5",
"com.unity.feature.development": "1.0.1",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.7.5",
"com.unity.ugui": "1.0.0",
"com.unity.visualscripting": "1.8.0",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.cloth": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.physics2d": "1.0.0",
"com.unity.modules.screencapture": "1.0.0",
"com.unity.modules.terrain": "1.0.0",
"com.unity.modules.terrainphysics": "1.0.0",
"com.unity.modules.tilemap": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.uielements": "1.0.0",
"com.unity.modules.umbra": "1.0.0",
"com.unity.modules.unityanalytics": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestexture": "1.0.0",
"com.unity.modules.unitywebrequesttexture": "1.0.0",
"com.unity.modules.unitywebrequestwww": "1.0.0",
"com.unity.modules.vehicles": "1.0.0",
"com.unity.modules.video": "1.0.0",
"com.unity.modules.vr": "1.0.0",
"com.unity.modules.wind": "1.0.0",
"com.unity.modules.xr": "1.0.0"
},
"scopedRegistries": [
{
"name": "Unity Robotics",
"url": "https://packages.unity.com",
"scopes": [
"com.unity.robotics"
]
}
]
}
"@
Write-Output $manifestContent | Out-File -FilePath $manifestPath -Encoding UTF8
# Create README for the new project
$readmePath = Join-Path $FullProjectPath "README.md"
$readmeContent = @"
# ROS2 Niryo Robot Control Unity Project
This Unity project is designed for controlling Niryo robots through ROS2 integration.
## Project Structure
- **Assets/Scripts/ROS**: ROS2 communication scripts
- **Assets/Scripts/Robot**: Robot control and movement scripts
- **Assets/Scripts/UI**: User interface scripts
- **Assets/Prefabs/Robot**: Robot prefabs and components
- **Assets/URDF**: Robot URDF files and models
- **Assets/Scenes**: Unity scenes for robot simulation
## Required Packages
This project requires the following Unity packages:
- ROS TCP Connector (com.unity.robotics.ros-tcp-connector)
- URDF Importer (com.unity.robotics.urdf-importer)
## Setup Instructions
1. Open the project in Unity 2021.3.33f1c1
2. Install required ROS packages via Package Manager
3. Configure ROS TCP Endpoint connection
4. Import Niryo robot URDF files
5. Test connection with ROS2 Docker container
## Docker Integration
This project integrates with a ROS2 Docker container that provides:
- ROS2 Jazzy environment
- MoveIt2 motion planning
- Niryo robot packages
- ROS TCP Endpoint server
## Getting Started
1. Ensure Docker container is running
2. Open Unity project
3. Load the main scene
4. Test robot connection and control
"@
Write-Output $readmeContent | Out-File -FilePath $readmePath -Encoding UTF8
Write-Host "Project structure created successfully!" -ForegroundColor Green
Write-Host "Project location: $FullProjectPath" -ForegroundColor Cyan
Write-Host ""
Write-Host "Next steps:" -ForegroundColor Yellow
Write-Host "1. Install ROS TCP Connector package" -ForegroundColor White
Write-Host "2. Install URDF Importer package" -ForegroundColor White
Write-Host "3. Import robot assets and scripts" -ForegroundColor White
Write-Host "4. Configure ROS2 connection settings" -ForegroundColor White
if ($OpenAfterCreate) {
Write-Host ""
Write-Host "Opening Unity project..." -ForegroundColor Yellow
Start-Process -FilePath $UnityPath -ArgumentList "-projectPath", $FullProjectPath
}
Write-Host ""
Write-Host "Unity project creation completed!" -ForegroundColor Green