'use client'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
import { Button } from '@/components/ui/button'
import { Separator } from '@/components/ui/separator'
import {
Bot,
Dog,
User,
Zap,
Shield,
Eye,
Navigation,
Cpu,
Battery,
ChevronRight,
CheckCircle,
Info,
ExternalLink,
Plane,
Sparkles
} from 'lucide-react'
import { Link } from 'react-router-dom'
const robots = [
{
id: 'pilot-labs-scout',
name: 'Pilot Labs Scout',
type: 'Mobile Robot',
icon: Bot,
status: 'Available',
description: 'Rugged autonomous mobile robot for industrial and commercial applications',
keyFeatures: [
'Mecanum wheel drive system',
'YDLIDAR SuperLight (95g) LiDAR',
'Intel RealSense D435i vision',
'ROS 2 Rolling Jazzy integration'
],
specifications: {
weight: '15 kg',
payload: '10 kg',
speed: '2.0 m/s',
battery: '4 hours'
},
applications: ['Industrial inspection', 'Warehouse management', 'Security patrol'],
path: '/docs/robots/pilot-labs-scout'
},
{
id: 'unitree-go2',
name: 'Unitree Go2',
type: 'Quadruped Robot',
icon: Dog,
status: 'Available',
description: 'Advanced quadrupedal robot with exceptional mobility and manipulation capabilities',
keyFeatures: [
'12 Degrees of Freedom',
'Dynamic gait adaptation',
'Advanced balance control',
'Force-controlled manipulation'
],
specifications: {
weight: '15 kg',
payload: '5 kg',
speed: '3.5 m/s',
battery: '2 hours'
},
applications: ['Search and rescue', 'Industrial inspection', 'Research and development'],
path: '/docs/robots/unitree-go2'
},
{
id: 'unitree-humanoids',
name: 'Unitree Humanoids',
type: 'Humanoid Robots',
icon: User,
status: 'Available',
description: 'Humanoid robots with bipedal locomotion and dexterous manipulation',
keyFeatures: [
'23-43 Degrees of Freedom',
'Dual-arm manipulation',
'Advanced AI perception',
'Human-robot interaction'
],
specifications: {
weight: '47-55 kg',
payload: '10-15 kg',
speed: '2.5-3.3 km/h',
battery: '2.5-3 hours'
},
applications: ['Manufacturing assistance', 'Healthcare support', 'Research collaboration'],
path: '/docs/robots/unitree-humanoids'
},
{
id: 'scenne-humanoid',
name: 'Scenne Humanoid',
type: 'Advanced Humanoid',
icon: User,
status: 'Global Deployment',
description: 'Next-generation humanoid with AI-driven intelligence and cultural adaptation',
keyFeatures: [
'32 Degrees of Freedom',
'Multi-cultural intelligence',
'Advanced natural interaction',
'Global regulatory compliance'
],
specifications: {
weight: '75 kg',
payload: '20 kg',
speed: '2.5 km/h (6 km/h running)',
battery: '8 hours'
},
applications: ['Healthcare (US)', 'Manufacturing (China)', 'Education (Global)'],
path: '/docs/robots/scenne-humanoid'
},
{
id: 'yahboom-rosmaster',
name: 'Yahboom ROSMASTER',
type: 'AI Wheeled Robot',
icon: Sparkles,
status: 'Available',
description: 'ROS 2-powered educational robot with multimodal AI, navigation, and optional robotic arm',
keyFeatures: [
'ROS 2 Rolling Jazzy integration',
'Multimodal AI (vision, voice, text)',
'LiDAR navigation and SLAM',
'Optional 4-DOF robotic arm',
'Camera and sensor suite'
],
specifications: {
weight: '3-5 kg',
payload: '2 kg',
speed: '1.5 m/s',
battery: '2-3 hours'
},
applications: ['Education', 'Research', 'Service robotics', 'AI development'],
path: '/docs/robots/yahboom-rosmaster'
},
{
id: 'dreame-d20-pro',
name: 'Dreame D20 Pro',
type: 'Smart Vacuum Robot',
icon: Zap,
status: 'Available',
description: 'Advanced robotic vacuum with LIDAR mapping, zone cleaning, and multi-floor support',
keyFeatures: [
'LIDAR SLAM navigation',
'Multi-floor mapping',
'Zone and room cleaning',
'Auto-empty station compatible',
'Advanced obstacle avoidance'
],
specifications: {
weight: '3.7 kg',
payload: 'N/A',
speed: '0.3 m/s',
battery: '3 hours'
},
applications: ['Home cleaning', 'Commercial cleaning', 'Mapping services', 'Multi-robot coordination'],
path: '/docs/robots/dreame-d20-pro'
},
{
id: 'tdrone-mini',
name: 'Tdrone Mini Quadcopter',
type: 'Entry-Level Drone',
icon: Plane,
status: 'Available',
description: 'Affordable educational drone with PX4 flight controller, perfect for learning UAV development',
keyFeatures: [
'PX4/ArduPilot compatible',
'WiFi FPV camera',
'RTSP video streaming',
'MAVLink protocol support',
'Open-source flight stack'
],
specifications: {
weight: '250g',
payload: '100g',
speed: '15 m/s',
battery: '10-15 minutes'
},
applications: ['Education', 'Aerial photography', 'Mapping', 'UAV development'],
path: '/docs/robots/tdrone-mini'
}
]
const robotComparison = [
{
feature: 'Locomotion Type',
pilotScout: 'Wheeled (Mecanum)',
go2: 'Quadrupedal',
unitreeH1: 'Bipedal',
scenne: 'Bipedal Advanced',
yahboom: 'Wheeled (Differential)',
dreame: 'Wheeled (Vacuum)',
tdrone: 'Aerial (Quadcopter)'
},
{
feature: 'Degrees of Freedom',
pilotScout: '4 (wheels)',
go2: '12',
unitreeH1: '23',
scenne: '32',
yahboom: '2-6 (optional arm)',
dreame: '3 (navigation)',
tdrone: '4 (flight axes)'
},
{
feature: 'Payload Capacity',
pilotScout: '10 kg',
go2: '5 kg',
unitreeH1: '10 kg',
scenne: '20 kg',
yahboom: '2 kg',
dreame: 'N/A',
tdrone: '100g'
},
{
feature: 'Max Speed',
pilotScout: '2.0 m/s',
go2: '3.5 m/s',
unitreeH1: '3.3 km/h',
scenne: '6 km/h',
yahboom: '1.5 m/s',
dreame: '0.3 m/s',
tdrone: '15 m/s'
},
{
feature: 'Terrain Capability',
pilotScout: 'Smooth/Indoor',
go2: 'Rough Terrain',
unitreeH1: 'Structured',
scenne: 'Multi-terrain',
yahboom: 'Indoor/Smooth',
dreame: 'Floor surfaces',
tdrone: 'Aerial/3D space'
},
{
feature: 'AI Intelligence',
pilotScout: 'Navigation',
go2: 'Basic Learning',
unitreeH1: 'Task Learning',
scenne: 'Full AI Integration',
yahboom: 'Multimodal AI',
dreame: 'SLAM Navigation',
tdrone: 'Flight Control'
}
]
export default function RobotsPage() {
return (
<div className="min-h-screen bg-background">
<div className="container mx-auto px-4 py-8 max-w-6xl">
{/* Header */}
<div className="mb-8">
<div className="flex items-center space-x-4 mb-4">
<Bot className="h-12 w-12 text-primary" />
<div>
<h1 className="text-4xl font-bold">Robotics Platforms</h1>
<p className="text-xl text-muted-foreground">
Comprehensive overview of our robot fleet and capabilities
</p>
</div>
<Badge variant="default" className="text-sm">
7 Active Platforms
</Badge>
</div>
<div className="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
<Card>
<CardContent className="p-4 text-center">
<Bot className="h-8 w-8 text-blue-500 mx-auto mb-2" />
<div className="text-2xl font-bold">7</div>
<div className="text-sm text-muted-foreground">Robot Types</div>
</CardContent>
</Card>
<Card>
<CardContent className="p-4 text-center">
<Zap className="h-8 w-8 text-yellow-500 mx-auto mb-2" />
<div className="text-2xl font-bold">2-32</div>
<div className="text-sm text-muted-foreground">DOF Range</div>
</CardContent>
</Card>
<Card>
<CardContent className="p-4 text-center">
<Eye className="h-8 w-8 text-green-500 mx-auto mb-2" />
<div className="text-2xl font-bold">AI</div>
<div className="text-sm text-muted-foreground">Intelligence</div>
</CardContent>
</Card>
<Card>
<CardContent className="p-4 text-center">
<Shield className="h-8 w-8 text-red-500 mx-auto mb-2" />
<div className="text-2xl font-bold">Safe</div>
<div className="text-sm text-muted-foreground">Operations</div>
</CardContent>
</Card>
</div>
</div>
{/* Robot Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
{robots.map((robot) => (
<Card key={robot.id} className="hover:shadow-lg transition-shadow">
<CardHeader>
<div className="flex items-center justify-between">
<div className="flex items-center space-x-3">
<robot.icon className="h-8 w-8 text-primary" />
<div>
<CardTitle className="text-xl">{robot.name}</CardTitle>
<CardDescription>{robot.type}</CardDescription>
</div>
</div>
<Badge variant={robot.status === 'Available' ? 'default' : 'secondary'}>
{robot.status}
</Badge>
</div>
</CardHeader>
<CardContent>
<p className="text-sm text-muted-foreground mb-4">{robot.description}</p>
<div className="grid grid-cols-2 gap-4 mb-4">
<div>
<h4 className="font-medium text-sm mb-2">Specifications</h4>
<dl className="text-xs space-y-1">
<div className="flex justify-between">
<dt>Weight:</dt>
<dd className="text-muted-foreground">{robot.specifications.weight}</dd>
</div>
<div className="flex justify-between">
<dt>Payload:</dt>
<dd className="text-muted-foreground">{robot.specifications.payload}</dd>
</div>
<div className="flex justify-between">
<dt>Speed:</dt>
<dd className="text-muted-foreground">{robot.specifications.speed}</dd>
</div>
<div className="flex justify-between">
<dt>Battery:</dt>
<dd className="text-muted-foreground">{robot.specifications.battery}</dd>
</div>
</dl>
</div>
<div>
<h4 className="font-medium text-sm mb-2">Key Features</h4>
<ul className="text-xs space-y-1">
{robot.keyFeatures.slice(0, 4).map((feature, index) => (
<li key={index} className="flex items-center space-x-1">
<CheckCircle className="h-2 w-2 text-green-500" />
<span>{feature}</span>
</li>
))}
</ul>
</div>
</div>
<div className="mb-4">
<h4 className="font-medium text-sm mb-2">Applications</h4>
<div className="flex flex-wrap gap-1">
{robot.applications.map((app) => (
<Badge key={app} variant="outline" className="text-xs">
{app}
</Badge>
))}
</div>
</div>
<Link to={robot.path}>
<Button className="w-full">
View Details
<ChevronRight className="ml-2 h-4 w-4" />
</Button>
</Link>
</CardContent>
</Card>
))}
</div>
{/* Comparison Table */}
<Card className="mb-8">
<CardHeader>
<CardTitle>Platform Comparison</CardTitle>
<CardDescription>
Detailed comparison of all robotics platforms
</CardDescription>
</CardHeader>
<CardContent>
<div className="overflow-x-auto">
<table className="w-full border-collapse">
<thead>
<tr className="border-b">
<th className="text-left p-3 font-medium">Feature</th>
<th className="text-center p-3 font-medium">Pilot Labs Scout</th>
<th className="text-center p-3 font-medium">Unitree Go2</th>
<th className="text-center p-3 font-medium">Unitree H1</th>
<th className="text-center p-3 font-medium">Scenne</th>
<th className="text-center p-3 font-medium">Yahboom ROSMASTER</th>
<th className="text-center p-3 font-medium">Dreame D20 Pro</th>
<th className="text-center p-3 font-medium">Tdrone Mini</th>
</tr>
</thead>
<tbody>
{robotComparison.map((row, index) => (
<tr key={index} className="border-b">
<td className="p-3 font-medium">{row.feature}</td>
<td className="text-center p-3 text-sm">{row.pilotScout}</td>
<td className="text-center p-3 text-sm">{row.go2}</td>
<td className="text-center p-3 text-sm">{row.unitreeH1}</td>
<td className="text-center p-3 text-sm">{row.scenne}</td>
<td className="text-center p-3 text-sm">{row.yahboom}</td>
<td className="text-center p-3 text-sm">{row.dreame}</td>
<td className="text-center p-3 text-sm">{row.tdrone}</td>
</tr>
))}
</tbody>
</table>
</div>
</CardContent>
</Card>
{/* Integration Overview */}
<Card className="mb-8">
<CardHeader>
<CardTitle>Unified Control System</CardTitle>
<CardDescription>
All robots integrated through Robotics MCP for seamless operation
</CardDescription>
</CardHeader>
<CardContent>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<div className="text-center">
<Bot className="h-12 w-12 text-primary mx-auto mb-3" />
<h3 className="font-medium mb-2">Robotics MCP Server</h3>
<p className="text-sm text-muted-foreground">
Unified control interface for all robot platforms with standardized APIs
</p>
</div>
<div className="text-center">
<Navigation className="h-12 w-12 text-blue-500 mx-auto mb-3" />
<h3 className="font-medium mb-2">Multi-Robot Coordination</h3>
<p className="text-sm text-muted-foreground">
Coordinated operation between different robot types and capabilities
</p>
</div>
<div className="text-center">
<Eye className="h-12 w-12 text-green-500 mx-auto mb-3" />
<h3 className="font-medium mb-2">Web Dashboard</h3>
<p className="text-sm text-muted-foreground">
Real-time monitoring and control through the robotics web interface
</p>
</div>
</div>
</CardContent>
</Card>
{/* Navigation */}
<div className="flex items-center justify-between pt-8 border-t">
<Link to="/docs">
<Button variant="outline">
<ChevronRight className="mr-2 h-4 w-4 rotate-180" />
Back to Documentation
</Button>
</Link>
<div className="flex space-x-2">
<Link to="/docs/ros-integration">
<Button variant="outline">
ROS Integration
<ChevronRight className="ml-2 h-4 w-4" />
</Button>
</Link>
<Link to="/docs/mcp-server">
<Button variant="outline">
Robotics MCP
<ChevronRight className="ml-2 h-4 w-4" />
</Button>
</Link>
</div>
</div>
</div>
</div>
)
}