@ioai/robot_viewer 0.0.0-stage → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +217 -2
- package/bin/cli.js +83 -0
- package/dist/assets/css/PlotPanel-3e7d7555.css +1 -0
- package/dist/assets/js/ColladaLoader-2a0c4638.js +1 -0
- package/dist/assets/js/GLTFLoader-7a7f40d7.js +1 -0
- package/dist/assets/js/MTLLoader-b6ce88b7.js +1 -0
- package/dist/assets/js/OBJLoader-7667aa01.js +1 -0
- package/dist/assets/js/PlotPanel-09f986c7.js +1 -0
- package/dist/assets/js/STLLoader-de0915d4.js +1 -0
- package/dist/assets/js/URDFLoader-a34b6917.js +1 -0
- package/dist/assets/js/USDZLoader-64197f74.js +7 -0
- package/dist/assets/js/__vite-browser-external-afb87ea8.js +1 -0
- package/dist/assets/js/codemirror-c3cec7b3.js +1 -0
- package/dist/assets/js/codemirror-themes-e6995a6a.js +1 -0
- package/dist/assets/js/d3-2e308866.js +1 -0
- package/dist/assets/js/index-56e94ce5.js +6 -0
- package/dist/assets/js/mujoco_wasm-345a2576.js +1 -0
- package/dist/assets/js/three-9c891de0.js +6 -0
- package/dist/camera-publish-worker.js +1 -0
- package/dist/favicon.svg +2 -0
- package/dist/heartbeat-worker.js +1 -0
- package/dist/index.html +4373 -0
- package/dist/models/mocap/blender_human.urdf +2319 -0
- package/dist/models/mocap/blender_human_skeleton_v4.urdf +1432 -0
- package/dist/models/mocap/blender_human_skeleton_v5.urdf +2717 -0
- package/dist/models/mocap/meshes/v4/L_base_link.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer1_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer1_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer1_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer1_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer1_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer1base.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer2_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer2_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer2_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer2_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer2_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer3_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer3_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer3_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer3_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer3_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer4_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer4_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer4_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer4_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer4_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer5_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer5_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer5_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer5_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_figer5_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_handle.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_handleseat.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_mark.STL +0 -0
- package/dist/models/mocap/meshes/v4/L_markseat.STL +0 -0
- package/dist/models/mocap/meshes/v4/Lgamepadbase.STL +0 -0
- package/dist/models/mocap/meshes/v4/Link1.STL +0 -0
- package/dist/models/mocap/meshes/v4/Link2.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_base_link.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer1_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer1_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer1_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer1_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer1_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer1base.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer2_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer2_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer2_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer2_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer2_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer3_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer3_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer3_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer3_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer3_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer4_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer4_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer4_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer4_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer4_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer5_1.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer5_2.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer5_3.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer5_4.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_figer5_5.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_handle.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_handleseat.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_mark.STL +0 -0
- package/dist/models/mocap/meshes/v4/R_markseat.STL +0 -0
- package/dist/models/mocap/meshes/v4/Rgamepadbase.STL +0 -0
- package/dist/models/mocap/meshes/v4/base_link.STL +0 -0
- package/dist/models/mocap/meshes/v4/r_figer1_1.STL +0 -0
- package/dist/models/mocap/meshes/v5/L_handleseat.STL +0 -0
- package/dist/models/mocap/meshes/v5/R_handleseat.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonBase.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumbBase.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonBase.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonRing1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonRing2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonRing3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonRing4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb1.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb2.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb3.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb4.STL +0 -0
- package/dist/models/mocap/meshes/v5/link_RightSkeletonThumbBase.STL +0 -0
- package/dist/scripts/start-rosbridge.sh +77 -0
- package/dist/usd-iframe.html +41 -0
- package/dist/usd-viewer/bindings/.gitattributes +2 -0
- package/dist/usd-viewer/bindings/emHdBindings.data +19331 -0
- package/dist/usd-viewer/bindings/emHdBindings.js +12281 -0
- package/dist/usd-viewer/bindings/emHdBindings.wasm +0 -0
- package/dist/usd-viewer/bindings/emHdBindings.worker.js +124 -0
- package/dist/usd-viewer/environments/neutral.hdr +0 -0
- package/dist/usd-viewer/error-handler.js +57 -0
- package/dist/usd-viewer/hydra/HydraPrimitives.js +740 -0
- package/dist/usd-viewer/hydra/TextureRegistry.js +130 -0
- package/dist/usd-viewer/hydra/ThreeJsRenderDelegate.js +65 -0
- package/dist/usd-viewer/index.d.ts +1 -0
- package/dist/usd-viewer/main.js +1018 -0
- package/dist/usd-viewer/usd.html +36 -0
- package/dist/usd-viewer/usdUtils.js +67 -0
- package/package.json +70 -4
- package/server/package.json +14 -0
- package/server/static-server.js +106 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Robot Viewer - ROS Bridge 启动脚本
|
|
3
|
+
# 用法: ./start-rosbridge.sh [--domain_id=<domain_id>]
|
|
4
|
+
|
|
5
|
+
DOMAIN_ID=0
|
|
6
|
+
|
|
7
|
+
# 解析参数
|
|
8
|
+
while [[ $# -gt 0 ]]; do
|
|
9
|
+
case "$1" in
|
|
10
|
+
--domain_id=*)
|
|
11
|
+
DOMAIN_ID="${1#*=}"
|
|
12
|
+
shift
|
|
13
|
+
;;
|
|
14
|
+
-h|--help)
|
|
15
|
+
echo "用法: $0 [--domain_id=<domain_id>]"
|
|
16
|
+
echo ""
|
|
17
|
+
echo "选项:"
|
|
18
|
+
echo " --domain_id=<id> 设置 ROS_DOMAIN_ID (默认: 0)"
|
|
19
|
+
echo " -h, --help 显示此帮助信息"
|
|
20
|
+
exit 0
|
|
21
|
+
;;
|
|
22
|
+
*)
|
|
23
|
+
echo "未知参数: $1"
|
|
24
|
+
echo "用法: $0 [--domain_id=<domain_id>]"
|
|
25
|
+
echo "使用 --help 查看详细帮助"
|
|
26
|
+
exit 1
|
|
27
|
+
;;
|
|
28
|
+
esac
|
|
29
|
+
done
|
|
30
|
+
|
|
31
|
+
echo "🤖 启动 rosbridge_server (ROS_DOMAIN_ID=$DOMAIN_ID)..."
|
|
32
|
+
|
|
33
|
+
# 检查端口占用
|
|
34
|
+
if lsof -Pi :9090 -sTCP:LISTEN -t >/dev/null 2>&1 ; then
|
|
35
|
+
echo "⚠️ 端口 9090 已被占用"
|
|
36
|
+
echo ""
|
|
37
|
+
echo "正在运行的进程:"
|
|
38
|
+
ps aux | grep rosbridge | grep -v grep
|
|
39
|
+
echo ""
|
|
40
|
+
echo "如需重启,请先停止现有进程:"
|
|
41
|
+
echo " sudo pkill -f rosbridge_websocket"
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# 检测 ROS 2 环境
|
|
46
|
+
if [ -z "$ROS_DISTRO" ]; then
|
|
47
|
+
for distro in jazzy humble iron; do
|
|
48
|
+
if [ -f "/opt/ros/$distro/setup.bash" ]; then
|
|
49
|
+
source /opt/ros/$distro/setup.bash
|
|
50
|
+
break
|
|
51
|
+
fi
|
|
52
|
+
done
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
if [ -z "$ROS_DISTRO" ]; then
|
|
56
|
+
echo "❌ 未检测到 ROS 2 环境"
|
|
57
|
+
echo "请先安装 ROS 2: https://docs.ros.org/en/humble/Installation.html"
|
|
58
|
+
exit 1
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
echo "✅ ROS 2 $ROS_DISTRO"
|
|
62
|
+
|
|
63
|
+
# 检查 rosbridge_suite 是否安装
|
|
64
|
+
if ! ros2 pkg list | grep -q rosbridge_server; then
|
|
65
|
+
echo "📦 安装 rosbridge_suite..."
|
|
66
|
+
sudo apt-get update
|
|
67
|
+
sudo apt-get install -y ros-$ROS_DISTRO-rosbridge-suite
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# 在后台持续发布 domain_id,供 Web 端查询
|
|
71
|
+
echo "🚀 启动中..."
|
|
72
|
+
ROS_DOMAIN_ID=$DOMAIN_ID ros2 topic pub /robot_viewer/domain_id std_msgs/msg/Int32 \
|
|
73
|
+
"{data: $DOMAIN_ID}" -r 1 > /dev/null 2>&1 &
|
|
74
|
+
DOMAIN_PUB_PID=$!
|
|
75
|
+
trap "kill $DOMAIN_PUB_PID 2>/dev/null" EXIT
|
|
76
|
+
|
|
77
|
+
ROS_DOMAIN_ID=$DOMAIN_ID ros2 launch rosbridge_server rosbridge_websocket_launch.xml
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>USD Viewer</title>
|
|
7
|
+
<style>
|
|
8
|
+
* { margin: 0; padding: 0; }
|
|
9
|
+
html, body {
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
background: transparent;
|
|
14
|
+
pointer-events: none;
|
|
15
|
+
}
|
|
16
|
+
iframe {
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
border: none;
|
|
20
|
+
display: block;
|
|
21
|
+
background: transparent;
|
|
22
|
+
pointer-events: all;
|
|
23
|
+
}
|
|
24
|
+
</style>
|
|
25
|
+
</head>
|
|
26
|
+
<body>
|
|
27
|
+
<iframe id="usd-frame" src="/usd-viewer/usd.html"></iframe>
|
|
28
|
+
<script>
|
|
29
|
+
// Simple message forwarding
|
|
30
|
+
const iframe = document.getElementById('usd-frame');
|
|
31
|
+
window.addEventListener('message', (e) => {
|
|
32
|
+
if (e.source === iframe.contentWindow) {
|
|
33
|
+
parent.postMessage(e.data, '*');
|
|
34
|
+
} else if (e.source === parent) {
|
|
35
|
+
iframe.contentWindow.postMessage(e.data, '*');
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
</script>
|
|
39
|
+
</body>
|
|
40
|
+
</html>
|
|
41
|
+
|