Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
e3c28fd
feat(kinova_vla_test_sim): add Kinova Gen3 color-cube stacking sim co…
danwahl Jul 22, 2026
25d9423
feat(kinova_vla_test_sim): serve VLA policies over docker with auto-l…
danwahl Jul 22, 2026
cda92aa
fix(kinova_vla_test_sim): home+open-gripper before rollout, standard …
danwahl Jul 22, 2026
d6b99d6
fix(kinova_vla_test_sim): fork local SRDF to drop dangling camera/gri…
danwahl Jul 24, 2026
a7aa97d
feat(kinova_vla_test_sim): add eval-layout keyframes and a reset obje…
danwahl Jul 26, 2026
284b9cb
fix(kinova_vla_test_sim): convex-decompose bracelet mesh for MJWarp r…
danwahl Jul 26, 2026
d384ca3
fix(kinova_vla_test_sim): set impratio=20 so a pinched cube cannot slide
danwahl Jul 27, 2026
56b409f
feat(kinova_vla_test_sim): render all three cameras square (480x480)
danwahl Jul 27, 2026
75078b7
feat(kinova_vla_test_sim): add pi0.5 LoRA training recipe
danwahl Jul 28, 2026
a6b8445
feat(kinova_vla_test_sim): publish /joint_commands for oracle recording
danwahl Aug 1, 2026
a01bf51
feat(kinova_vla_test_sim): run the stacking oracle as behavior trees
danwahl Aug 1, 2026
d8da2b6
feat(kinova_vla_test_sim): match the oracle's motion with a joint-spa…
danwahl Aug 2, 2026
6e25146
chore(kinova_vla_test_sim): drop the resolved gripper-action FIXME
danwahl Aug 2, 2026
14d9bd3
test(kinova_vla_test_sim_behaviors): give ROS tests their own domain
danwahl Aug 2, 2026
0129730
feat(kinova_vla_test_sim): record demonstrations the policies can tra…
danwahl Aug 2, 2026
d5bcd57
feat(kinova_vla_test_sim): add training keyframes
danwahl Aug 2, 2026
c4b1338
feat(kinova_vla_test_sim): sweep keyframes into a per-prompt dataset
danwahl Aug 2, 2026
32c5233
fix(kinova_vla_test_sim): give Pro recordings the statistics pi0.5 needs
danwahl Aug 2, 2026
bc2a3e7
docs(kinova_vla_test_sim): restore the flag the OOM workaround needs
danwahl Aug 2, 2026
2288b86
feat(kinova_vla_test_sim): add the five remaining per-prompt recordings
danwahl Aug 2, 2026
8ae6440
docs(kinova_vla_test_sim): serve with --state-dim
danwahl Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ log/
.vscode/
MUJOCO_LOG.TXT
.ccache/
__pycache__/
.pytest_cache/
.venv/
10 changes: 9 additions & 1 deletion docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ services:
base: {}

# Starts the MoveIt Pro Agent and the Bridge between the Agent and the Web UI.
agent_bridge: {}
agent_bridge:
environment:
# /joint_states carries all fifteen joints; the recorded `observation.state`
# must be the eight the policies use. See script/joint_command_bridge.py.
- MOVEIT_PRO_TRAIN_JOINT_STATES_TOPIC=/observed_joint_states

# Starts the robot drivers.
drivers:
Expand All @@ -23,6 +27,10 @@ services:

# Developer specific configuration when running `moveit_pro dev`.
dev:
environment:
# /joint_states carries all fifteen joints; the recorded `observation.state`
# must be the eight the policies use. See script/joint_command_bridge.py.
- MOVEIT_PRO_TRAIN_JOINT_STATES_TOPIC=/observed_joint_states
volumes:
# Allow access to host hardware e.g. RealSense cameras
- /dev:/dev
41 changes: 41 additions & 0 deletions src/moveit_pro_kinova_configs/kinova_vla_test_sim/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
cmake_minimum_required(VERSION 3.22)
project(kinova_vla_test_sim)

find_package(ament_cmake REQUIRED)

install(
DIRECTORY
config
description
launch
objectives
DESTINATION
share/${PROJECT_NAME}
)

