rdk-accessories
Skill5 starsChanged 3 months agoApache-2.0View on GitHub
Bring up D-Robotics OFFICIAL finished accessories — GS130W / GS130Wi binocular depth cameras, the RDK IMU Module (Bosch BMI088), and the RDK S100/S600 Camera & MCU-Port expansion boards — selection, wiring/FFC orientation, mounting, and driver/SDK bring-up. Use for these named parts, their launch files, CAN/GMSL/MIPI count, or board support. 触发词:GS130W、GS130Wi、双目相机怎么接、22pin 线序、mipi_cam dual、RDK IMU 模组、BMI088、IMU 读数、IIO 驱动、rdk-imu-module-sdk、S100 相机扩展板、S600 相机扩展板、MCU 扩展板、几路 CAN、几路 GMSL、GMSL 供电、扩展板装在哪块板。Routing — DIY sensor/motor/LED on GPIO/I2C/SPI/PWM → rdk-peripheral-cookbook; board 40PIN/CAN/Ethernet/compute facts → rdk-hardware; unsupported MIPI sensor → rdk-camera-setup; model deploy → rdk-model-deploy; TROS node development has no dedicated Skill: use rdk-docs-reference to search tros_doc.
- Deletes or force-pushes
- Installs packages
2 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- D-Robotics/rdk-device-skillsword for word, first seen Oct 15, 2026
- D-Robotics/dsh-plugin-rdkedited, first seen Aug 28, 2026
Other versions2 projects use a version of this.
Word for word · 1
- D-Robotics/rdk-device-skills★ 4100% same
Edited · 1
- D-Robotics/dsh-plugin-rdk★ 195% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository42 other files it gives its agents.
- bsp-bootloader-buildSkill
- bsp-deb-buildSkill
- bsp-env-setupSkill
- bsp-image-buildSkill
- bsp-kernel-buildSkill
- bsp-rootfs-customSkill
- bsp-source-syncSkill
- bsp-s-seriesSkill
- cmos-sensor-bringupSkill
- rdk-board-delegateSkill
- rdk-board-knowledgeSkill
- rdk-camera-setupSkill
- rdk-command-manualSkill
- rdk-diagnosticSkill
- rdk-docs-referenceSkill
- rdk-ecosystemSkill
- rdk-embodied-lerobotSkill
- rdk-gpio-40pinSkill
- rdk-hardwareSkill
- rdk-headless-modeSkill
- rdk-llm-deploymentSkill
- rdk-log-forensicsSkill
- rdk-memory-auditSkill
- rdk-model-benchmarkSkill
- rdk-model-deploySkill
- rdk-model-zoo-developSkill
- rdk-model-zoo-integrateSkill
- rdk-model-zoo-releaseSkill
- rdk-model-zoo-repoSkill
- rdk-model-zoo-reviewSkill
- rdk-model-zooSkill
- rdk-model-zoo-validateSkill
- rdk-multimediaSkill
- rdk-network-remoteSkill
- rdk-pack-installerSkill
- rdk-peripheral-cookbookSkill
- rdk-skill-finderSkill
- rdk-source-mapSkill
- rdk-system-configSkill
- rdk-system-maintainSkill
- rdk-tros-setupSkill
- rdk-vision-pipelineSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 68
Do not answer from memory — S100 and S600 differ.
- Distinctive: line 102
When answering from this skill, follow these rules — never fabricate facts, commands, or file paths:
- Distinctive: line 105
No fabrication when tools are missing: If a script or reference doesn't exist, say "not found" — don't invent from memory.
- Very specific: line 106
Preserve null/false/empty on failure: If a probe returns null or false, report that — don't substitute a plausible value.
- Very specific: line 107
No substitution off-platform: If off_platform: true, say "probe didn't run on an RDK board" — don't guess what it would have returned.
- Distinctive: line 109
Acknowledge sandbox limits: If you can't run a command, say so — don't pretend you did.
- Very specific: line 110
Read-only boundary: Never modify the system — no dd, mkfs, rm -rf, apt install, reboot, or GPIO output without explicit user confirmation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
RDK Official Accessories
Bring up the four families of D-Robotics finished accessories: the GS130W / GS130Wi binocular cameras, the RDK IMU Module (BMI088), and the S100 / S600 Camera and MCU-Port expansion boards. Every one has an official pinout and an official driver/SDK — that is the line between this skill and DIY peripheral wiring.
Sources: D-Robotics
accessories_doc(GS130Wdocs/01_*, GS130Widocs/02_*, IMU moduledocs/03_*incl.05_software/**) andrdk_s_doc(docs/01_Quick_start/01_hardware_introduction/{01_rdk_s100,02_rdk_s600}/{02_camera,03_mcu_port}_expansion_board.md). Every non-trivial fact below was re-verified against those repos. Specs trace to the official spec sheets / pinlists as the single source of truth.
The one thing that trips people up
There are TWO different IMU chips in this lineup — do not mix them. The standalone RDK IMU Module is a Bosch BMI088 on the 40PIN header. The IMU built into the GS130Wi camera is an InvenSense ICM-42688-P, reached over the right-eye MIPI connector's shared I2C. Different chip → different driver name, IIO device name, registers, and bring-up path. The S100/S600 MCU-Port expansion boards also carry an on-board BMI088 (over SPI). Always confirm which part the user actually has before quoting a driver.
Decision cheat-sheet
| Accessory | Type | Core chip | Interface | Supported boards | Key gotcha |
| GS130W | Binocular depth camera | 2× SC132GS global-shutter | 2× 22-pin MIPI CSI-2 | X5 / X5 Module / S100 / S100P / S600 — NOT X3 (single MIPI only) | No IMU; baseline 80 mm; FFC contacts face away from PCB |
| GS130Wi | Binocular + IMU | 2× SC132GS + ICM-42688-P | 2× 22-pin MIPI + 3-pin IMU timestamp | same as GS130W | Baseline 70 mm; FFC contacts face toward PCB (opposite of GS130W); IMU shares right-eye I2C |
| RDK IMU Module | 6-axis IMU module | Bosch BMI088 | 40PIN (I2C or SPI via jumpers) | X5 / X5 Module direct; S100/S100P/S600 need jumper wiring — NOT X3 | Carries 3 LEDs + buzzer + DS18B20 temp sensor |
| S100 Camera Expansion Board | Expansion board | MAX96712 | 2× MIPI + 4× GMSL | S100 series only | Set SW2201 level (1.8/3.3 V) BEFORE plugging a MIPI camera |
| S600 Camera Expansion Board | Expansion board | 2× MAX96712 | 8× GMSL, NO MIPI | S600 series only | Pure GMSL; DC plug 2.5/5.5 mm (≠ S100's 6 mm) |
| S100/S600 MCU-Port Expansion Board | Expansion board | on-board BMI088 | 5× CAN FD + 30-pin (+ RJ45 on S100 only) | each its own series | S100 IMU "not yet implemented in SDK V4.0.2" |
Full specs, every pinout, SDK/IIO usage, and per-board interface tables: accessories-catalog.md.
Wiring iron rules (read before every plug/unplug)
- Power the board OFF before connecting any FFC/FPC cable. Hot-plugging can arc or mis-seat contacts and destroy the device — the docs repeat this everywhere. FFC is flexible film; never yank it.
- GS130W and GS130Wi insert the FFC in OPPOSITE orientations. GS130W: contacts face away from the PCB. GS130Wi: contacts face toward the PCB. Do not copy one from the other.
- An expansion board fits ONLY its own series. S100 board on S600 (or vice-versa) is forbidden; damage from a non-compatible pairing is not covered. Keep board and daughterboard parallel, seat evenly, then fit the screws.
- GMSL power: each camera draws 12 V from the main board only if ≤700 mA; above 700 mA you MUST add an external 12 V DC adapter (S100 plug 2.5/6 mm; S600 plug 2.5/5.5 mm). Each GMSL port supplies at most 550 mA @ 12 V.
- MIPI logic level must match first. On the S100 Camera board, set SW2201 to the camera's required 1.8 V or 3.3 V before inserting it, or you risk comms failure / damage.
Workflows
Workflow 1 — Bring up GS130W / GS130Wi (TROS)
Use when: "GS130 怎么接", "双目跑哪个 launch", "看双目画面".
- Mount & wire — power OFF, insert both 22-pin FFCs with the correct orientation for this model (see iron rules), seat, screw down.
- Update TROS —
sudo apt update && sudo apt upgrade; check withapt show tros-humble. - Source & launch —
source /opt/tros/humble/setup.bash→ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_image_width:=1280 mipi_image_height:=1088. The official quick-start documents the Humble path (X5/X5M/S100/S100P). On S600 TROS is Jazzy (/opt/tros/jazzy), so source that path instead — confirm the actual install withls /opt/tros. - Web preview — also run
ros2 launch mipi_cam mipi_cam_dual_channel_websocket.launch.py, then openhttp://<RDK-IP>:8000in a PC browser and click the web display.
Backed by hobot_mipi_cam. hobot_sensor auto-adapts the sensor type — its supported list (X5/X5M/S100/S100P) is SC230ai and SC132gs. On S100/S100P the camera must mount through the Camera Expansion Board.
Workflow 2 — Read the RDK IMU Module (BMI088) — pick ONE path
Path A — official rdk-imu-module-sdk (recommended; no IIO dependency, cross-platform):
git clone https://github.com/D-Robotics/rdk-imu-module-sdk(MIT). Needs aarch64, kernel >5.10, user-space I2C/SPI. Deps:sudo apt install build-essential cmake libgpiod-dev python3-pip.- C —
cd core && make→out/test(auto-probes I2C/SPI + address, 400 Hz); runsudo ./out/testormake test.make installto install headers/libs. - Python — build
corefirst, thencd python && make→pip install dist/rdkimu-*.whl;sudo python3 examples/test_imu.py. - ROS2 —
source /opt/tros/*/setup.bash→cd ros2 && colcon build→source install/setup.bash→ros2 launch rdk_imu_module rdk_imu.launch.py. Topic/rdkimu/data(sensor_msgs/msg/Imu).
API call order: bus init → device init → enable → read → disable → deinit. BMI088 accel and gyro are two independent, unsynchronized devices — use read_indep() and check data.accel.valid/data.gyro.valid, or read_fused() for time-aligned 6-axis. The raw SDK read data is accel in m/s² and gyro in °/s (per the C-API doc); only the ROS2 node publishes angular_velocity in rad/s (ROS convention). Timestamps are CLOCK_MONOTONIC ns. Full API details, config reference, code examples, and troubleshooting: imu-sdk-guide.md. Catalog summary: accessories-catalog.md.
Path B — RDK OS BMI088 IIO driver (X5 / X5 Module only, OS image 3.4.x, compatible with 3.5.x):
sudo srpi-config→3 Interface Options→I6 IMU→ selectBMI088-I2C-Interface(or the SPI entry) → reboot.- I2C self-check:
i2cdetect -y -r 5. Read:ls /sys/bus/iio/devices/thencat /sys/bus/iio/devices/iio:deviceN/gyr_val(N as actually enumerated). SPI registration:dmesg | grep BS_LOG.
Workflow 3 — Look up an expansion board's capability
Do not answer from memory — S100 and S600 differ. Read the interface tables in accessories-catalog.md:
- Camera boards: S100 = MAX96712, 2× MIPI + 4× GMSL; S600 = 2× MAX96712, 8× GMSL, no MIPI.
- MCU-Port boards: both carry an on-board BMI088 and 5× CAN FD (≤8 Mbps). S100 has an RJ45 GbE in the MCU domain and IMU on SPI-5; S600 has no RJ45 and IMU on SPI-13. S100 CAN channels are CAN5–CAN9; S600 are CAN1–CAN4 + CAN10.
CAN on S100/S600 lives in the MCU domain via CANHAL, not Linux SocketCAN — see rdk-hardware for the software side.
Worked examples
Example 1 — "GS130Wi 内置的 IMU 是 BMI088 吗?怎么读?"
No. "GS130Wi 内置的是 ICM-42688-P(走右目 MIPI 接口复用的 I2C),不是 BMI088。BMI088 是另一个独立的 RDK IMU 模组,走 40PIN。两者驱动名、IIO 设备名、寄存器都不同,别套用。GS130Wi 的相机用 mipi_cam 那套 launch 跑;它的 IMU 时间戳走那根 3pin 线,是否接由软件决定。"
Example 2 — "S600 的相机扩展板有几路 MIPI?" "S600 相机扩展板是 纯 8 路 GMSL,没有 MIPI 接口(2× MAX96712)。需要 MIPI 双目的话,GS130W/Wi 在 S600 上是直接接主板的,不经这块板。MIPI+GMSL 混合的是 S100 相机扩展板(2× MIPI + 4× GMSL)。两块板不通用。"
Example 3 — "RDK IMU 模组接到 S100 上怎么用?"
"S100 支持但不能直插,需要跳线接 40PIN 的 I2C/SPI(模组上 3×5 排针用跳线帽选 I2C 或 SPI)。读数走官方 rdk-imu-module-sdk(C/Python/ROS2 都行,不依赖 IIO 驱动,适合非 X5 板)。注意:S100 MCU 扩展板上还另有一颗板载 BMI088(SPI-5),但文档注明 RDKS100_LNX_SDK_V4.0.2 暂未实现,别假设开箱即用。"
Example 4 — "GS130W 在 X3 上能用吗?" "不能。GS130W/Wi 需要双路 MIPI,而 X3/X3 Module 只有单路 MIPI,官方列为不支持。支持的是 X5、X5 Module、S100/S100P(需装 Camera 扩展板)、S600。"
Common pitfalls
| ❌ Don't | ✅ Do |
| Assume GS130Wi's IMU is BMI088 | It's ICM-42688-P; only the RDK IMU Module & MCU boards use BMI088 |
| Copy GS130W's FFC orientation onto GS130Wi | Opposite directions — verify per model |
| Hot-plug an FFC with the board powered | Power OFF first, every time |
| Mix an S100 board onto S600 (or vice-versa) | Each board fits only its own series |
| Plug a MIPI camera before setting the level | Set SW2201 to 1.8/3.3 V first |
| Recite launch names / bus numbers / IIO device index from memory | ls, i2cdetect, cat name to confirm first |
| Treat the S100 MCU on-board IMU as ready | SDK V4.0.2 notes it as not yet implemented |
Anti-hallucination guardrails
When answering from this skill, follow these rules — never fabricate facts, commands, or file paths:
- Report only observed data. Quote what scripts/commands actually return, not what you remember. If the probe says
board_id: X5, answer for X5 — even if the user insists it's an S100. - No fabrication when tools are missing. If a script or reference doesn't exist, say "not found" — don't invent from memory. Route to the appropriate skill or doc instead.
- Preserve null/false/empty on failure. If a probe returns
nullorfalse, report that — don't substitute a plausible value. Empty output is data, not an error to "fix". - No substitution off-platform. If
off_platform: true, say "probe didn't run on an RDK board" — don't guess what it would have returned. Ask for on-board logs. - No hand-editing JSON. Scripts emit structured JSON; never hand-craft output. If the contract says
{ok,off_platform,reason,fields}, that's what goes to the user. - Acknowledge sandbox limits. If you can't run a command, say so — don't pretend you did. Offer the command for the user to run.
- Read-only boundary. Never modify the system — no
dd,mkfs,rm -rf,apt install,reboot, or GPIO output without explicit user confirmation.
Reference map
| Read this | When |
| accessories-catalog.md | Full specs, every 22-pin/40-pin/CAN pinout, IMU SDK & IIO usage summary, S100/S600 expansion-board interface and power tables, download links |
| imu-sdk-guide.md | IMU SDK deep dive — rdk-imu-module-sdk full API reference (C/Python/ROS2), rdk_imu_config_t member table, build/install/cross-compile, IIO sysfs interface (BMI088 + ICM-42688-P), code patterns, troubleshooting, performance tuning |
scripts/accessory_lookup.py | Deterministic "which accessory works on board X / what chip / what interface" lookup |
assets/rdk_imu_x5_default_config.txt | The official RDK_IMU_X5_DEFAULT_CONFIG values (GPIO chip/line, ODR, range, FIFO) to copy into an SDK config |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

