<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>probabilistic programming | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/probabilistic-programming/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/probabilistic-programming/index.xml" rel="self" type="application/rss+xml"/><description>probabilistic programming</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Sat, 24 Jan 2026 00:00:00 +0000</lastBuildDate><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>probabilistic programming</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/probabilistic-programming/</link></image><item><title>Scenic: A Language for Design and Verification of Autonomous Cyber-Physical Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/scenic/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/scenic/</guid><description>&lt;p>&lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a> is a probabilistic programming language for the design and verification of autonomous cyber-physical systems like self-driving cars.
Scenic allows users to define &lt;em>scenarios&lt;/em> for testing or training their system by putting a probability distribution on the system&amp;rsquo;s environment: the positions, orientations, and other properties of objects and agents, as well as their behaviors over time.
Sampling these scenarios and running them in a simulator yields synthetic data which can be used to train or test a system.
Since Scenic was released open-source in 2019, our group and many others in academia have used Scenic to find, diagnose, and fix bugs in autonomous cars, aircraft, robots, and other kinds of systems.
In industry, it is being used by companies including Boeing, Meta, Deutsche Bahn, and Toyota in domains spanning autonomous driving, aviation, household robotics, railways, maritime, and virtual reality.&lt;/p>
&lt;p>Our long-term goal is for Scenic to become a widely-used common representation and toolkit supporting the entire design lifecycle of AI-based cyber-physical systems.
Towards this end, we have many summer projects available, ranging from adding new application domains to working on the Scenic compiler and sampler:&lt;/p>
&lt;ol>
&lt;li>Extensions to the Scenic driving domain&lt;/li>
&lt;li>Interfacing Scenic to new simulators&lt;/li>
&lt;li>Scenic distribution visualizer&lt;/li>
&lt;/ol>
&lt;p>See the sections below for details.&lt;/p>
&lt;h3 id="extensions-to-the-scenic-driving-domain">Extensions to the Scenic Driving Domain&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Autonomous Driving&lt;/code> &lt;code>3D modeling&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python; basic vector geometry&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Scenic scenarios written to test autonomous vehicles use the &lt;a href="https://docs.scenic-lang.org/en/latest/modules/scenic.domains.driving.html" target="_blank" rel="noopener">driving domain&lt;/a>, a Scenic library defining driving-specific concepts including cars, pedestrians, roads, lanes, and intersections.
The library extracts information about road networks, such as the shapes of lanes, from files in the standard &lt;a href="https://www.asam.net/standards/detail/opendrive/" target="_blank" rel="noopener">OpenDRIVE&lt;/a> format.&lt;/p>
&lt;p>There are several potential goals of this project, including:&lt;/p>
&lt;ul>
&lt;li>Supporting importing complex object information from simulators like CARLA.&lt;/li>
&lt;li>Extending the domain to incorporate additional metadata, such as highway entrances and exits.&lt;/li>
&lt;li>Fixing various bugs and limitations that exist in the driving domain (e.g. &lt;a href="https://github.com/BerkeleyLearnVerify/Scenic/issues/274" target="_blank" rel="noopener">Issue #274&lt;/a> and &lt;a href="https://github.com/BerkeleyLearnVerify/Scenic/issues/295" target="_blank" rel="noopener">Issue #295&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h3 id="interfacing-scenic-to-new-simulators">Interfacing Scenic to New Simulators&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Simulation&lt;/code> &lt;code>Autonomous Driving&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Scenic is designed to be &lt;a href="https://docs.scenic-lang.org/en/latest/new_simulator.html" target="_blank" rel="noopener">easily-interfaced to new simulators&lt;/a>.
Depending on student interest, we could pick a simulator which would open up new kinds of applications for Scenic and write an interface for it.
Some possibilities include:&lt;/p>
&lt;ul>
&lt;li>The &lt;a href="https://github.com/tier4/AWSIM" target="_blank" rel="noopener">AWSIM&lt;/a> driving simulator (to allow testing the &lt;a href="https://autoware.org/" target="_blank" rel="noopener">Autoware&lt;/a> open-source autonomous driving software stack)&lt;/li>
&lt;li>The &lt;a href="https://www.ipg-automotive.com/solutions/product-portfolio/carmaker/" target="_blank" rel="noopener">CarMaker&lt;/a> driving simulator&lt;/li>
&lt;/ul>
&lt;p>The goal of the project would be to create an interface between Scenic and the new simulator and write scenarios demonstrating it.
If time allows, we could do a case study on a realistic system for publication at an academic conference.&lt;/p>
&lt;h3 id="tool-to-visualize-scenario-distributions">Tool to Visualize Scenario Distributions&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Visualization&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python; basic visualization and graphics&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>A Scenic scenario represents a distribution over scenes, but it can be difficult to interpret what exactly this distribution represents. Being able to visualize this distribution would be helpful for understanding and reasoning about Scenarios.&lt;/p>
&lt;p>The goal of this project would be to build on an existing prototype for visualizing these distributions, and to create a tool that can be used by the wider Scenic community.&lt;/p></description></item><item><title>Scenic-RoboSuite Integration: Building the First Working Prototype</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250929-sahil-tgs/</link><pubDate>Mon, 29 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250929-sahil-tgs/</guid><description>&lt;p>I&amp;rsquo;m &lt;a href="https://sahiltgs.super.site/" target="_blank" rel="noopener">Sahil&lt;/a>, presenting the first working prototype of the Scenic-RoboSuite integration. This &lt;a href="https://sahiltgs.super.site/gsoc/uc-ospo-proposal" target="_blank" rel="noopener">project&lt;/a> is being mentored by &lt;a href="https://ucsc-ospo.github.io/author/daniel-fremont/" target="_blank" rel="noopener">Daniel Fremont&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/eric-vin/" target="_blank" rel="noopener">Eric Vin&lt;/a>.&lt;/p>
&lt;p>After months of development, we have achieved a functional prototype of the &lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a>-&lt;a href="https://robosuite.ai/" target="_blank" rel="noopener">RoboSuite&lt;/a> interface. Researchers can now write basic declarative robotic manipulation scenarios in Scenic that execute with physics simulation in RoboSuite. While still in development, the prototype demonstrates the feasibility and potential of bridging probabilistic scenario generation with detailed robot control.&lt;/p>
&lt;h2 id="major-achievements">Major Achievements&lt;/h2>
&lt;h3 id="mjcf-xml-injection">MJCF XML Injection&lt;/h3>
&lt;p>The interface introduces direct MJCF XML support, allowing Scenic to build RoboSuite-native manipulable objects from raw XML definitions. Users can define custom objects with complex mesh geometries, textures, and physics properties directly in their Scenic scenarios:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">dragon_xml = &amp;#39;&amp;#39;&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;mujoco&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;asset&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;mesh file=&amp;#34;dragon.stl&amp;#34; scale=&amp;#34;0.01 0.01 0.01&amp;#34;/&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;texture file=&amp;#34;dragon_texture.png&amp;#34;/&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/asset&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;worldbody&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;body name=&amp;#34;object&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;geom mesh=&amp;#34;dragon_mesh&amp;#34; type=&amp;#34;mesh&amp;#34;/&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/body&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/worldbody&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/mujoco&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#39;&amp;#39;&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dragon = new CustomObject with mjcfXml dragon_xml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The system automatically handles collision geometry generation, joint creation for physics, and asset file resolution.&lt;/p>
&lt;h3 id="complex-mesh-object-support">Complex Mesh Object Support&lt;/h3>
&lt;p>Import and manipulate arbitrary 3D models (STL, OBJ) with automatic mesh repair and texture mapping. The interface resolves file paths relative to Scenic files, copies assets to temporary directories for MuJoCo, and converts textures (JPG to PNG) when needed. This enables using custom robotic tools, industrial parts, or any 3D model in manipulation scenarios.&lt;/p>
&lt;h3 id="custom-arena-definition">Custom Arena Definition&lt;/h3>
&lt;p>Define complete custom environments using MJCF XML, extending beyond RoboSuite&amp;rsquo;s built-in arenas:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">custom_arena = new CustomArena with arenaXml localPath(&amp;#34;warehouse.xml&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This allows creating specialized workspaces, factory floors, or research-specific environments while maintaining full physics simulation.&lt;/p>
&lt;h3 id="multi-robot-support">Multi-Robot Support&lt;/h3>
&lt;p>The interface handles multiple robots operating in the same workspace:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">robot1 = new Panda at (-0.5, 0, 0)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">robot2 = new UR5e at (0.5, 0, 0)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">table = new Table at (0, 0, 0.425)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each robot maintains independent control and can execute coordinated or individual behaviors.&lt;/p>
&lt;h3 id="built-in-manipulation-behaviors">Built-in Manipulation Behaviors&lt;/h3>
&lt;p>Ready-to-use behaviors for immediate testing and development:&lt;/p>
&lt;ul>
&lt;li>&lt;code>MoveToPosition&lt;/code> - Precise end-effector positioning&lt;/li>
&lt;li>&lt;code>PickObject&lt;/code> - Automated grasping with approach and closure&lt;/li>
&lt;li>&lt;code>LiftToHeight&lt;/code> - Controlled lifting to target heights&lt;/li>
&lt;li>&lt;code>PickAndLift&lt;/code> - Complete pick-and-place sequence&lt;/li>
&lt;/ul>
&lt;p>These behaviors use Operational Space Control (OSC) for intuitive 3D movement commands.&lt;/p>
&lt;h3 id="extended-environment-configuration">Extended Environment Configuration&lt;/h3>
&lt;p>The interface extends RoboSuite&amp;rsquo;s configurability through Scenic&amp;rsquo;s parameter system:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">param controller_config = {&amp;#39;type&amp;#39;: &amp;#39;OSC_POSITION&amp;#39;, &amp;#39;impedance&amp;#39;: &amp;#39;low&amp;#39;}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">param camera_view = &amp;#39;robot0_eye_in_hand&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">param lite_physics = True # Faster simulation for testing
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="example-probabilistic-pick-and-place">Example: Probabilistic Pick-and-Place&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">model scenic.simulators.robosuite.model
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Randomly position cube on table
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">table = new Table at (0.6, 0, 0.425)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cube = new Box on table,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with color (1, 0, 0, 1),
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with position (Uniform(-0.2, 0.2), Uniform(-0.2, 0.2), _)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Robot adapts to random cube position
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">behavior AdaptivePickup():
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> do PickAndLift(cube, height=1.1)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ego = new Panda at (0, 0, 0),
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with behavior AdaptivePickup()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each scenario run generates a different cube position, testing the robot&amp;rsquo;s adaptive capabilities.&lt;/p>
&lt;h2 id="challenges-overcome">Challenges Overcome&lt;/h2>
&lt;h3 id="understanding-dual-architecture-paradigms">Understanding Dual Architecture Paradigms&lt;/h3>
&lt;p>RoboSuite and Scenic operate on fundamentally different principles. RoboSuite builds environments imperatively through MuJoCo XML composition, expecting complete scene specification upfront. Scenic generates scenes probabilistically through constraint solving, requiring geometric knowledge before simulation. Bridging these required developing a two-pass system where we first extract geometry from a temporary RoboSuite environment, update Scenic&amp;rsquo;s understanding, then create the final simulation. This architectural mismatch touched every aspect of the integration, from object creation to property updates.&lt;/p>
&lt;h3 id="discovering-and-extending-manipulationenv">Discovering and Extending ManipulationEnv&lt;/h3>
&lt;p>RoboSuite&amp;rsquo;s documentation focuses on using pre-built tasks, not creating custom environments. Through extensive source code analysis, we discovered that &lt;code>ManipulationEnv&lt;/code> was the key - it accepts robots as configuration while allowing customizable arenas and objects as components. This class became our foundation, but required significant extension. We implemented &lt;code>ScenicManipulationEnv&lt;/code> to intercept Scenic&amp;rsquo;s object configurations, handle dynamic arena selection (EmptyArena vs MultiTableArena based on scene content), and manage the complex initialization sequence where robots, arenas, and objects must be assembled in specific order for MuJoCo compilation.&lt;/p>
&lt;h3 id="xml-to-3d-mesh-pipeline">XML to 3D Mesh Pipeline&lt;/h3>
&lt;p>Converting MJCF XML to usable 3D meshes proved complex. MuJoCo uses XML to describe geometry, but Scenic needs actual mesh data for collision checking. We built a multi-stage pipeline: First, &lt;code>ElementTree&lt;/code> parses the XML to extract mesh references and primitive definitions. Then, we handle two paths - for mesh files, we load STL/OBJ files with trimesh and apply XML-specified transformations; for primitives (boxes, cylinders), we generate meshes programmatically. The challenge intensified with composite objects - a table might have a box tabletop and four cylinder legs. We developed &lt;code>ComponentExtractor&lt;/code> to analyze the MuJoCo scene graph, identify related geometries through naming patterns and hierarchy, and export each component as a separate GLB file with proper world transforms preserved.&lt;/p>
&lt;h3 id="file-path-resolution-discrepancies">File Path Resolution Discrepancies&lt;/h3>
&lt;p>Scenic and RoboSuite handle file paths completely differently. Scenic uses &lt;code>localPath()&lt;/code> for paths relative to the scenario file, while RoboSuite expects paths relative to its package structure or absolute paths. MJCF XML compounds this - mesh references can be relative to the XML file location, not the calling code. We implemented a sophisticated path resolution system: detect whether paths come from embedded XML (relative to Scenic file) or external XML files (relative to XML location), copy all referenced assets (meshes, textures) to temporary directories accessible to MuJoCo, and handle texture format conversion (JPG to PNG) when needed. This system transparently manages assets whether they&amp;rsquo;re in the Scenic project, RoboSuite package, or absolute paths, making the interface truly portable.&lt;/p>
&lt;h2 id="impact-and-applications">Impact and Applications&lt;/h2>
&lt;p>This bridge enables:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Research&lt;/strong>: Generate diverse manipulation scenarios for robot learning algorithms&lt;/li>
&lt;li>&lt;strong>Testing&lt;/strong>: Validate robotic systems against probabilistic task variations&lt;/li>
&lt;li>&lt;strong>Development&lt;/strong>: Rapid prototyping of manipulation tasks without manual scene setup&lt;/li>
&lt;li>&lt;strong>Education&lt;/strong>: Teach robotics concepts through declarative scenario specification&lt;/li>
&lt;/ul>
&lt;p>The integration makes complex robotic simulations accessible through Scenic&amp;rsquo;s intuitive language while preserving RoboSuite&amp;rsquo;s detailed physics and control capabilities.&lt;/p>
&lt;h2 id="documentation-and-resources">Documentation and Resources&lt;/h2>
&lt;p>The project includes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>example scenarios&lt;/strong> demonstrating all features&lt;/li>
&lt;li>&lt;strong>Comprehensive STATUS.md&lt;/strong> tracking working features and known issues&lt;/li>
&lt;li>&lt;strong>Technical documentation&lt;/strong> in &lt;code>docs/&lt;/code> covering architecture and troubleshooting&lt;/li>
&lt;li>&lt;strong>Mesh extraction utilities&lt;/strong> for pre-processing and caching&lt;/li>
&lt;/ul>
&lt;h2 id="current-status-and-future-work">Current Status and Future Work&lt;/h2>
&lt;p>This prototype demonstrates that the Scenic-RoboSuite bridge is viable and functional. Basic features are working reliably:&lt;/p>
&lt;ul>
&lt;li>Single-robot manipulation scenarios execute successfully&lt;/li>
&lt;li>MJCF XML injection creates custom objects&lt;/li>
&lt;li>Pick-and-place behaviors operate consistently&lt;/li>
&lt;li>Multi-robot support functions in controlled scenarios&lt;/li>
&lt;/ul>
&lt;p>However, significant work remains:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Stability improvements&lt;/strong>: Some features work intermittently and need refinement&lt;/li>
&lt;li>&lt;strong>Velocity tracking&lt;/strong>: Full implementation awaits framework updates&lt;/li>
&lt;li>&lt;strong>Multi-robot coordination&lt;/strong>: Advanced synchronization primitives needed&lt;/li>
&lt;li>&lt;strong>Performance optimization&lt;/strong>: Mesh extraction and caching can be streamlined&lt;/li>
&lt;li>&lt;strong>Extended testing&lt;/strong>: More diverse scenarios and edge cases need validation&lt;/li>
&lt;/ul>
&lt;p>The prototype serves as a proof of concept, showing that probabilistic scenario specification can successfully drive physics-based robot simulation. The architecture is sound, the core features function, and the path forward is clear.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>This working prototype of the Scenic-RoboSuite integration represents significant progress toward bridging probabilistic programming with robotic simulation. We&amp;rsquo;ve successfully demonstrated that declarative scenario specification can control detailed physics simulation, opening new possibilities for robotic system development and testing.&lt;/p>
&lt;p>While not yet production-ready, the prototype provides a solid foundation for future development. Researchers can begin experimenting with basic manipulation scenarios, developers can test the interface with their use cases, and the community can contribute to making this bridge more robust and feature-complete.&lt;/p>
&lt;p>The challenges overcome - from understanding dual architectures to implementing XML-to-mesh pipelines - have resulted in a functional system that validates our approach. This prototype proves that Scenic&amp;rsquo;s elegant scenario language and RoboSuite&amp;rsquo;s detailed physics can work together, setting the stage for a powerful new tool in robotics research and development.&lt;/p></description></item><item><title>Robot Manipulation with Scenic-RoboSuite</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250730-sahil-tgs/</link><pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250730-sahil-tgs/</guid><description>&lt;p>We&amp;rsquo;re &lt;a href="https://sahiltgs.super.site/" target="_blank" rel="noopener">Sahil&lt;/a>, continuing work on the Scenic-RoboSuite integration for GSoC 2025. This &lt;a href="https://sahiltgs.super.site/gsoc/uc-ospo-proposal" target="_blank" rel="noopener">project&lt;/a> is mentored by &lt;a href="https://ucsc-ospo.github.io/author/daniel-fremont/" target="_blank" rel="noopener">Daniel Fremont&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/eric-vin/" target="_blank" rel="noopener">Eric Vin&lt;/a>.&lt;/p>
&lt;p>Since the last update, the &lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a>-&lt;a href="https://robosuite.ai/" target="_blank" rel="noopener">RoboSuite&lt;/a> interface has made significant progress. The bidirectional bridge is now functional - robots can read sensor data and execute behaviors based on observations. However, these features are still in early stages and we&amp;rsquo;re working on making them more stable and consistent.&lt;/p>
&lt;p>We&amp;rsquo;ve integrated RoboSuite&amp;rsquo;s Operational Space Control into Scenic. This control method lets you command the robot&amp;rsquo;s hand directly in 3D space (like &amp;ldquo;move 10cm left&amp;rdquo;) instead of calculating complex joint rotations. While the integration works, it&amp;rsquo;s rough around the edges and we&amp;rsquo;re currently focused on stabilizing it across different scenarios.&lt;/p>
&lt;p>The main challenge was architectural - RoboSuite expects all robot commands bundled together each timestep, while Scenic processes them one by one. We solved this with a pending actions system that collects everything first, then executes in one go. Time synchronization was another challenge, matching Scenic&amp;rsquo;s steps with MuJoCo&amp;rsquo;s physics.&lt;/p>
&lt;p>We&amp;rsquo;ve implemented a basic pick-and-place behavior for basic testing. The robot reads sensor data, calculates where to move, and adjusts continuously. It can successfully grasp and lift objects, though consistency varies between runs. The system supports three robot models and works with RoboSuite&amp;rsquo;s pre-built environments.&lt;/p>
&lt;p>Custom world building is currently on hold. We&amp;rsquo;ve decided to focus on integrating existing RoboSuite features into Scenic first, then build Scenic&amp;rsquo;s capabilities like dynamic scenario randomization on top. For our first prototype, we&amp;rsquo;re aiming to extend the pick-and-place behavior into a full randomization demo - Scenic will randomly position the cube each run, and the robot will adapt to find and grasp it regardless of location.&lt;/p>
&lt;p>The next two weeks focus on stabilizing current features and preparing this randomized scenario prototype. Expanding the behavior library and supporting additional environments will come in future phases after we have a solid foundation.&lt;/p>
&lt;p>The core bridge between Scenic and RoboSuite is operational, but there&amp;rsquo;s significant work ahead to make it reliable and user-friendly.&lt;/p></description></item><item><title>Introducing Scenic-RoboSuite Interface</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250616-sahil-tgs/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250616-sahil-tgs/</guid><description>&lt;p>Hey! I&amp;rsquo;m &lt;a href="https://sahiltgs.super.site/" target="_blank" rel="noopener">Sahil&lt;/a>, working on integrating Scenic with RoboSuite for GSoC 2025. My &lt;a href="https://sahiltgs.super.site/gsoc/uc-ospo-proposal" target="_blank" rel="noopener">project&lt;/a> is mentored by &lt;a href="https://ucsc-ospo.github.io/author/daniel-fremont/" target="_blank" rel="noopener">Daniel Fremont&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/eric-vin/" target="_blank" rel="noopener">Eric Vin&lt;/a> .&lt;/p>
&lt;p>I&amp;rsquo;m connecting &lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a> (a probabilistic programming language for scenarios) with &lt;a href="https://robosuite.ai/" target="_blank" rel="noopener">RoboSuite&lt;/a> (a robotics simulation framework). Basically, you write simple scenario descriptions and get complex 3D robot simulations automatically.&lt;/p>
&lt;p>Currently, as I&amp;rsquo;m building things and learning how Scenic works, I have been able to get the basic skeleton for the simulator interface working. I&amp;rsquo;ve implemented the simulator class and built a world model that can translate Scenic objects into RoboSuite&amp;rsquo;s simulator (which is MuJoCo-based). The interface now handles precise object placement in the world pretty well.&lt;/p>
&lt;p>One of the trickier parts was figuring out the translation logic between Scenic and RoboSuite. I managed to overcome this by building a system that automatically detects the shape of objects when moving between the two frameworks, which lays a foundation for more complex object mapping later on.&lt;/p>
&lt;p>I&amp;rsquo;ve also built some basic example scenarios to run and test with. Currently working on more complex examples and testing Scenic&amp;rsquo;s features like probabilistic object placement, constraint satisfaction, and spatial relationships between objects.&lt;/p>
&lt;p>In summary, the &amp;ldquo;Scenic to RoboSuite&amp;rdquo; part of the interface is pretty much done. For next week, I need to work on the &amp;ldquo;RoboSuite to Scenic&amp;rdquo; part - basically getting feedback and state information flowing back from the simulation. Achieving this will make a complete bridge and give us a working simulator interface, which is the first major milestone for the project.&lt;/p></description></item><item><title>Scenic: A Language for Design and Verification of Autonomous Cyber-Physical Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/scenic/</link><pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/scenic/</guid><description>&lt;p>&lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a> is a probabilistic programming language for the design and verification of autonomous cyber-physical systems like self-driving cars.
Scenic allows users to define &lt;em>scenarios&lt;/em> for testing or training their system by putting a probability distribution on the system&amp;rsquo;s environment: the positions, orientations, and other properties of objects and agents, as well as their behaviors over time.
Sampling these scenarios and running them in a simulator yields synthetic data which can be used to train or test a system.
Since Scenic was released open-source in 2019, our group and many others in academia have used Scenic to find, diagnose, and fix bugs in autonomous cars, aircraft, robots, and other kinds of systems.
In industry, it is being used by companies including Boeing, Meta, Deutsche Bahn, and Toyota in domains spanning autonomous driving, aviation, household robotics, railways, maritime, and virtual reality.&lt;/p>
&lt;p>Our long-term goal is for Scenic to become a widely-used common representation and toolkit supporting the entire design lifecycle of AI-based cyber-physical systems.
Towards this end, we have many summer projects available, ranging from adding new application domains to working on the Scenic compiler and sampler:&lt;/p>
&lt;ol>
&lt;li>3D Driving Scenarios&lt;/li>
&lt;li>A Library for Aviation Scenarios&lt;/li>
&lt;li>Interfacing Scenic to new simulators&lt;/li>
&lt;li>Optimizing and parallelizing Scenic&lt;/li>
&lt;li>Improvements and infrastructure for the VerifAI toolkit&lt;/li>
&lt;/ol>
&lt;p>See the sections below for details.&lt;/p>
&lt;h3 id="3d-driving-scenarios">3D Driving Scenarios&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Autonomous Driving&lt;/code> &lt;code>3D modeling&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python; basic vector geometry&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Scenic scenarios written to test autonomous vehicles use the &lt;a href="https://docs.scenic-lang.org/en/latest/modules/scenic.domains.driving.html" target="_blank" rel="noopener">driving domain&lt;/a>, a Scenic library defining driving-specific concepts including cars, pedestrians, roads, lanes, and intersections.
The library extracts information about road networks, such as the shapes of lanes, from files in the standard &lt;a href="https://www.asam.net/standards/detail/opendrive/" target="_blank" rel="noopener">OpenDRIVE&lt;/a> format.
Currently, we only generate 2D polygons for lanes, throwing away 3D information.
While this suffices for many driving scenarios, it means we cannot properly model overpasses (the roads appear to overlap) or test driving scenarios where 3D geometry is important, such as hilly terrain.&lt;/p>
&lt;p>The goals of this project are to extend our road network library to generate 3D meshes (instead of 2D polygons) for roads, write new Scenic scenarios which use this new capability, and (if time allows) test autonomous driving software using them.&lt;/p>
&lt;h3 id="a-library-for-aviation-scenarios">A Library for Aviation Scenarios&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Autonomous Aircraft&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python; ideally some aviation experience&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>We have used Scenic to find, diagnose, and fix bugs in software for autonomous aircraft: in particular, &lt;a href="https://arxiv.org/abs/2005.07173" target="_blank" rel="noopener">this paper&lt;/a> studied a neural network-based automated taxiing system using the &lt;a href="https://www.x-plane.com/" target="_blank" rel="noopener">X-Plane&lt;/a> flight simulator.
We also have prototype interfaces to &lt;a href="https://microsoft.github.io/AirSim/" target="_blank" rel="noopener">AirSim&lt;/a> and &lt;a href="https://www.flightsimulator.com/" target="_blank" rel="noopener">Microsoft Flight Simulator&lt;/a>.
However, our experiments so far have mainly focused on simple scenarios involving a single aircraft.&lt;/p>
&lt;p>The goal of this project is to develop an &lt;em>aviation library&lt;/em> for Scenic (like the driving domain mentioned in the previous project) which will allow users to create complex aviation scenarios in a simulator-agnostic way.
The library would define concepts for aircraft, flight paths, weather, etc. and allow importing real-world data about these.
The student would demonstrate the library&amp;rsquo;s functionality by writing some example scenarios and testing either simple aircraft controllers or (if time allows) ML-based flight software.&lt;/p>
&lt;h3 id="interfacing-scenic-to-new-simulators">Interfacing Scenic to New Simulators&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Simulation&lt;/code> &lt;code>Autonomous Driving&lt;/code> &lt;code>Robotics&lt;/code> &lt;code>LLMs&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Scenic is designed to be &lt;a href="https://docs.scenic-lang.org/en/latest/new_simulator.html" target="_blank" rel="noopener">easily-interfaced to new simulators&lt;/a>.
Depending on student interest, we could pick a simulator which would open up new kinds of applications for Scenic and write an interface for it.
Some possibilities include:&lt;/p>
&lt;ul>
&lt;li>The &lt;a href="https://github.com/tier4/AWSIM" target="_blank" rel="noopener">AWSIM&lt;/a> driving simulator (to allow testing the &lt;a href="https://autoware.org/" target="_blank" rel="noopener">Autoware&lt;/a> open-source autonomous driving software stack)&lt;/li>
&lt;li>The &lt;a href="https://www.coppeliarobotics.com/" target="_blank" rel="noopener">CoppeliaSim&lt;/a> robotics simulator&lt;/li>
&lt;li>NVIDIA&amp;rsquo;s &lt;a href="https://github.com/NVIDIA/Cosmos" target="_blank" rel="noopener">Cosmos&lt;/a>, an LLM which generates videos from text prompts&lt;/li>
&lt;li>NVIDIA&amp;rsquo;s &lt;a href="https://www.nvidia.com/en-us/omniverse/" target="_blank" rel="noopener">Omniverse&lt;/a> (various applications, e.g. simulating virtual factories)&lt;/li>
&lt;li>Various simulators for which we have prototype interfaces that could be generalized and made more usable, including &lt;a href="https://mujoco.org/" target="_blank" rel="noopener">MuJoCo&lt;/a> and &lt;a href="https://developer.nvidia.com/isaac/sim" target="_blank" rel="noopener">Isaac Sim&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the project would be to create an interface between Scenic and the new simulator and write scenarios demonstrating it.
If time allows, we could do a case study on a realistic system for publication at an academic conference.&lt;/p>
&lt;h3 id="optimizing-and-parallelizing-scenic">Optimizing and Parallelizing Scenic&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Optimization&lt;/code> &lt;code>Parallelization&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Large-scale testing with Scenic, when one wants to generate thousands of simulations, can be very computationally-expensive.
In some cases, the bottleneck is the simulator, and being able to easily run multiple simulations in parallel would greatly increase scalability.
In others, Scenic itself spends substantial time trying to sample scenarios satisfying all the given constraints.&lt;/p>
&lt;p>This project would explore a variety of approaches to speeding up scene and simulation generation in Scenic.
Some possibilities include:&lt;/p>
&lt;ul>
&lt;li>Parallelizing scene generation and simulation (e.g. using &lt;a href="https://github.com/ray-project/ray" target="_blank" rel="noopener">Ray&lt;/a>)&lt;/li>
&lt;li>Systematically profiling real-world Scenic programs to characterize the main bottlenecks and propose optimizations&lt;/li>
&lt;li>JIT compiling Scenic&amp;rsquo;s internal sampling code (e.g. using &lt;a href="https://numba.pydata.org/" target="_blank" rel="noopener">Numba&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h3 id="improvements-and-infrastructure-for-the-verifai-toolkit">Improvements and Infrastructure for the VerifAI Toolkit&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>DevOps&lt;/code> &lt;code>Documentation&lt;/code> &lt;code>APIs&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://github.com/BerkeleyLearnVerify/VerifAI" target="_blank" rel="noopener">VerifAI&lt;/a> is a toolkit for design and analysis of AI-based systems that builds on top of Scenic.
It adds among other features the ability to perform &lt;em>falsification&lt;/em>, intelligently searching for scenarios that will cause a system to behave in an undesirable way.&lt;/p>
&lt;p>The goal of this project is to improve VerifAI&amp;rsquo;s development infrastructure, documentation, and ease of use, which are currently relatively poor compared to Scenic.
Specific tasks could include:&lt;/p>
&lt;ul>
&lt;li>Setting up continuous integration (CI) on GitHub&lt;/li>
&lt;li>Creating processes to help users/developers submit issues and PRs and deal with them in a timely manner&lt;/li>
&lt;li>Writing more documentation, including tutorials and examples (not only for end users of VerifAI but those wanting to develop custom falsification components, for example)&lt;/li>
&lt;li>Refactoring VerifAI&amp;rsquo;s API to make it easier to use and extend&lt;/li>
&lt;/ul></description></item></channel></rss>