Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
c3aaaa6
AI Model Management sample: the model and the inference backend
marcschier Aug 4, 2026
e1ebd87
AI Model Management sample: the OPC UA server and its address space
marcschier Aug 4, 2026
15c6010
AI Model Management sample: the client, the tests, and three address-…
marcschier Aug 4, 2026
72d867a
AI Model Management sample: container image, Helm chart and its tests
marcschier Aug 4, 2026
d7e3d76
AI Model Management sample: show the model NodeId beside its identity
marcschier Aug 4, 2026
618d2b7
AI Model Management sample: close a use-after-dispose in the transfer…
marcschier Aug 4, 2026
85453c7
AI Model Management sample: fixes from a review of the running Server
marcschier Aug 4, 2026
91b5865
Robot intent follow-ups: multi-controller executors and honest declar…
marcschier Aug 8, 2026
46e11aa
Own the certificates the TLS validation callbacks inspect
marcschier Aug 8, 2026
137ec2f
Merge the TLS certificate lifetime fix (#4196) into the follow-ups br…
marcschier Aug 8, 2026
52c446e
Move OpenUSD to 0.6.0-alpha and restore the render smoke job
marcschier Aug 8, 2026
0e34c3e
Adopt the merged Robot Intent draft revision
marcschier Aug 8, 2026
e1032c0
Install the OpenGL runtime the render smoke job needs
marcschier Aug 8, 2026
37d2562
Install libopengl0, which is what actually provides libOpenGL.so.0
marcschier Aug 8, 2026
621c94c
Extract the TLS validation collection into one tested helper
marcschier Aug 8, 2026
3e938e0
Fix the coverage gate, and the review feedback it was hiding
marcschier Aug 8, 2026
9b8083f
Merge the updated TLS certificate lifetime fix (#4196)
marcschier Aug 8, 2026
9537b8a
Merge the OpenUSD 0.6.0-alpha work (#4198)
marcschier Aug 9, 2026
2f1d3f9
Merge branch 'master' into marcschier/robot-intent-followups
marcschier Aug 9, 2026
c3f8d72
Merge master
marcschier Aug 9, 2026
4702f0d
Let an LLM agent drive the robot through the intent API
marcschier Aug 9, 2026
2022716
Merge the remote master merge into the MCP robotics work
marcschier Aug 9, 2026
ea73c1f
Improve Robot Intent MCP tool descriptions for agent usability
marcschier Aug 9, 2026
cbd59d0
Update the MCP servers to ModelContextProtocol 2.1.0
marcschier Aug 9, 2026
8c6aff7
Give the robotics MCP profile the connection tools it needs
marcschier Aug 9, 2026
6d30302
Fix the netstandard2.1 build leg and cover the robotics MCP JSON parser
marcschier Aug 9, 2026
5a55f0a
Add the robotics MCP JSON parser tests that the previous commit dropped
marcschier Aug 9, 2026
778f9f9
Reject malformed agent JSON, and stop reporting a stale queue position
marcschier Aug 10, 2026
2a47b67
Address review feedback: package-owned connection tools, OpenUSD 0.7.…
marcschier Aug 10, 2026
c94f7e3
Merge remote-tracking branch 'fork/marcschier/ai-model-management' in…
marcschier Aug 10, 2026
a0a2d19
Add the Opc.Ua.Vision model, generated from the vendored NodeSet
marcschier Aug 10, 2026
02aff12
Add the Vision server, client and offscreen capture provider
marcschier Aug 10, 2026
5773f79
Bring the new Vision libraries in line with the repository API rules
marcschier Aug 10, 2026
dd721a4
Let an agent see through the Vision server and act on what it sees
marcschier Aug 10, 2026
630fcb3
Add the bin-picking cell the vision demo runs on
marcschier Aug 10, 2026
e260f16
Test the Vision libraries, and fix three things the tests found
marcschier Aug 10, 2026
e1763c8
Give the cell a perception path that needs no model and no GPU
marcschier Aug 10, 2026
2de5ca7
Let one agent both see and act by composing tool profiles
marcschier Aug 10, 2026
5a05360
Take the OpenUSD 0.8.0-alpha fixes and drop two workarounds
marcschier Aug 10, 2026
5a9ce7c
Let the agent be the vision system, and check what it claims
marcschier Aug 10, 2026
25e80b4
Add the agent host client, and raise Vision coverage
marcschier Aug 10, 2026
8ff5251
Remove coverage reports committed by mistake
marcschier Aug 10, 2026
7971cc0
Merge master into the vision-guided picking branch
marcschier Aug 11, 2026
c8d5a3d
Tell the agent apart which Vision discovery tool to use
marcschier Aug 11, 2026
833c0c7
Document the Vision implementation, and let a client report an empty bin
marcschier Aug 11, 2026
4f347de
Correct a stale OpenUSD version in the connector guide
marcschier Aug 11, 2026
83a9100
Make every node the Vision builder creates browsable by its own NodeId
marcschier Aug 11, 2026
3558483
Let the AI Model Management sample follow the pinned target framework
marcschier Aug 11, 2026
5b0d683
Register the nodes built without DI, and pin registration with tests
marcschier Aug 11, 2026
1558bd6
Enforce the 9.5 feedback argument rules instead of deviating from them
marcschier Aug 11, 2026
4d3b621
Give the Vision Methods a callable wire surface
marcschier Aug 11, 2026
1a89fae
Record the misnamespaced NodeSet Method arguments as a known limitation
marcschier Aug 11, 2026
f22d211
Cover the Vision dispatcher, hosting and client paths that had none
marcschier Aug 11, 2026
c49e2b0
Exclude the OpenUSD-backed tests on the legs where their reference is…
marcschier Aug 11, 2026
28b6463
Let the cell use the Results folder the builder now creates
marcschier Aug 11, 2026
9e0adff
Merge master into the vision-guided picking branch
marcschier Aug 11, 2026
0fe2803
Address PR feedback: Opc.Ua.AI libraries, no Azure, samples regrouped
marcschier Aug 11, 2026
8752e12
Track the updated drafts, and take OpenUSD 0.9.0-alpha
marcschier Aug 11, 2026
09b35fc
Cover the AI inference code this branch actually wrote
marcschier Aug 11, 2026
87dac0c
Fix the browse-path default that hid every optional child
marcschier Aug 12, 2026
fb57522
Build the Vision end-to-end tests on the .NET Framework targets too
marcschier Aug 12, 2026
2e690c2
Address review feedback: docs, credentials, InternalsVisibleTo, OpenUSD
marcschier Aug 12, 2026
c28fef0
Say what Nodes is at first use, not ninety lines later
marcschier Aug 12, 2026
6ccbbfe
Give the AI client an API shaped like the specification
marcschier Aug 12, 2026
9df113a
Make the learning loop real, and let a model actually see the picture
marcschier Aug 12, 2026
10bd7ad
Document the visual inspection sample, and finish dropping "worked"
marcschier Aug 12, 2026
3095972
Add the visual inspection cell and agent, in progress
marcschier Aug 12, 2026
3e16c07
Stop the Robot Intent transport leaking into the session
marcschier Aug 12, 2026
2022aee
Address review feedback: AI casing, sample layout, and the docs
marcschier Aug 12, 2026
b2dae18
Count one operator decision as one learning sample
marcschier Aug 12, 2026
a0cf8ba
Say how to actually get the viewport open, and why --insecure is needed
marcschier Aug 12, 2026
697e76e
Give the bin-picking viewport something to draw
marcschier Aug 12, 2026
a68c4b5
Sit the bin-picking robot on the bench instead of through it
marcschier Aug 12, 2026
771734e
Stop the visual inspection agent degrading live-ai into a simulation
marcschier Aug 13, 2026
7d6a874
Keep the bin-picking client alive when the viewport dies
marcschier Aug 13, 2026
42a2283
Stop the publish worker deleting subscriptions the session owns
marcschier Aug 13, 2026
8b243e2
Deliver publish notifications to subscriptions the session owns
marcschier Aug 13, 2026
475d14f
Run intents on the executor the application is watching
marcschier Aug 13, 2026
3a65c53
Give the bin-picking cell back its camera, its units and its robot
marcschier Aug 13, 2026
4b0576c
Raise the bin-picking cell's message ceiling for camera frames
marcschier Aug 13, 2026
cbd3b49
Merge branch 'master' into marcschier/vision-guided-picking
marcschier Aug 13, 2026
8c6e07c
update
marcschier Aug 13, 2026
5698825
Merge branch 'marcschier/vision-guided-picking' of https://github.com…
marcschier Aug 13, 2026
8b38285
update
marcschier Aug 13, 2026
6e89524
fix(tests): implement TryDispatchToSessionSubscription on the coverag…
marcschier Aug 14, 2026
abf0451
fix(samples): make the bin-picking cell compile
marcschier Aug 14, 2026
d5b04a8
fix(samples): make the bin-picking demo watchable and the arm bench-safe
marcschier Aug 14, 2026
63a2c17
fix(samples): make Pick and Place move the arm, and unit-norm the sca…
marcschier Aug 15, 2026
76d80b5
feat(samples): let the robot move the parts it picks
marcschier Aug 15, 2026
08f2ef7
feat(samples): show the picked part moving in the viewport
marcschier Aug 16, 2026
e926086
fix(vision): find sensors on a server that builds Vision as instances
marcschier Aug 16, 2026
b6b5818
docs(samples): describe the loop the samples now actually run, and se…
marcschier Aug 16, 2026
902997c
feat(vision): return the result NodeId from a run, not just the ResultId
marcschier Aug 17, 2026
1c3ced1
refactor(vision): share one result resolver, and stop it guessing
marcschier Aug 17, 2026
caeabc2
fix(vision): let the model actually see the frame
marcschier Aug 17, 2026
ed085e8
Aim the camera at the bin and make the frame match the detections
marcschier Aug 17, 2026
8d1a3a7
Solve the scan pose properly: unoccluded and off the singularity
marcschier Aug 17, 2026
bc6f497
Pin the LatestClip publication with tests
marcschier Aug 17, 2026
4bc95d6
Open the viewport on a fixed observer camera
marcschier Aug 18, 2026
c688b16
Rest placed parts on what is under them, and let the viewport show it
marcschier Aug 18, 2026
15f6d0a
Let an agent say what it is picking, and stop the viewer locking it out
marcschier Aug 18, 2026
945858a
Say what the live OpenUSD stream is doing instead of nothing
marcschier Aug 18, 2026
2a493e1
Add a stack-all demo mode that empties the bin onto the fixture
marcschier Aug 18, 2026
2bb220e
Stop the cell inventing physics it does not have
marcschier Aug 19, 2026
682d3be
Update the OpenUSD stack to 0.11.0-alpha
marcschier Aug 19, 2026
0f37278
Enable the collision model by giving the solver room to satisfy it
marcschier Aug 19, 2026
9b29787
Measure what shapes the arm can actually hold, and why the gripper lo…
marcschier Aug 19, 2026
7752f07
Raise the robot and move the bin-picking work outward
marcschier Aug 20, 2026
15ebaf5
Make the bin-picking cycle auditable from the viewer
marcschier Aug 20, 2026
7aeb89f
Replace bin-picking arm with stable palletizer
marcschier Aug 21, 2026
88f2c5e
Start publish workers for classic subscriptions
marcschier Aug 21, 2026
75fe262
Add typed vision-guided robotics MCP workflows
marcschier Aug 25, 2026
bdcda69
Merge remote-tracking branch 'origin/master' into marcschier/vision-g…
marcschier Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 25 additions & 10 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,15 @@
<PackageVersion Include="ModelContextProtocol.Core" Version="2.1.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.8.1" />
<PackageVersion Include="Microsoft.SourceLink.AzureRepos.Git" Version="10.0.301" />
<!-- AI Model Management. Microsoft.Extensions.AI is the inference
abstraction: IChatClient is the contract that reaches a hosted service
and an on-device runtime alike, which is the property the specification
asserts about where inference runs. It pins System.Text.Json 10.0.10,
the version this repository already centralises on, so it costs nothing
to take. No cloud-vendor SDK is referenced anywhere: workload identity
is read from the token the platform projects, which is the mechanism
every platform implements underneath its own SDK. -->
<PackageVersion Include="Microsoft.Extensions.AI" Version="10.8.3" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.301" />
<PackageVersion Include="System.CommandLine" Version="2.0.10" />
<PackageVersion Include="Microsoft.VisualStudio.DiagnosticsHub.BenchmarkDotNetDiagnosers" Version="18.7.37220.1" />
Expand Down Expand Up @@ -135,17 +144,23 @@
</ItemGroup>
<!-- OpenUSD rendering stack, consumed by the optional
tools/Opc.Ua.OpenUsd.Connector.Viewer assembly that backs the connector's
view option. Published on nuget.org. The
runtime packages ship win-x64, linux-x64 and osx-arm64; the RID-agnostic
metapackages resolve the correct native asset per RID, so no
RID-conditional reference is required. -->
view option, and by src/Opc.Ua.Vision.OpenUsd which renders the
Vision server's simulated camera views offscreen via Silk (D3D12/Vulkan).
Published on nuget.org. The runtime packages ship win-x64, linux-x64 and
osx-arm64; the RID-agnostic metapackages resolve the correct native asset
per RID, so no RID-conditional reference is required. All of these move
together: 0.11.0-alpha carries Storm child native ABI 8, and the managed
and RID-specific runtime packages have to match, so a partial bump fails
when the natives load rather than when the solution builds. -->
<ItemGroup>
<PackageVersion Include="OpenUsd" Version="0.7.0-alpha" />
<PackageVersion Include="OpenUsd.Viewer" Version="0.7.0-alpha" />
<PackageVersion Include="OpenUsd.Rendering" Version="0.7.0-alpha" />
<PackageVersion Include="OpenUsd.Rendering.Silk.Vulkan" Version="0.7.0-alpha" />
<PackageVersion Include="OpenUsd.Runtime.Core" Version="0.7.0-alpha" />
<PackageVersion Include="OpenUsd.Runtime.Imaging" Version="0.7.0-alpha" />
<PackageVersion Include="OpenUsd" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Viewer" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Rendering" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Rendering.Silk" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Rendering.Silk.D3D12" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Rendering.Silk.Vulkan" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Runtime.Core" Version="0.11.0-alpha" />
<PackageVersion Include="OpenUsd.Runtime.Imaging" Version="0.11.0-alpha" />
<PackageVersion Include="Avalonia" Version="12.1.1" />
<PackageVersion Include="Avalonia.Desktop" Version="12.1.1" />
</ItemGroup>
Expand Down
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,21 @@ Each sample has its own `README.md` with build and run instructions.
- [Intent Viewer Client](samples/Robotics/IntentViewerClient/README.md) — click a
target in an OpenUSD viewport and watch the arm execute the resulting intent;
also runs headless.
- [Bin Picking Cell](samples/Robotics/BinPickingCell/README.md) — Robot Intent,
Vision, an eye-in-hand camera, and an in-address-space OpenUSD scene in one
reference cell.
- [Bin Picking Client](samples/Robotics/BinPickingClient/README.md) — closes the
Vision-to-Robot-Intent loop, with optional MCP hosting and an OpenUSD viewport.
- [Visual Inspection Cell](samples/Vision/VisualInspectionCell/README.md) — hosts
Vision, AI Model Management, ISA-95 Job Control V2, and an operator dialog for
deterministic machined-bracket inspection.
- [Visual Inspection Agent](samples/Vision/VisualInspectionAgent/README.md) — drives
the inspection loop with typed clients, routes inference through deployment
`Invoke`, applies recipe verdicts, schedules allowlisted jobs, and records
operator ground truth.
- [AI Model Management sample](samples/AI/README.md) — `ModelManagementServer`
publishes the draft AI Model Management catalogue and routes inference;
`ModelManagementClient` discovers deployments and exercises the Methods.
- [Minimal ISA-95 Server](samples/Isa95/MinimalIsa95Server/README.md) —
minimal server hosting the OPC-10030 ISA-95 Common Model together
with OPC-10031-4 Job Control V1 and V2, using the typed common-model
Expand Down Expand Up @@ -188,4 +203,3 @@ vulnerabilities via the process documented in
companion repository with more sample applications.
- [Preview NuGet feed](https://opcfoundation.visualstudio.com/opcua-netstandard/_packaging?_a=feed&feed=opcua-preview%40Local) —
prerelease builds from Azure DevOps.

21 changes: 21 additions & 0 deletions UA.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,16 @@
<Project Path="samples/Robotics/MinimalRobotServer/MinimalRobotServer.csproj" />
<Project Path="samples/Robotics/IntentEnabledRobot/IntentEnabledRobot.csproj" />
<Project Path="samples/Robotics/IntentViewerClient/IntentViewerClient.csproj" />
<Project Path="samples/Robotics/BinPickingCell/BinPickingCell.csproj" />
<Project Path="samples/Robotics/BinPickingClient/BinPickingClient.csproj" />
<Project Path="samples/Vision/VisualInspectionCell/VisualInspectionCell.csproj" />
<Project Path="samples/Vision/VisualInspectionAgent/VisualInspectionAgent.csproj" />
<Project Path="samples/Quickstarts.Servers/Quickstarts.Servers.csproj" />
</Folder>
<Folder Name="/samples/AI/">
<Project Path="samples/AI/ModelManagementServer/ModelManagementServer.csproj" />
<Project Path="samples/AI/ModelManagementClient/ModelManagementClient.csproj" />
</Folder>
<Folder Name="/samples/DI/">
<Project Path="samples/DI/PumpDeviceIntegrationServer/PumpDeviceIntegrationServer.csproj" />
</Folder>
Expand Down Expand Up @@ -103,6 +111,10 @@
<Project Path="src/Opc.Ua.Robotics/Opc.Ua.Robotics.csproj" />
<Project Path="src/Opc.Ua.Robotics.Server/Opc.Ua.Robotics.Server.csproj" />
<Project Path="src/Opc.Ua.Robotics.Client/Opc.Ua.Robotics.Client.csproj" />
<Project Path="src/Opc.Ua.Vision/Opc.Ua.Vision.csproj" />
<Project Path="src/Opc.Ua.Vision.Client/Opc.Ua.Vision.Client.csproj" />
<Project Path="src/Opc.Ua.Vision.Server/Opc.Ua.Vision.Server.csproj" />
<Project Path="src/Opc.Ua.Vision.OpenUsd/Opc.Ua.Vision.OpenUsd.csproj" />
<Project Path="src/Opc.Ua.Gds.Client.Common/Opc.Ua.Gds.Client.Common.csproj" />
<Project Path="src/Opc.Ua.Gds.Common/Opc.Ua.Gds.Common.csproj" />
<Project Path="src/Opc.Ua.Gds.Server.Common/Opc.Ua.Gds.Server.Common.csproj" />
Expand All @@ -122,6 +134,10 @@
<Project Path="src/Opc.Ua.PubSub.Udp/Opc.Ua.PubSub.Udp.csproj" />
<Project Path="src/Opc.Ua.Redundancy.PubSub/Opc.Ua.Redundancy.PubSub.csproj" />
<Project Path="src/Opc.Ua.Server/Opc.Ua.Server.csproj" />
<Project Path="src/Opc.Ua.AI/Opc.Ua.AI.csproj" />
<Project Path="src/Opc.Ua.AI.Inference/Opc.Ua.AI.Inference.csproj" />
<Project Path="src/Opc.Ua.AI.Server/Opc.Ua.AI.Server.csproj" />
<Project Path="src/Opc.Ua.AI.Client/Opc.Ua.AI.Client.csproj" />
<Project Path="src/Opc.Ua.XRegistry/Opc.Ua.XRegistry.csproj" />
<Project Path="src/Opc.Ua.XRegistry.Client/Opc.Ua.XRegistry.Client.csproj" />
<Project Path="src/Opc.Ua.XRegistry.Server/Opc.Ua.XRegistry.Server.csproj" />
Expand Down Expand Up @@ -272,6 +288,9 @@
<Project Path="tests/Opc.Ua.OpenUsd.Tests/Opc.Ua.OpenUsd.Tests.csproj" />
<Project Path="tests/Opc.Ua.Robotics.Tests/Opc.Ua.Robotics.Tests.csproj" />
<Project Path="tests/Opc.Ua.Robotics.Intent.Tests/Opc.Ua.Robotics.Intent.Tests.csproj" />
<Project Path="tests/Opc.Ua.Vision.Tests/Opc.Ua.Vision.Tests.csproj" />
<Project Path="tests/Opc.Ua.VisualInspection.Tests/Opc.Ua.VisualInspection.Tests.csproj" />
<Project Path="tests/Opc.Ua.Vision.Intent.Tests/Opc.Ua.Vision.Intent.Tests.csproj" />
<Project Path="tests/Opc.Ua.Core.Diagnostics.Tests/Opc.Ua.Core.Diagnostics.Tests.csproj" />
<Project Path="tests/Opc.Ua.Bindings.Https.WebApi.Tests/Opc.Ua.Bindings.Https.WebApi.Tests.csproj" />
<Project Path="tests/Opc.Ua.Features.Tests/Opc.Ua.Features.Tests.csproj" />
Expand Down Expand Up @@ -300,6 +319,7 @@
<Project Path="tests/Opc.Ua.Security.Pkcs11.Tests/Opc.Ua.Security.Pkcs11.Tests.csproj" />
<Project Path="tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj" />
<Project Path="tests/Opc.Ua.XRegistry.Tests/Opc.Ua.XRegistry.Tests.csproj" />
<Project Path="tests/Opc.Ua.AI.Tests/Opc.Ua.AI.Tests.csproj" />
<Project Path="tests/Opc.Ua.Aas.Tests/Opc.Ua.Aas.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.Server.Tests/Opc.Ua.Redundancy.Server.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.Kubernetes.Tests/Opc.Ua.Redundancy.Kubernetes.Tests.csproj" />
Expand Down Expand Up @@ -328,6 +348,7 @@
<Project Path="tools/Opc.Ua.Mcp.PubSub/Opc.Ua.Mcp.PubSub.csproj" />
<Project Path="tools/Opc.Ua.Mcp.PubSub.Diagnostics/Opc.Ua.Mcp.PubSub.Diagnostics.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Robotics/Opc.Ua.Mcp.Robotics.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Vision/Opc.Ua.Mcp.Vision.csproj" />
<Project Path="tools/Opc.Ua.OpenUsd.Connector/Opc.Ua.OpenUsd.Connector.csproj" />
<Project Path="tools/Opc.Ua.OpenUsd.Connector.Viewer/Opc.Ua.OpenUsd.Connector.Viewer.csproj" />
</Folder>
Expand Down
Loading
Loading