Spaces:
Sleeping
Sleeping
feat: add viewer code
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- viewer/.env.public +2 -0
- viewer/.gitignore +7 -0
- viewer/README.md +41 -52
- viewer/components.json +20 -0
- viewer/deploy-function.js +39 -0
- viewer/eslint.config.js +14 -13
- viewer/index.html +8 -3
- viewer/package-lock.json +0 -0
- viewer/package.json +79 -19
- viewer/postcss.config.js +6 -0
- viewer/public/favicon.ico +0 -0
- viewer/public/placeholder.svg +1 -0
- viewer/public/urdf/T12/meshes/Ankle1.STL +0 -0
- viewer/public/urdf/T12/meshes/Ankle2.STL +0 -0
- viewer/public/urdf/T12/meshes/Ankle3.STL +0 -0
- viewer/public/urdf/T12/meshes/Ankle4.STL +0 -0
- viewer/public/urdf/T12/meshes/Ankle5.STL +0 -0
- viewer/public/urdf/T12/meshes/Ankle6.STL +0 -0
- viewer/public/urdf/T12/meshes/Body.STL +0 -0
- viewer/public/urdf/T12/meshes/Foot1.STL +0 -0
- viewer/public/urdf/T12/meshes/Foot2.STL +0 -0
- viewer/public/urdf/T12/meshes/Foot3.STL +0 -0
- viewer/public/urdf/T12/meshes/Foot4.STL +0 -0
- viewer/public/urdf/T12/meshes/Foot5.STL +0 -0
- viewer/public/urdf/T12/meshes/Foot6.STL +0 -0
- viewer/public/urdf/T12/meshes/Hip1.STL +0 -0
- viewer/public/urdf/T12/meshes/Hip2.STL +0 -0
- viewer/public/urdf/T12/meshes/Hip3.STL +0 -0
- viewer/public/urdf/T12/meshes/Hip4.STL +0 -0
- viewer/public/urdf/T12/meshes/Hip5.STL +0 -0
- viewer/public/urdf/T12/meshes/Hip6.STL +0 -0
- viewer/public/urdf/T12/meshes/Knee1.STL +0 -0
- viewer/public/urdf/T12/meshes/Knee2.STL +0 -0
- viewer/public/urdf/T12/meshes/Knee3.STL +0 -0
- viewer/public/urdf/T12/meshes/Knee4.STL +0 -0
- viewer/public/urdf/T12/meshes/Knee5.STL +0 -0
- viewer/public/urdf/T12/meshes/Knee6.STL +0 -0
- viewer/public/urdf/T12/meshes/Shin1.STL +0 -0
- viewer/public/urdf/T12/meshes/Shin2.STL +0 -0
- viewer/public/urdf/T12/meshes/Shin3.STL +0 -0
- viewer/public/urdf/T12/meshes/Shin4.STL +0 -0
- viewer/public/urdf/T12/meshes/Shin5.STL +0 -0
- viewer/public/urdf/T12/meshes/Shin6.STL +0 -0
- viewer/public/urdf/T12/meshes/Thigh1.STL +0 -0
- viewer/public/urdf/T12/meshes/Thigh2.STL +0 -0
- viewer/public/urdf/T12/meshes/Thigh3.STL +0 -0
- viewer/public/urdf/T12/meshes/Thigh4.STL +0 -0
- viewer/public/urdf/T12/meshes/Thigh5.STL +0 -0
- viewer/public/urdf/T12/meshes/Thigh6.STL +0 -0
- viewer/public/urdf/T12/robot-data.json +57 -0
viewer/.env.public
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
VITE_SUPABASE_URL=https://mizajlqhooderueazvnp.supabase.co
|
| 2 |
+
VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im1pemFqbHFob29kZXJ1ZWF6dm5wIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDE4NzU1MTgsImV4cCI6MjA1NzQ1MTUxOH0.iTbP3KqPr4Fl48YQnlwplyPF3OCTjU5g62WmmygjSbA
|
viewer/.gitignore
CHANGED
|
@@ -22,3 +22,10 @@ dist-ssr
|
|
| 22 |
*.njsproj
|
| 23 |
*.sln
|
| 24 |
*.sw?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
*.njsproj
|
| 23 |
*.sln
|
| 24 |
*.sw?
|
| 25 |
+
|
| 26 |
+
# Environment variables
|
| 27 |
+
.env.*
|
| 28 |
+
.env
|
| 29 |
+
|
| 30 |
+
# Exclude .env.public
|
| 31 |
+
!.env.public
|
viewer/README.md
CHANGED
|
@@ -1,54 +1,43 @@
|
|
| 1 |
-
#
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
extends: [
|
| 17 |
-
// Remove ...tseslint.configs.recommended and replace with this
|
| 18 |
-
...tseslint.configs.recommendedTypeChecked,
|
| 19 |
-
// Alternatively, use this for stricter rules
|
| 20 |
-
...tseslint.configs.strictTypeChecked,
|
| 21 |
-
// Optionally, add this for stylistic rules
|
| 22 |
-
...tseslint.configs.stylisticTypeChecked,
|
| 23 |
-
],
|
| 24 |
-
languageOptions: {
|
| 25 |
-
// other options...
|
| 26 |
-
parserOptions: {
|
| 27 |
-
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
| 28 |
-
tsconfigRootDir: import.meta.dirname,
|
| 29 |
-
},
|
| 30 |
-
},
|
| 31 |
-
})
|
| 32 |
-
```
|
| 33 |
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
```
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
...reactX.configs['recommended-typescript'].rules,
|
| 51 |
-
...reactDom.configs.recommended.rules,
|
| 52 |
-
},
|
| 53 |
-
})
|
| 54 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# URDF Web Visualizer
|
| 2 |
+
|
| 3 |
+
**URL**: https://urdf-web-visualizer.lovable.app/
|
| 4 |
+
|
| 5 |
+
## How can I edit this code?
|
| 6 |
+
|
| 7 |
+
**Use Lovable**
|
| 8 |
+
|
| 9 |
+
Simply visit the [ Project](https://lovable.dev/projects/3aab3fa4-10e6-4c4a-8d12-b46271876519) and start prompting.
|
| 10 |
+
|
| 11 |
+
Changes made via Lovable will be committed automatically to the main branch of this repo.
|
| 12 |
+
|
| 13 |
+
**IDE**
|
| 14 |
+
|
| 15 |
+
Have Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating). You can also use bun instead of npm.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
+
Follow these steps:
|
| 18 |
+
|
| 19 |
+
```sh
|
| 20 |
+
# Step 1: Clone the repository using the project's Git URL.
|
| 21 |
+
git clone <YOUR_GIT_URL>
|
| 22 |
+
|
| 23 |
+
# Step 2: Navigate to the project directory.
|
| 24 |
+
cd <YOUR_PROJECT_NAME>
|
| 25 |
+
|
| 26 |
+
# Step 3: Install the necessary dependencies.
|
| 27 |
+
npm i
|
| 28 |
+
# (OR bun install)
|
| 29 |
+
|
| 30 |
+
# Step 4: Start the development server with auto-reloading and an instant preview.
|
| 31 |
+
npm run dev
|
| 32 |
+
# (OR bun run dev)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
```
|
| 34 |
+
|
| 35 |
+
## What technologies are used for this project?
|
| 36 |
+
|
| 37 |
+
This project is built with:
|
| 38 |
+
|
| 39 |
+
- Vite
|
| 40 |
+
- TypeScript
|
| 41 |
+
- React
|
| 42 |
+
- shadcn-ui
|
| 43 |
+
- Tailwind CSS
|
viewer/components.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"$schema": "https://ui.shadcn.com/schema.json",
|
| 3 |
+
"style": "default",
|
| 4 |
+
"rsc": false,
|
| 5 |
+
"tsx": true,
|
| 6 |
+
"tailwind": {
|
| 7 |
+
"config": "tailwind.config.ts",
|
| 8 |
+
"css": "src/index.css",
|
| 9 |
+
"baseColor": "slate",
|
| 10 |
+
"cssVariables": true,
|
| 11 |
+
"prefix": ""
|
| 12 |
+
},
|
| 13 |
+
"aliases": {
|
| 14 |
+
"components": "@/components",
|
| 15 |
+
"utils": "@/lib/utils",
|
| 16 |
+
"ui": "@/components/ui",
|
| 17 |
+
"lib": "@/lib",
|
| 18 |
+
"hooks": "@/hooks"
|
| 19 |
+
}
|
| 20 |
+
}
|
viewer/deploy-function.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// This is a script to deploy an edge function to supabase.
|
| 2 |
+
const { execSync } = require("child_process");
|
| 3 |
+
const fs = require("fs");
|
| 4 |
+
const path = require("path");
|
| 5 |
+
|
| 6 |
+
// Function name to deploy
|
| 7 |
+
const functionName = process.argv[2];
|
| 8 |
+
|
| 9 |
+
if (!functionName) {
|
| 10 |
+
console.error("Please provide a function name to deploy");
|
| 11 |
+
console.log("Example: node deploy-function.js urdf-parser");
|
| 12 |
+
process.exit(1);
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
// Path to the function directory
|
| 16 |
+
const functionDir = path.join(__dirname, "supabase", "functions", functionName);
|
| 17 |
+
|
| 18 |
+
// Check if the function directory exists
|
| 19 |
+
if (!fs.existsSync(functionDir)) {
|
| 20 |
+
console.error(`Function ${functionName} not found in supabase/functions/`);
|
| 21 |
+
process.exit(1);
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
console.log(`Deploying function ${functionName}...`);
|
| 25 |
+
|
| 26 |
+
try {
|
| 27 |
+
// Deploy the function
|
| 28 |
+
execSync(`npx supabase functions deploy ${functionName}`, {
|
| 29 |
+
stdio: "inherit",
|
| 30 |
+
env: {
|
| 31 |
+
...process.env,
|
| 32 |
+
SUPABASE_ACCESS_TOKEN: process.env.SUPABASE_ACCESS_TOKEN,
|
| 33 |
+
},
|
| 34 |
+
});
|
| 35 |
+
console.log(`✅ Function ${functionName} deployed successfully!`);
|
| 36 |
+
} catch (error) {
|
| 37 |
+
console.error(`❌ Failed to deploy function: ${error.message}`);
|
| 38 |
+
process.exit(1);
|
| 39 |
+
}
|
viewer/eslint.config.js
CHANGED
|
@@ -1,28 +1,29 @@
|
|
| 1 |
-
import js from
|
| 2 |
-
import globals from
|
| 3 |
-
import reactHooks from
|
| 4 |
-
import reactRefresh from
|
| 5 |
-
import tseslint from
|
| 6 |
|
| 7 |
export default tseslint.config(
|
| 8 |
-
{ ignores: [
|
| 9 |
{
|
| 10 |
extends: [js.configs.recommended, ...tseslint.configs.recommended],
|
| 11 |
-
files: [
|
| 12 |
languageOptions: {
|
| 13 |
ecmaVersion: 2020,
|
| 14 |
globals: globals.browser,
|
| 15 |
},
|
| 16 |
plugins: {
|
| 17 |
-
|
| 18 |
-
|
| 19 |
},
|
| 20 |
rules: {
|
| 21 |
...reactHooks.configs.recommended.rules,
|
| 22 |
-
|
| 23 |
-
|
| 24 |
{ allowConstantExport: true },
|
| 25 |
],
|
|
|
|
| 26 |
},
|
| 27 |
-
}
|
| 28 |
-
)
|
|
|
|
| 1 |
+
import js from "@eslint/js";
|
| 2 |
+
import globals from "globals";
|
| 3 |
+
import reactHooks from "eslint-plugin-react-hooks";
|
| 4 |
+
import reactRefresh from "eslint-plugin-react-refresh";
|
| 5 |
+
import tseslint from "typescript-eslint";
|
| 6 |
|
| 7 |
export default tseslint.config(
|
| 8 |
+
{ ignores: ["dist"] },
|
| 9 |
{
|
| 10 |
extends: [js.configs.recommended, ...tseslint.configs.recommended],
|
| 11 |
+
files: ["**/*.{ts,tsx}"],
|
| 12 |
languageOptions: {
|
| 13 |
ecmaVersion: 2020,
|
| 14 |
globals: globals.browser,
|
| 15 |
},
|
| 16 |
plugins: {
|
| 17 |
+
"react-hooks": reactHooks,
|
| 18 |
+
"react-refresh": reactRefresh,
|
| 19 |
},
|
| 20 |
rules: {
|
| 21 |
...reactHooks.configs.recommended.rules,
|
| 22 |
+
"react-refresh/only-export-components": [
|
| 23 |
+
"warn",
|
| 24 |
{ allowConstantExport: true },
|
| 25 |
],
|
| 26 |
+
"@typescript-eslint/no-unused-vars": "warn",
|
| 27 |
},
|
| 28 |
+
}
|
| 29 |
+
);
|
viewer/index.html
CHANGED
|
@@ -1,13 +1,18 @@
|
|
| 1 |
-
<!
|
| 2 |
<html lang="en">
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8" />
|
| 5 |
-
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
| 6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 7 |
-
<title>
|
|
|
|
|
|
|
|
|
|
| 8 |
</head>
|
|
|
|
| 9 |
<body>
|
| 10 |
<div id="root"></div>
|
|
|
|
|
|
|
| 11 |
<script type="module" src="/src/main.tsx"></script>
|
| 12 |
</body>
|
| 13 |
</html>
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
<html lang="en">
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8" />
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
+
<title>placeholder</title>
|
| 7 |
+
<meta name="description" content="A simple tool to visualize URDF files." />
|
| 8 |
+
<meta name="author" content="Victor Oldensand" />
|
| 9 |
+
<meta property="og:image" content="/og-image.png" />
|
| 10 |
</head>
|
| 11 |
+
|
| 12 |
<body>
|
| 13 |
<div id="root"></div>
|
| 14 |
+
<!-- IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT! -->
|
| 15 |
+
<script src="https://cdn.gpteng.co/gptengineer.js" type="module"></script>
|
| 16 |
<script type="module" src="/src/main.tsx"></script>
|
| 17 |
</body>
|
| 18 |
</html>
|
viewer/package-lock.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
viewer/package.json
CHANGED
|
@@ -1,34 +1,94 @@
|
|
| 1 |
{
|
| 2 |
-
"name": "
|
| 3 |
"private": true,
|
| 4 |
"version": "0.0.0",
|
| 5 |
"type": "module",
|
| 6 |
"scripts": {
|
| 7 |
"dev": "vite",
|
| 8 |
-
"build": "
|
|
|
|
| 9 |
"lint": "eslint .",
|
| 10 |
"preview": "vite preview"
|
| 11 |
},
|
| 12 |
"dependencies": {
|
| 13 |
-
"@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
"clsx": "^2.1.1",
|
| 15 |
-
"
|
| 16 |
-
"
|
| 17 |
-
"
|
| 18 |
-
"
|
| 19 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
},
|
| 21 |
"devDependencies": {
|
| 22 |
-
"@eslint/js": "^9.
|
| 23 |
-
"@
|
| 24 |
-
"@types/
|
| 25 |
-
"@
|
| 26 |
-
"
|
| 27 |
-
"
|
| 28 |
-
"
|
| 29 |
-
"
|
| 30 |
-
"
|
| 31 |
-
"
|
| 32 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
}
|
| 34 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"name": "vite_react_shadcn_ts",
|
| 3 |
"private": true,
|
| 4 |
"version": "0.0.0",
|
| 5 |
"type": "module",
|
| 6 |
"scripts": {
|
| 7 |
"dev": "vite",
|
| 8 |
+
"build": "vite build",
|
| 9 |
+
"build:dev": "vite build --mode development",
|
| 10 |
"lint": "eslint .",
|
| 11 |
"preview": "vite preview"
|
| 12 |
},
|
| 13 |
"dependencies": {
|
| 14 |
+
"@hookform/resolvers": "^3.9.0",
|
| 15 |
+
"@radix-ui/react-accordion": "^1.2.0",
|
| 16 |
+
"@radix-ui/react-alert-dialog": "^1.1.1",
|
| 17 |
+
"@radix-ui/react-aspect-ratio": "^1.1.0",
|
| 18 |
+
"@radix-ui/react-avatar": "^1.1.0",
|
| 19 |
+
"@radix-ui/react-checkbox": "^1.1.1",
|
| 20 |
+
"@radix-ui/react-collapsible": "^1.1.0",
|
| 21 |
+
"@radix-ui/react-context-menu": "^2.2.1",
|
| 22 |
+
"@radix-ui/react-dialog": "^1.1.2",
|
| 23 |
+
"@radix-ui/react-dropdown-menu": "^2.1.1",
|
| 24 |
+
"@radix-ui/react-hover-card": "^1.1.1",
|
| 25 |
+
"@radix-ui/react-label": "^2.1.0",
|
| 26 |
+
"@radix-ui/react-menubar": "^1.1.1",
|
| 27 |
+
"@radix-ui/react-navigation-menu": "^1.2.0",
|
| 28 |
+
"@radix-ui/react-popover": "^1.1.1",
|
| 29 |
+
"@radix-ui/react-progress": "^1.1.0",
|
| 30 |
+
"@radix-ui/react-radio-group": "^1.2.0",
|
| 31 |
+
"@radix-ui/react-scroll-area": "^1.1.0",
|
| 32 |
+
"@radix-ui/react-select": "^2.1.1",
|
| 33 |
+
"@radix-ui/react-separator": "^1.1.0",
|
| 34 |
+
"@radix-ui/react-slider": "^1.2.0",
|
| 35 |
+
"@radix-ui/react-slot": "^1.1.0",
|
| 36 |
+
"@radix-ui/react-switch": "^1.1.0",
|
| 37 |
+
"@radix-ui/react-tabs": "^1.1.0",
|
| 38 |
+
"@radix-ui/react-toast": "^1.2.1",
|
| 39 |
+
"@radix-ui/react-toggle": "^1.1.0",
|
| 40 |
+
"@radix-ui/react-toggle-group": "^1.1.0",
|
| 41 |
+
"@radix-ui/react-tooltip": "^1.1.4",
|
| 42 |
+
"@splinetool/react-spline": "^4.0.0",
|
| 43 |
+
"@supabase/supabase-js": "^2.49.1",
|
| 44 |
+
"@tanstack/react-query": "^5.56.2",
|
| 45 |
+
"@tanstack/react-query-devtools": "^5.71.1",
|
| 46 |
+
"@types/three": "^0.174.0",
|
| 47 |
+
"@types/uuid": "^10.0.0",
|
| 48 |
+
"class-variance-authority": "^0.7.1",
|
| 49 |
"clsx": "^2.1.1",
|
| 50 |
+
"cmdk": "^1.0.0",
|
| 51 |
+
"date-fns": "^3.6.0",
|
| 52 |
+
"dotenv": "^16.4.7",
|
| 53 |
+
"embla-carousel-react": "^8.3.0",
|
| 54 |
+
"framer-motion": "^12.5.0",
|
| 55 |
+
"input-otp": "^1.2.4",
|
| 56 |
+
"jszip": "^3.10.1",
|
| 57 |
+
"lucide-react": "^0.462.0",
|
| 58 |
+
"next-themes": "^0.3.0",
|
| 59 |
+
"react": "^18.3.1",
|
| 60 |
+
"react-day-picker": "^8.10.1",
|
| 61 |
+
"react-dom": "^18.3.1",
|
| 62 |
+
"react-hook-form": "^7.53.0",
|
| 63 |
+
"react-resizable-panels": "^2.1.3",
|
| 64 |
+
"react-router-dom": "^6.26.2",
|
| 65 |
+
"recharts": "^2.12.7",
|
| 66 |
+
"sonner": "^1.5.0",
|
| 67 |
+
"tailwind-merge": "^2.5.2",
|
| 68 |
+
"tailwindcss-animate": "^1.0.7",
|
| 69 |
+
"three": "^0.174.0",
|
| 70 |
+
"urdf-loader": "^0.12.4",
|
| 71 |
+
"uuid": "^11.1.0",
|
| 72 |
+
"vaul": "^0.9.3",
|
| 73 |
+
"zod": "^3.23.8"
|
| 74 |
},
|
| 75 |
"devDependencies": {
|
| 76 |
+
"@eslint/js": "^9.9.0",
|
| 77 |
+
"@tailwindcss/typography": "^0.5.15",
|
| 78 |
+
"@types/node": "^22.5.5",
|
| 79 |
+
"@types/react": "^18.3.3",
|
| 80 |
+
"@types/react-dom": "^18.3.0",
|
| 81 |
+
"@vitejs/plugin-react-swc": "^3.5.0",
|
| 82 |
+
"autoprefixer": "^10.4.20",
|
| 83 |
+
"eslint": "^9.9.0",
|
| 84 |
+
"eslint-plugin-react-hooks": "^5.1.0-rc.0",
|
| 85 |
+
"eslint-plugin-react-refresh": "^0.4.9",
|
| 86 |
+
"globals": "^15.9.0",
|
| 87 |
+
"lovable-tagger": "^1.1.7",
|
| 88 |
+
"postcss": "^8.4.47",
|
| 89 |
+
"tailwindcss": "^3.4.11",
|
| 90 |
+
"typescript": "^5.5.3",
|
| 91 |
+
"typescript-eslint": "^8.0.1",
|
| 92 |
+
"vite": "^5.4.1"
|
| 93 |
}
|
| 94 |
}
|
viewer/postcss.config.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export default {
|
| 2 |
+
plugins: {
|
| 3 |
+
tailwindcss: {},
|
| 4 |
+
autoprefixer: {},
|
| 5 |
+
},
|
| 6 |
+
}
|
viewer/public/favicon.ico
ADDED
|
|
viewer/public/placeholder.svg
ADDED
|
|
viewer/public/urdf/T12/meshes/Ankle1.STL
ADDED
|
Binary file (37.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Ankle2.STL
ADDED
|
Binary file (37.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Ankle3.STL
ADDED
|
Binary file (37.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Ankle4.STL
ADDED
|
Binary file (37.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Ankle5.STL
ADDED
|
Binary file (37.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Ankle6.STL
ADDED
|
Binary file (37.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Body.STL
ADDED
|
Binary file (30.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Foot1.STL
ADDED
|
Binary file (41.7 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Foot2.STL
ADDED
|
Binary file (41.7 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Foot3.STL
ADDED
|
Binary file (41.7 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Foot4.STL
ADDED
|
Binary file (41.7 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Foot5.STL
ADDED
|
Binary file (41.7 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Foot6.STL
ADDED
|
Binary file (41.7 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Hip1.STL
ADDED
|
Binary file (44.4 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Hip2.STL
ADDED
|
Binary file (44.4 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Hip3.STL
ADDED
|
Binary file (44.4 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Hip4.STL
ADDED
|
Binary file (44.4 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Hip5.STL
ADDED
|
Binary file (44.4 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Hip6.STL
ADDED
|
Binary file (44.4 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Knee1.STL
ADDED
|
Binary file (18.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Knee2.STL
ADDED
|
Binary file (18.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Knee3.STL
ADDED
|
Binary file (18.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Knee4.STL
ADDED
|
Binary file (18.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Knee5.STL
ADDED
|
Binary file (18.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Knee6.STL
ADDED
|
Binary file (18.5 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Shin1.STL
ADDED
|
Binary file (27.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Shin2.STL
ADDED
|
Binary file (27.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Shin3.STL
ADDED
|
Binary file (27.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Shin4.STL
ADDED
|
Binary file (27.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Shin5.STL
ADDED
|
Binary file (27.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Shin6.STL
ADDED
|
Binary file (27.3 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Thigh1.STL
ADDED
|
Binary file (37.6 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Thigh2.STL
ADDED
|
Binary file (37.6 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Thigh3.STL
ADDED
|
Binary file (37.6 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Thigh4.STL
ADDED
|
Binary file (37.6 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Thigh5.STL
ADDED
|
Binary file (37.6 kB). View file
|
|
|
viewer/public/urdf/T12/meshes/Thigh6.STL
ADDED
|
Binary file (37.6 kB). View file
|
|
|
viewer/public/urdf/T12/robot-data.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "T12 Robot",
|
| 3 |
+
"description": "This is the T12 robot developed by the NASA Jet Propulsion Laboratory. It's a 6-legged robot with articulated joints and components.",
|
| 4 |
+
"mass": 705.33,
|
| 5 |
+
"dofs": 16,
|
| 6 |
+
"joints": {
|
| 7 |
+
"revolute": 16,
|
| 8 |
+
"prismatic": 0,
|
| 9 |
+
"continuous": 0,
|
| 10 |
+
"fixed": 0,
|
| 11 |
+
"other": 0
|
| 12 |
+
},
|
| 13 |
+
"links": [
|
| 14 |
+
{ "name": "body", "mass": 266.06 },
|
| 15 |
+
{ "name": "hip1", "mass": 10.16 },
|
| 16 |
+
{ "name": "thigh1", "mass": 14.24 },
|
| 17 |
+
{ "name": "knee1", "mass": 5.79 },
|
| 18 |
+
{ "name": "shin1", "mass": 10.2 },
|
| 19 |
+
{ "name": "ankle1", "mass": 5.11 },
|
| 20 |
+
{ "name": "foot1", "mass": 27.42 },
|
| 21 |
+
{ "name": "hip2", "mass": 10.16 },
|
| 22 |
+
{ "name": "thigh2", "mass": 14.24 },
|
| 23 |
+
{ "name": "knee2", "mass": 5.79 },
|
| 24 |
+
{ "name": "shin2", "mass": 10.2 },
|
| 25 |
+
{ "name": "ankle2", "mass": 5.11 },
|
| 26 |
+
{ "name": "foot2", "mass": 27.42 },
|
| 27 |
+
{ "name": "hip3", "mass": 10.16 },
|
| 28 |
+
{ "name": "thigh3", "mass": 14.24 },
|
| 29 |
+
{ "name": "knee3", "mass": 5.79 },
|
| 30 |
+
{ "name": "shin3", "mass": 10.2 },
|
| 31 |
+
{ "name": "ankle3", "mass": 5.11 },
|
| 32 |
+
{ "name": "foot3", "mass": 27.42 },
|
| 33 |
+
{ "name": "hip4", "mass": 10.16 },
|
| 34 |
+
{ "name": "thigh4", "mass": 14.24 },
|
| 35 |
+
{ "name": "knee4", "mass": 5.79 },
|
| 36 |
+
{ "name": "shin4", "mass": 10.2 },
|
| 37 |
+
{ "name": "ankle4", "mass": 5.11 },
|
| 38 |
+
{ "name": "foot4", "mass": 27.42 },
|
| 39 |
+
{ "name": "hip5", "mass": 10.16 },
|
| 40 |
+
{ "name": "thigh5", "mass": 14.24 },
|
| 41 |
+
{ "name": "knee5", "mass": 5.79 },
|
| 42 |
+
{ "name": "shin5", "mass": 10.2 },
|
| 43 |
+
{ "name": "ankle5", "mass": 5.11 },
|
| 44 |
+
{ "name": "foot5", "mass": 27.42 },
|
| 45 |
+
{ "name": "hip6", "mass": 10.16 },
|
| 46 |
+
{ "name": "thigh6", "mass": 14.24 },
|
| 47 |
+
{ "name": "knee6", "mass": 5.79 },
|
| 48 |
+
{ "name": "shin6", "mass": 10.2 },
|
| 49 |
+
{ "name": "ankle6", "mass": 5.11 },
|
| 50 |
+
{ "name": "foot6", "mass": 27.42 }
|
| 51 |
+
],
|
| 52 |
+
"materials": [
|
| 53 |
+
{ "name": "Aluminum", "percentage": 60 },
|
| 54 |
+
{ "name": "Carbon Fiber", "percentage": 25 },
|
| 55 |
+
{ "name": "Steel", "percentage": 15 }
|
| 56 |
+
]
|
| 57 |
+
}
|