Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
23 changes: 13 additions & 10 deletions .github/workflows/build_wheels.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,23 @@ on:

jobs:
build_core_wheels:
name: Build core wheels
runs-on: ubuntu-latest
name: Build core wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-14
steps:
- uses: actions/checkout@v4

- name: Build core wheels
uses: pypa/cibuildwheel@v2.22.0
env:
CIBW_ARCHS_LINUX: x86_64
CIBW_BUILD: cp311-* cp312-* cp313-*

- uses: actions/upload-artifact@v4
with:
name: core-wheels
name: core-wheels-${{ matrix.os }}
path: ./wheelhouse/*.whl

build_cpp_extension_wheels:
Expand All @@ -33,15 +36,15 @@ jobs:
extension:
- rcs_fr3
- rcs_panda
- rcs_robotics_library
- rcs_so101

steps:
- uses: actions/checkout@v4

# extensions are built on linux, so they need the linux core wheels
- uses: actions/download-artifact@v4
with:
name: core-wheels
name: core-wheels-ubuntu-latest
path: dist/core

- name: Install root Debian dependencies
Expand Down Expand Up @@ -81,7 +84,6 @@ jobs:
extension:
- rcs_realsense
- rcs_robotiq2f85
- rcs_tacto
- rcs_ur5e
- rcs_usb_cam
- rcs_xarm7
Expand All @@ -90,9 +92,10 @@ jobs:
steps:
- uses: actions/checkout@v4

# extensions are built on linux, so they need the linux core wheels
- uses: actions/download-artifact@v4
with:
name: core-wheels
name: core-wheels-ubuntu-latest
path: dist/core

- name: Install root Debian dependencies
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ jobs:
extension:
- rcs_fr3
- rcs_panda
- rcs_robotics_library
- rcs_so101
runs-on: ubuntu-latest
steps:
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ docs/_build
CLAUDE.md
uv.lock
*.parquet

wheelhouse
74 changes: 74 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,77 @@
## v0.7.3 (2026-10-06)

### Feat

- **yam**: is grasped property
- **YAM**: force limiter for YAM gripper
- **sim**: current gl context for mac
- mac os compilation support
- **wrappers**: gripper prev action obs and threshold
- **scenes**: add zed cameras to droid setup
- new droid camera mount
- added droid zed wrist mount
- added zed2i
- **scenes**: add empty world droid
- add single fr3 mount mesh
- **sim**: adds configureable kp and kv gains for sim robots
- **extensions**: robotiq cli for serials
- **extensions**: robotiq bump
- **franka**: approach before controller start
- **franka**: add policy_rate config option
- add tquat_flange to robot observation
- add flange in sim
- **interface**: add get_cartesian_flange_position
- **franka**: add get_cartesian_flange_position method
- **franka**: tcp offset defaults to desk
- **zed**: added intrinsics cli command
- **fr3/panda**: config for collision values
- **fr3/panda**: add max torque values to config
- **cli**: camera episode video export
- **yaml**: teleop example with cameras
- **yam**: dual arm support
- **yam**: add quest teleop
- yam example
- **extension**: initial yam implementation
- **sim**: yam integration
- **franka**: pd coefficients in controllers
- **franka**: torque safety limit per joint
- **extension**: taxim integration (#319)
- **franka**: added droid setup config

### Fix

- **YAM**: YAM gripper set normalize with uses force
- joint limits in fr3, xarm and so101
- **wrappers**: always send arm commands instead of skipping near-identical ones
- allow only positive frame rate
- **hw**: move rate limit to bottom of stack
- viewer process as deamon to avoid open gui on program close
- **wrappers**: binary prev action obs wrong location
- reset in storage wrapper to pass seed and options
- **sim**: added solref and solimp for cubes
- **assets**: zed2i fovy
- **scenes**: robot frame objects automatically get grav comp prefix
- **sim**: zed2i camera rotation
- **ik**: tcp offset applied correctly in pin forward
- **scenes**: mutation of q_home in empty world fr3
- **examples**: added policy rate to for low level pd controller in franka examples
- pybind pure override
- virtual get_cartesian_flange_position
- **franka**: reset also returns franka state
- **franka**: desk ignore realtime control
- **teleop**: increase quest reqd frequency to avoid alias effect
- **yam**: ruckig version
- **yam**: async
- **franka cli**: untangle home and gripper
- **zed**: remove hidden realsense dependency
- **example**: remove thread for sim inference
- **config**: single arm robot compatible with teleop

### Refactor

- remove unused robotics library extension and urdf assets
- **franka**: use thread safe value class

## v0.7.2 (2026-06-24)

### Fix
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5)
project(
rcs
LANGUAGES C CXX
VERSION 0.7.2
VERSION 0.7.3
DESCRIPTION "Robot Control Stack Library"
)

Expand Down
40 changes: 39 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
PYSRC = python
CPPSRC = src
COMPILE_MODE = Release
WHEELHOUSE = wheelhouse
CORE_WHEELHOUSE = ${WHEELHOUSE}/core
PY_EXT_WHEELHOUSE = ${WHEELHOUSE}/py_extensions
CPP_EXT_WHEELHOUSE = ${WHEELHOUSE}/cpp_extensions
PY_EXTENSIONS ?= rcs_realsense rcs_robotiq2f85 rcs_ur5e rcs_usb_cam rcs_xarm7 rcs_zed
CPP_EXTENSIONS ?= rcs_fr3 rcs_panda rcs_so101
# set to pypi to publish to the real index
PYPI_REPOSITORY ?= testpypi
LINT_EXCLUDE_RUFF = --exclude examples/teleop/SimPublisher
LINT_EXCLUDE_MYPY = 'build|examples/teleop/SimPublisher|examples/inference/franka.py'

Expand Down Expand Up @@ -68,4 +76,34 @@ bump:
commit:
cz commit

.PHONY: cppcheckformat cppformat cpplint gcccompile clangcompile stubgen pycheckformat pyformat pylint ruff mypy pytest bump commit
buildcorewheels:
rm -rf ${CORE_WHEELHOUSE}
cibuildwheel --platform auto --output-dir ${CORE_WHEELHOUSE} .
twine check ${CORE_WHEELHOUSE}/*.whl

uploadcorewheels:
twine upload --repository ${PYPI_REPOSITORY} ${CORE_WHEELHOUSE}/*.whl

buildpyextensionwheels:
rm -rf ${PY_EXT_WHEELHOUSE}
for ext in ${PY_EXTENSIONS}; do \
uv build --wheel --out-dir ${PY_EXT_WHEELHOUSE} extensions/$$ext || exit 1; \
done
twine check ${PY_EXT_WHEELHOUSE}/*.whl

uploadpyextensionwheels:
twine upload --repository ${PYPI_REPOSITORY} ${PY_EXT_WHEELHOUSE}/*.whl

buildcppextensionwheels:
rm -rf ${CPP_EXT_WHEELHOUSE}
rm -rf dist/core && mkdir -p dist/core
cp ${CORE_WHEELHOUSE}/*.whl dist/core/
for ext in ${CPP_EXTENSIONS}; do \
cibuildwheel --platform auto --output-dir ${CPP_EXT_WHEELHOUSE} extensions/$$ext || exit 1; \
done
twine check ${CPP_EXT_WHEELHOUSE}/*.whl

uploadcppextensionwheels:
twine upload --repository ${PYPI_REPOSITORY} ${CPP_EXT_WHEELHOUSE}/*.whl

.PHONY: cppcheckformat cppformat cpplint gcccompile clangcompile stubgen pycheckformat pyformat pylint ruff mypy pytest bump commit buildcorewheels uploadcorewheels buildpyextensionwheels uploadpyextensionwheels buildcppextensionwheels uploadcppextensionwheels
Loading
Loading