install(PROGRAMS
script/get_action_chunk_adapter.py
script/joint_command_bridge.py
DESTINATION lib/${PROJECT_NAME}
)

if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
find_package(ament_cmake_pytest REQUIRED)
set(_pytest_tests
test/test_get_action_chunk_adapter.py
test/test_joint_command_bridge.py)

foreach(_test_path ${_pytest_tests})
get_filename_component(_test_name ${_test_path} NAME_WE)
ament_add_pytest_test(${_test_name} ${_test_path}
APPEND_ENV PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}
TIMEOUT 60
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
endforeach()

ament_lint_auto_find_test_dependencies()
endif()

ament_package()
8 changes: 8 additions & 0 deletions src/moveit_pro_kinova_configs/kinova_vla_test_sim/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# kinova_vla_test_sim

A MoveIt Pro configuration to simulate a Kinova Gen3 (7-DoF) + Robotiq 2F-85 stacking colored cubes in MuJoCo, for testing VLA policy execution.

- `train/`: how the pi0.5 checkpoint is trained, as a config file plus a pinned environment
- `docker/`: how that checkpoint is served to the `Execute Color-Stack Policy` objective

For detailed documentation see: [MoveIt Pro Documentation](https://docs.picknik.ai/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
###############################################################
#
# This configures the robot to work with MoveIt Pro
#
###############################################################

based_on_package: "kinova_sim"

hardware:
simulated: True
launch_control_node: True
launch_robot_state_publisher: True
simulated_hardware_launch_file:
package: "kinova_vla_test_sim"
path: "launch/simulated_extras.launch.py"

robot_description:
urdf:
package: "kinova_vla_test_sim"
path: "description/picknik_kinova_gen3.xacro"
srdf:
package: "kinova_vla_test_sim"
path: "config/moveit/picknik_kinova_gen3.srdf"
urdf_params:
- mujoco_keyframe: "default"
- arm: "gen3"
- dof: "7"
- vision: "false"
- gripper: "robotiq_2f_85"
- use_fake_hardware: "%>> hardware.simulated"
- fake_sensor_commands: "false"
- use_internal_bus_gripper_comm: "false"
- mujoco_model: "description/mujoco/scene.xml"
- mujoco_viewer: false

moveit_params:
joint_limits:
package: "kinova_vla_test_sim"
path: "config/moveit/joint_limits.yaml"

objectives:
behavior_loader_plugins:
kinova_vla_test_sim:
- "kinova_vla_test_sim_behaviors::KinovaVlaTestSimBehaviorsLoader"
objective_library_paths:
colorstack_objectives:
package_name: "kinova_vla_test_sim"
relative_path: "objectives"
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed
# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration]
# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits]
#
# Matches external_dependencies/ros2_kortex/kortex_moveit_config/
# kinova_gen3_7dof_robotiq_2f_85_moveit_config/config/joint_limits.yaml (the vendor's
# own MoveIt config for this arm+gripper combo), rather than kinova_sim's conservative
# sim defaults, so ExecutePolicy's velocity/acceleration gate doesn't reject
# policy-commanded trajectories that are within hardware limits but above the sim
# defaults.
joint_limits:
joint_1:
has_velocity_limits: true
max_velocity: 1.3963
has_acceleration_limits: true
max_acceleration: 8.6
joint_2:
has_velocity_limits: true
max_velocity: 1.3963
has_acceleration_limits: true
max_acceleration: 8.6
joint_3:
has_velocity_limits: true
max_velocity: 1.3963
has_acceleration_limits: true
max_acceleration: 8.6
joint_4:
has_velocity_limits: true
max_velocity: 1.3963
has_acceleration_limits: true
max_acceleration: 8.6
joint_5:
has_velocity_limits: true
max_velocity: 1.2218
has_acceleration_limits: true
max_acceleration: 8.6
joint_6:
has_velocity_limits: true
max_velocity: 1.2218
has_acceleration_limits: true
max_acceleration: 8.6
joint_7:
has_velocity_limits: true
max_velocity: 1.2218
has_acceleration_limits: true
max_acceleration: 8.6
Loading