Scene Manager Module (sceneManager.ts)

Module path: web_rviz/src/visualization/sceneManager.ts

Purpose

Owns the Three.js scene, robot state updates, TF cache, theme-aware viewport styling, planned-trajectory preview rendering, motion-sampling transforms, and point cloud rendering.

Public types

SceneTheme

  • dark

  • light

TfNode

  • frame: current frame id.

  • parent: parent frame id.

  • translation: translation vector.

  • rotation: quaternion rotation.

RobotJointConnection

  • name: joint name from the loaded URDF robot.

  • parent: parent link name.

  • child: child link name.

  • type: URDF joint type such as fixed or revolute.

RobotTransformDetail

  • xyz: translation in meters.

  • rpy: roll, pitch, yaw in radians.

RobotInertiaDetail

  • ixx / ixy / ixz / iyy / iyz / izz: inertia tensor entries when available.

RobotLinkDetail

  • name: link name.

  • parentJoint: parent joint name, or null for the base link.

  • childJoints: child joint names.

  • visualCount / collisionCount: number of URDF visual and collision elements.

  • materialNames: referenced visual material names.

  • mass: inertial mass if present.

  • inertialOrigin / inertia: inertial pose and inertia tensor parsed from URDF.

  • pose: current pose of the link relative to the active fixed frame.

RobotJointDetail

  • name / type: joint identifier and URDF type.

  • parentLink / childLink: connected links.

  • axis: joint axis, or null when not provided.

  • origin: URDF joint origin.

  • limit: lower, upper, effort, and velocity limits when present.

  • dynamics: damping and friction values when present.

  • mimic: mimic source, multiplier, and offset when present.

  • currentValue: current runtime joint value array.

SceneManager key methods

  • setTargetFps(value): updates render target FPS.

  • resetView(): restores the default camera position and OrbitControls state.

  • setTheme(theme): updates viewport background, grid colors, lighting, and theme-aware scene styling.

  • setPlannedTrajectoryVisible(visible): toggles the MoveIt planned-trajectory preview.

  • setPlannedTrajectoryPath(points, startPose?, endPose?): renders the planned path polyline and optional start/end TCP pose markers.

  • clearPlannedTrajectory(): removes the planned path and its pose markers from the scene.

  • setFixedFrame(frame) / getFixedFrame(): fixed frame setter/getter.

  • getRobotBaseFrame(): returns the active robot base frame.

  • setEndEffectorFrame(frame): sets end-effector frame.

  • setShowOnlyEndEffector(show): toggles end-effector-only preview.

  • setVisibleTfFrames(frames): limits visible TF axes to the provided frame ids, or resets filtering with null.

  • getDefaultEndEffectorFrame(): infers a default end-effector frame from the loaded robot model.

  • getLinkList() / getFrameList(): lists robot links and known frames.

  • getRobotJointConnections(): returns sorted parent/child joint edges extracted from the loaded URDF robot.

  • getTfSnapshot() / getTfNodes(): reads TF graph snapshots.

  • clearTfRecords(): clears TF cache and visuals.

  • getRelativeTransform(frame): resolves a pose relative to the fixed frame, preferring live TF when available.

  • getRobotRelativeTransform(frame): resolves a pose directly from the robot model without consulting live TF.

  • getRobotLinkDetail(linkName): returns structured link metadata for the TF detail modal.

  • getRobotJointDetail(jointName): returns structured joint metadata for the TF detail modal.

  • setRobot(robot, baseFrame): sets or updates the robot model.

  • updateJointStates(message): applies joint state messages.

  • upsertTfMessage(message): merges TF updates.

  • setPointCloud(pointCloud): updates the point cloud object.

  • dispose(): releases render resources and listeners.

Usage notes

  • Call dispose() before page teardown to avoid WebGL leaks.

  • Use setTheme() together with the UI theme toggle so the viewport background and grid stay visually consistent.

  • Use setVisibleTfFrames() to support selective TF visualization without mutating the TF tree text data.

  • Use getRobotRelativeTransform() when sampling planned motion from robot joint values or converting MoveIt joint trajectory points into TCP curves; it avoids mixing preview data with live TF.

  • Use setPlannedTrajectoryPath() with startPose and endPose to show both the preview line and TCP start/end pose markers.

  • For high-rate point clouds, tune maxPoints and targetFps together.