forked from PickNikRobotics/moveit_pro_empty_ws
-
Notifications
You must be signed in to change notification settings - Fork 14
Add vla_sim: prompt-driven cube stacking with a vision-language-action policy #815
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
2b6c586
feat(vla_sim): add color cube-stack config with LeRobot inference server
fdavulcu 0a03059
fix(vla_sim): enable camera shadows, update checkpoint, document hard…
fdavulcu 011b7be
docs(vla_sim): make the compose-free server run buildable and GPU-aware
fdavulcu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| cmake_minimum_required(VERSION 3.22) | ||
| project(vla_sim) | ||
|
|
||
| find_package(ament_cmake REQUIRED) | ||
|
|
||
| # A self-contained MoveIt Pro config: MuJoCo description (scene + arm/gripper), | ||
| # MoveIt/control config, objectives, waypoints, and the agent-bridge launch. | ||
| install( | ||
| DIRECTORY | ||
| config | ||
| description | ||
| launch | ||
| objectives | ||
| waypoints | ||
| DESTINATION | ||
| share/${PROJECT_NAME} | ||
| ) | ||
|
|
||
| install(PROGRAMS | ||
| script/get_action_chunk_adapter.py | ||
| DESTINATION lib/${PROJECT_NAME} | ||
| ) | ||
|
|
||
| if(BUILD_TESTING) | ||
| find_package(ament_lint_auto REQUIRED) | ||
| find_package(ament_cmake_pytest REQUIRED) | ||
|
|
||
| # docker/test_vla_inference_server.py is not wired here: it needs | ||
| # torch/lerobot and runs inside the inference_server container instead | ||
| # (see docker/README.md). | ||
| ament_add_pytest_test(test_get_action_chunk_adapter | ||
| test/test_get_action_chunk_adapter.py | ||
| TIMEOUT 60 | ||
| ) | ||
|
|
||
| ament_lint_auto_find_test_dependencies() | ||
| endif() | ||
|
|
||
| ament_package() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
|
|
||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
|
|
||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
|
|
||
| * Neither the name of the copyright holder nor the names of its | ||
| contributors may be used to endorse or promote products derived from | ||
| this software without specific prior written permission. | ||
|
|
||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| POSSIBILITY OF SUCH DAMAGE. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # vla_sim | ||
|
|
||
| A MoveIt Pro MuJoCo simulation of a Kinova Gen3 arm stacking colored cubes on | ||
| command, driven by a vision-language-action policy. The `Stack Cubes with the | ||
| VLA Policy` objective runs the policy, which is served over HTTP by the | ||
| `inference_server` container built from [`docker/`](docker/), where the setup | ||
| and serving instructions live. | ||
|
|
||
| ## Hardware requirements | ||
|
|
||
| An NVIDIA GPU is recommended. When one is present, MoveIt Pro makes it | ||
| available to the inference server automatically. The stack still runs without | ||
| one, but inference moves to the CPU, where the default pi0.5 checkpoint might | ||
| be too slow to run at all. A smaller model such as SmolVLA might be the better | ||
| fit there. AMD GPUs are not passed through yet, so those machines run inference | ||
| on the CPU as well. | ||
|
|
||
| For detailed documentation see: [MoveIt Pro Documentation](https://docs.picknik.ai/) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,137 @@ | ||
| ############################################################### | ||
| # | ||
| # This configures the robot to work with MoveIt Pro | ||
| # | ||
| ############################################################### | ||
|
|
||
| # Baseline hardware configuration parameters for MoveIt Pro. | ||
| # [Required] | ||
| hardware: | ||
| # If the MoveIt Pro Agent should launch the ros2 controller node. | ||
| # [Optional, default=True] | ||
| launch_control_node: True | ||
|
|
||
| # If the MoveIt Pro Agent should launch the robot state publisher. | ||
| # This should be false if you are launching the robot state publisher as part of drivers. | ||
| # [Optional, default=True] | ||
| launch_robot_state_publisher: True | ||
|
|
||
| # Parameters used to configure the robot description through XACRO. | ||
| # A URDF and SRDF are both required. | ||
| # [Required] | ||
| robot_description: | ||
| urdf: | ||
| package: "vla_sim" | ||
| path: "description/picknik_kinova_gen3.xacro" | ||
| srdf: | ||
| package: "vla_sim" | ||
| path: "config/moveit/picknik_kinova_gen3_base.srdf" | ||
| # Specify any additional parameters required for the URDF. | ||
| # Many of these are specific to the UR descriptions packages, and can be customized as needed. | ||
| # [Optional] | ||
| urdf_params: | ||
| - mujoco_model: "description/mujoco/cube_stack_scene.xml" | ||
| - mujoco_viewer: false | ||
|
|
||
| # Sets ROS global params for launch. | ||
| # [Optional] | ||
| ros_global_params: | ||
| # Whether or not to use simulated time. | ||
| # [Optional, default=False] | ||
| use_sim_time: False | ||
|
|
||
| # Configuration files for MoveIt. | ||
| # For more information, refer to https://moveit.picknik.ai/main/doc/how_to_guides/moveit_configuration/moveit_configuration_tutorial.html | ||
| # [Required] | ||
| moveit_params: | ||
| # Used by the Waypoint Manager to save joint states from this joint group. | ||
| joint_group_name: "manipulator" | ||
|
|
||
| kinematics: | ||
| package: "vla_sim" | ||
| path: "config/moveit/pose_ik_distance.yaml" | ||
| sensors_3d: | ||
| package: "vla_sim" | ||
| path: "config/moveit/sensors_3d.yaml" | ||
| joint_limits: | ||
| package: "vla_sim" | ||
| path: "config/moveit/joint_limits.yaml" | ||
| pose_jog: | ||
| package: "vla_sim" | ||
| path: "config/moveit/pose_jog.yaml" | ||
| joint_jog: | ||
| package: "vla_sim" | ||
| path: "config/moveit/joint_jog.yaml" | ||
|
|
||
| publish: | ||
| planning_scene: True | ||
| geometry_updates: True | ||
| state_updates: True | ||
| transforms_updates: True | ||
|
|
||
| trajectory_execution: | ||
| manage_controllers: True | ||
| allowed_execution_duration_scaling: 2.0 | ||
| allowed_goal_duration_margin: 5.0 | ||
| allowed_start_tolerance: 0.01 | ||
|
|
||
| # Configuration for launching ros2_control processes. | ||
| # [Required, if using ros2_control] | ||
| ros2_control: | ||
| config: | ||
| package: "vla_sim" | ||
| path: "config/control/picknik_kinova_gen3.ros2_control.yaml" | ||
| # MoveIt Pro will load and activate these controllers at start up to ensure they are available. | ||
| # If not specified, it is up to the user to ensure the appropriate controllers are active and available | ||
| # for running the application. | ||
| # [Optional, default=[]] | ||
| controllers_active_at_startup: | ||
| - "force_torque_sensor_broadcaster" | ||
| - "robotiq_gripper_controller" | ||
| - "joint_state_broadcaster" | ||
| # Load but do not start these controllers so they can be activated later if needed. | ||
| controllers_inactive_at_startup: | ||
| - "joint_trajectory_admittance_controller" | ||
| - "velocity_force_controller" | ||
| - "joint_velocity_controller" | ||
| # Any controllers here will not be spawned by MoveIt Pro. | ||
| # [Optional, default=[]] | ||
| controllers_not_managed: [] | ||
| # Optionally configure remapping rules to let multiple controllers receive commands on the same topic. | ||
| # [Optional, default=[]] | ||
| controller_shared_topics: [] | ||
|
|
||
| # Configuration for loading behaviors and objectives. | ||
| # [Required] | ||
| objectives: | ||
| # List of plugins for loading custom behaviors. | ||
| # [Required] | ||
| behavior_loader_plugins: | ||
| # This plugin will load the core MoveIt Pro Behaviors. | ||
| # Add additional plugin loaders as needed. | ||
| core: | ||
| - "moveit_pro::behaviors::CoreBehaviorsLoader" | ||
| - "moveit_pro::behaviors::MTCCoreBehaviorsLoader" | ||
| - "moveit_pro::behaviors::VisionBehaviorsLoader" | ||
| - "moveit_pro::behaviors::ConverterBehaviorsLoader" | ||
| - "moveit_pro::behaviors::MujocoBehaviorsLoader" | ||
| # Specify source folder for objectives | ||
| # [Required] | ||
| objective_library_paths: | ||
| core_objectives: | ||
| package_name: "moveit_pro_objectives" | ||
| relative_path: "objectives/core" | ||
| motion_objectives: | ||
| package_name: "moveit_pro_objectives" | ||
| relative_path: "objectives/motion" | ||
| mujoco_objectives: | ||
| package_name: "moveit_pro_objectives" | ||
| relative_path: "objectives/mujoco" | ||
| sim_objectives: | ||
| package_name: "vla_sim" | ||
| relative_path: "objectives" | ||
| # Specify the location of the saved waypoints file. | ||
| # [Required] | ||
| waypoints_file: | ||
| package_name: "vla_sim" | ||
| relative_path: "waypoints/waypoints.yaml" |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.