first commit
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
# MoveIt2 Server
|
||||
|
||||
The MoveIt2 server is an optional CAD Viewer backend module for SRDF IK and
|
||||
path-planning controls. It is disabled for normal hosted viewer use and is only
|
||||
needed when a user explicitly wants interactive solve or plan-to-pose controls.
|
||||
|
||||
## Install
|
||||
|
||||
From the viewer package or generated cad-viewer skill runtime directory:
|
||||
|
||||
```bash
|
||||
npm run moveit2:setup
|
||||
```
|
||||
|
||||
The setup script creates or updates the `moveit2-server` conda environment from
|
||||
`moveit2_server/environment.yml`, installs the Python package in editable mode,
|
||||
and runs a server import check.
|
||||
|
||||
Use a ROS 2 / MoveIt2 capable conda installation. Do not install ROS 2 or
|
||||
MoveIt2 into the repository CAD `.venv`.
|
||||
|
||||
Useful environment variables:
|
||||
|
||||
```text
|
||||
MOVEIT2_SERVER_CONDA_ENV_NAME
|
||||
MOVEIT2_SERVER_CONDA_EXE
|
||||
MOVEIT2_SERVER_REPO_ROOT
|
||||
MOVEIT2_SERVER_HOST
|
||||
MOVEIT2_SERVER_PORT
|
||||
```
|
||||
|
||||
## Run
|
||||
|
||||
From the viewer package or generated cad-viewer skill runtime directory:
|
||||
|
||||
```bash
|
||||
npm run moveit2:check
|
||||
npm run moveit2:serve
|
||||
```
|
||||
|
||||
The websocket endpoint defaults to:
|
||||
|
||||
```text
|
||||
ws://127.0.0.1:8765/ws
|
||||
```
|
||||
|
||||
CAD Viewer connects to that URL in local dev when MoveIt2 controls are enabled,
|
||||
unless `VIEWER_MOVEIT2_WS_URL` or the browser `?moveit2Ws=` query parameter
|
||||
overrides it.
|
||||
|
||||
## Hosted Backend
|
||||
|
||||
The MoveIt2 module is a long-running websocket backend, not a Vercel serverless
|
||||
function. Host it in a ROS 2 / MoveIt2 capable VM or container by running the
|
||||
same Python package and exposing its websocket URL:
|
||||
|
||||
```bash
|
||||
MOVEIT2_SERVER_HOST=0.0.0.0 \
|
||||
MOVEIT2_SERVER_PORT=8765 \
|
||||
MOVEIT2_SERVER_REPO_ROOT=/srv/cad-viewer \
|
||||
npm run moveit2:serve
|
||||
```
|
||||
|
||||
Point the viewer at that endpoint with `VIEWER_MOVEIT2_WS_URL` at build time or
|
||||
`?moveit2Ws=` at runtime. Production viewer builds keep MoveIt2 disabled unless
|
||||
a websocket URL is explicitly configured by the deployment or user.
|
||||
|
||||
## Protocol
|
||||
|
||||
Requests use `protocolVersion: 1`.
|
||||
|
||||
Supported request types:
|
||||
|
||||
- `srdf.solvePose`
|
||||
- `srdf.planToPose`
|
||||
|
||||
Use native joint-value fields:
|
||||
|
||||
- `startJointValuesByName`
|
||||
- `jointValuesByName`
|
||||
- trajectory `positions`
|
||||
|
||||
Legacy `*Deg` fields remain compatibility aliases. Angular values convert
|
||||
between degrees and native radians; prismatic joints stay linear.
|
||||
|
||||
Pose targets require `target.frame`, `target.xyz`, and `target.endEffector`.
|
||||
Set `target.targetLink` or `moveit2.targetLink` when the desired TCP is not
|
||||
obvious.
|
||||
|
||||
Orientation can be provided as exactly one of:
|
||||
|
||||
```json
|
||||
"quat_xyzw": [0, 0, 0, 1]
|
||||
```
|
||||
|
||||
or:
|
||||
|
||||
```json
|
||||
"rpy": [0, 0, 0]
|
||||
```
|
||||
|
||||
If no orientation is provided, `moveit2.ik.positionOnly` defaults to true. If
|
||||
`positionOnly` is false, an orientation must be supplied.
|
||||
|
||||
## Notes
|
||||
|
||||
- The server has no Python import dependency on the SRDF skill. It includes the
|
||||
SRDF metadata parser it needs under `moveit2_server/moveit2_server`.
|
||||
- Success depends on the linked URDF, SRDF, collision geometry, solver
|
||||
availability, and MoveIt environment.
|
||||
- The generated MoveIt config defaults are suitable for viewer smoke tests but
|
||||
are not universal production planning settings.
|
||||
- Cache invalidation is based on linked URDF/SRDF file size and modification
|
||||
time.
|
||||
Reference in New Issue
Block a user