Skip to content

Add portable realsense#2322

Open
jeff-hykin wants to merge 3 commits into
mainfrom
jeff/feat/realsense_g1
Open

Add portable realsense#2322
jeff-hykin wants to merge 3 commits into
mainfrom
jeff/feat/realsense_g1

Conversation

@jeff-hykin
Copy link
Copy Markdown
Member

@jeff-hykin jeff-hykin commented Jun 1, 2026

Problem

realsense package breaks on g1's jetson

Solution

Use realsense-extended, which has wheels compiled for the jetson.

How to Test

On a g1

uv pip install realsense-extended
dimos run real-sense-camera

Contributor License Agreement

  • I have read and approved the CLA.

@jeff-hykin jeff-hykin enabled auto-merge (squash) June 1, 2026 19:31
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Jun 1, 2026

Greptile Summary

Replaces the pyrealsense2 PyPI package with pyrealsense2-extended to fix installation failures on the Unitree G1's Jetson board, which lacks pre-built wheels for the standard package. The exclude-newer-package config is updated so uv's 7-day recency filter does not block the freshly-published replacement.

  • pyproject.toml: swaps pyrealsense2pyrealsense2-extended in the manipulation extra (keeping the sys_platform != 'darwin' guard) and adds pyrealsense2-extended = false to exclude-newer-package.
  • uv.lock: reflects the resolved package change, bumping from version 2.56.5.9235 to 2.58.1.10581.post1 and adding manylinux2014_aarch64 wheels alongside the existing x86_64 and Windows wheels.

Confidence Score: 5/5

Safe to merge — this is a targeted dependency swap with no logic changes.

The change is limited to swapping one PyPI package for another that exposes the same pyrealsense2 module name, so all existing import sites in camera.py continue to work unchanged. The exclude-newer-package exemption is correctly set so uv's recency filter does not block the freshly-published wheel. Platform markers and aarch64 wheel availability are both accounted for in the lock file.

No files require special attention.

Important Files Changed

Filename Overview
pyproject.toml Swaps pyrealsense2 for pyrealsense2-extended in the manipulation extra and adds the package to exclude-newer-package so uv's recency filter does not block it.
uv.lock Lock file updated to reflect the new package and its set of platform wheels including aarch64 (Jetson) builds; all hashes and URLs appear consistent with a PyPI-hosted package.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["uv install dimos manipulation"] --> B{"sys_platform != darwin?"}
    B -- Yes --> C["Resolve pyrealsense2-extended"]
    B -- No --> D["Skip RealSense dep"]
    C --> E{"exclude-newer-package check"}
    E -- "pyrealsense2-extended = false" --> F["Bypass 7-day recency filter"]
    F --> G{"Platform?"}
    G -- "x86_64 Linux" --> H["manylinux1_x86_64 wheel"]
    G -- "aarch64 Linux / Jetson" --> I["manylinux2014_aarch64 wheel"]
    G -- "Windows" --> J["win_amd64 wheel"]
    H & I & J --> K["import pyrealsense2 as rs in camera.py"]
Loading

Reviews (2): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile

Comment thread uv.lock
Comment on lines 8604 to 8629
]

[[package]]
name = "pyrealsense2"
version = "2.56.5.9235"
name = "pyrealsense2-extended"
version = "2.58.1.10581.post1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/66/ae/7a39455a9874ee53574315f68bc0dfdc036405811ec9da3c7a2771d46d36/pyrealsense2_extended-2.58.1.10581.post1.tar.gz", hash = "sha256:5093218d1a8a125841d0a7c8565ea8dad16eabc89d925dfbb82bbe76d7a5b30b", size = 2440, upload-time = "2026-05-31T20:13:39.432Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/af/2d/d6d4a12a4af3b944e4ab27850bf1e696fc17fbdccdcd5fbbafadbfbca5a4/pyrealsense2-2.56.5.9235-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:050301dcb13abe49e14449b010732a5b7ec50d0de829c8f8a9356944518d5784", size = 11064623, upload-time = "2025-07-28T14:59:17.835Z" },
{ url = "https://files.pythonhosted.org/packages/4c/de/217f2b669efd3c109aab1846088733d5241550ae9267a49149224f3b5d72/pyrealsense2-2.56.5.9235-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d68a174f5c3bf43d6eef3aac0de114b4802052c8a98a92dcbb8ecca0f98509d4", size = 4338854, upload-time = "2025-07-28T14:59:20.079Z" },
{ url = "https://files.pythonhosted.org/packages/13/36/507114d231a16af6a8836059d8b752a90404020629cb52028cc01a8119b9/pyrealsense2-2.56.5.9235-cp310-cp310-win_amd64.whl", hash = "sha256:c0b097b2b3d340a34fd61ca8c7b46e084ffca490318c4cb7f6af0f8f44f94bd9", size = 7799689, upload-time = "2025-07-28T14:59:21.592Z" },
{ url = "https://files.pythonhosted.org/packages/1f/ab/f2c066a11f632dfcd79b467e728623da9489ed524eb36ec0cc14b497661a/pyrealsense2-2.56.5.9235-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:76d384ea99f257b4697a82cb3581b05cc69fadfd0701021ad76da098a3e240f0", size = 11067319, upload-time = "2025-07-28T14:59:23.129Z" },
{ url = "https://files.pythonhosted.org/packages/c7/c7/c609730c3587c395c3097a98c2d856914997454967bea07b3f8849c4af03/pyrealsense2-2.56.5.9235-cp311-cp311-win_amd64.whl", hash = "sha256:7761f610876c0d0039c9dff71f28ae7e73c77f353f1f3b60fb083350d6acf280", size = 7801923, upload-time = "2025-07-28T14:59:24.986Z" },
{ url = "https://files.pythonhosted.org/packages/fc/20/a46e60a496a17f1cf0cbdffb45e66dc015756e4dbce83580fd569e53e178/pyrealsense2-2.56.5.9235-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:ba2c22981111adbefb169c39e023af4352a2409dfbff59f02c2404c68b82064b", size = 11062766, upload-time = "2025-07-28T14:59:26.551Z" },
{ url = "https://files.pythonhosted.org/packages/22/b5/dd8349abac780aed774f65825fc2ed3ca832b0ad2bf3293262bfa9a517b2/pyrealsense2-2.56.5.9235-cp312-cp312-win_amd64.whl", hash = "sha256:e9c64b94cf6170a3ad60416ff1bf969df8aafe383d4bff14e0fa10b2459d885b", size = 7801788, upload-time = "2025-07-28T14:59:28.303Z" },
{ url = "https://files.pythonhosted.org/packages/a8/66/fa706f1d906a06d5e7015d5b412a48de9914549792eb5cb53c1854e06427/pyrealsense2-2.56.5.9235-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:c203bc8c79d5958889681408f1038ee69b0021fd8cba7ff2d4532fc90295c4fc", size = 11062717, upload-time = "2025-07-28T14:59:30.072Z" },
{ url = "https://files.pythonhosted.org/packages/b2/88/19425ce6fa809d31a8d23f46dfa6aed9b16a881e8a00e0162d4b97ba1e64/pyrealsense2-2.56.5.9235-cp313-cp313-win_amd64.whl", hash = "sha256:ad8012f7fec843c3c6ec8904bfff048806dc7b4c7709e021c6ea75e83d8d5096", size = 7802471, upload-time = "2025-07-28T14:59:31.985Z" },
{ url = "https://files.pythonhosted.org/packages/e2/22/bc5ac6caecaccc90be8409d19b5460d4d138efba935679a0aaf313a19d9e/pyrealsense2_extended-2.58.1.10581.post1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:7bea2cada776665790d48ff6f8d44994e52bdf4f72d65393486802735152e7c2", size = 12393387, upload-time = "2026-05-31T20:49:50.883Z" },
{ url = "https://files.pythonhosted.org/packages/05/94/0471db24eba0ac07a03146a7ad908a96a60a3f724e7b068a6c49d944798c/pyrealsense2_extended-2.58.1.10581.post1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84786588eb44ff9e24eecfdc96f5f3adc891ab54be40e65720b466eb6f237207", size = 6346406, upload-time = "2026-05-31T20:49:52.828Z" },
{ url = "https://files.pythonhosted.org/packages/48/f0/2159f2fa788f2100a4c8e3645747b1889c2dd17abf977d0e042248438805/pyrealsense2_extended-2.58.1.10581.post1-cp310-cp310-win_amd64.whl", hash = "sha256:f3afe733081cd85703dd4df380334ef0e95f43981cb2d5ddcd1f0d0e55116dbd", size = 8751144, upload-time = "2026-05-31T20:49:55.88Z" },
{ url = "https://files.pythonhosted.org/packages/bd/2c/43e599086ce4ad32fee1a46a09ba998c5cbe3c73441091fe2e68cd4517da/pyrealsense2_extended-2.58.1.10581.post1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:3b919fbbd349cc813b98de00c195f3a5fe77fd9d4913c52b040576b11712553c", size = 12395222, upload-time = "2026-05-31T20:49:58.02Z" },
{ url = "https://files.pythonhosted.org/packages/8f/a5/9b8e536de70dfdba9fab17700fe53902c155171911be82ff12106ddca3b8/pyrealsense2_extended-2.58.1.10581.post1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c2f3de9f44b21ac65861c8d53ccc3f8897ac9e6f5e983d26f39744ef6d8c6df2", size = 6350114, upload-time = "2026-05-31T20:50:00.34Z" },
{ url = "https://files.pythonhosted.org/packages/b5/13/6c01b994b713d7dbe010d5b0738266d37689500cf153a9dbee92a40f67ab/pyrealsense2_extended-2.58.1.10581.post1-cp311-cp311-win_amd64.whl", hash = "sha256:c9ad2211261f84057f9776ee35b07f6f87359223d262eb15fcb2bc85ba937a61", size = 8753521, upload-time = "2026-05-31T20:50:01.82Z" },
{ url = "https://files.pythonhosted.org/packages/f8/c1/0b5cd6737dc34e23d57a9da59ba5f18f91bc8238f642f3410f227e603357/pyrealsense2_extended-2.58.1.10581.post1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:e24187e0fd874c67f0de9a2639908fda90e320220f88d1d200307cf632189544", size = 12392172, upload-time = "2026-05-31T20:50:03.661Z" },
{ url = "https://files.pythonhosted.org/packages/22/95/149ec7777fc6545664cc543e4ffaf350976f164edac7f8827405fcf8d421/pyrealsense2_extended-2.58.1.10581.post1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:004634383f25e13c66fa71229184c4ddd1931f7235a19851ef976e9489ad186c", size = 6340752, upload-time = "2026-05-31T20:50:05.61Z" },
{ url = "https://files.pythonhosted.org/packages/a6/9b/f81c8009a3bf8cd2b1d1ce74321c6f8bdb7d7075895fb04800f3795b431d/pyrealsense2_extended-2.58.1.10581.post1-cp312-cp312-win_amd64.whl", hash = "sha256:76ddf1dadd4dd8c542d4249d50dc4507962808f9ae3b6e807f317f319abeead3", size = 8754299, upload-time = "2026-05-31T20:50:09.02Z" },
{ url = "https://files.pythonhosted.org/packages/fc/a8/d3873f31a98ce5fc66cc5f1f906d906a14659b343a618dc2cc410b85031d/pyrealsense2_extended-2.58.1.10581.post1-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:5c45bafa274b5748ff0bbad29c556da113a7861793fedd416de7a03459685fde", size = 12392127, upload-time = "2026-05-31T20:50:11.02Z" },
{ url = "https://files.pythonhosted.org/packages/81/8f/694959c8341e621657c509efcc29302af1147b6928753e3bcb149386d02e/pyrealsense2_extended-2.58.1.10581.post1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a5bd27a4cc5d4cfb48dbbc704602516bcd4867e6a34064d30c9ebbd6090795c2", size = 6341905, upload-time = "2026-05-31T20:50:13.231Z" },
{ url = "https://files.pythonhosted.org/packages/5f/cb/cfbaabc04526523b3447aa40671e9f8d0a8392e2aacfa3deedad4767ba44/pyrealsense2_extended-2.58.1.10581.post1-cp313-cp313-win_amd64.whl", hash = "sha256:e11be341ed664770ce27e45d923eb10dbf9589e73e6c83c270bd78e0d5f7fc30", size = 8754796, upload-time = "2026-05-31T20:50:14.643Z" },
{ url = "https://files.pythonhosted.org/packages/ef/87/d984709551da486736a641c7c3dc376f5c76cdf936818864329216c46b37/pyrealsense2_extended-2.58.1.10581.post1-cp314-cp314-manylinux1_x86_64.whl", hash = "sha256:8140be678f6b6219c54a9ea67a50e6c8ccbbec47fced8d9565df78762c964b54", size = 12849959, upload-time = "2026-05-31T20:50:16.352Z" },
{ url = "https://files.pythonhosted.org/packages/43/fb/a740f2ff2c6b63bd8d5ebd31870f776b2e4e0812f539df4b9f250ab166ed/pyrealsense2_extended-2.58.1.10581.post1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a07f27b3905b7fe277c06a365c5776896fdb48e40d25e951b7da6cfa1899a5b0", size = 6346254, upload-time = "2026-05-31T20:50:18.112Z" },
{ url = "https://files.pythonhosted.org/packages/df/9c/484d914f28d88a441c053b3ced903fb034ace61812c32f3fe785cbe53b97/pyrealsense2_extended-2.58.1.10581.post1-cp314-cp314-win_amd64.whl", hash = "sha256:3a2d5a9ac8894d7a14fdf26a9763830f930f7c7a205c254be04d5880231261d0", size = 8754378, upload-time = "2026-05-31T20:50:19.419Z" },
]

[[package]]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Newly-published package with no established PyPI history

pyrealsense2-extended was uploaded to PyPI on 2026-05-31 — one day before this PR. The sdist is only 2 440 bytes, indicating a thin wrapper over platform-specific compiled wheels. If this is an internally maintained package (e.g. owned by the same team), the risk is low; if it comes from a third party, the complete absence of prior releases means there is no track record to compare against. Could you confirm who maintains this package and whether it intentionally exposes the pyrealsense2 module name so that import pyrealsense2 as rs in dimos/hardware/sensors/camera/realsense/camera.py continues to work?

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant