Duckietown Duckiebot DB21
This lab guides students through the electromechanical assembly, sensor integration, and software deployment of the Duckietown Duckiebot DB21 autonomous differential-drive mobile robot. Powered by an NVIDIA Jetson Nano edge computer and a dedicated motor-and-power carrier board, students assemble the multi-deck chassis and integrate DC gearmotors with quadrature encoders, an inertial measurement unit, a time-of-flight range sensor, front and rear LED signaling arrays, and a wide-angle CSI camera. Learners calibrate camera optical geometry and kinematic drive parameters, configure system communication over fast-mode I2C and network interfaces, and run containerized Robot Operating System (ROS Noetic) pipelines via Docker. Through testing and operation, students gain practical experience in embedded computer vision, visual fiducial detection with AprilTags, state estimation, closed-loop motion control, and fundamental autonomous navigation behaviors such as lane tracking and intersection negotiation.
Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗
Files: db21_box_contents.md · dependencies-apt.txt · dependencies-py3.txt · dt_core_README.md
Readiness checks
-
complete 2026-09-03 18:36 🛡 Cybersecurity: Do not place on an open network · 5 findings 19 searches · 15 pagesview · PDF
Latest report — 2026-09-03 18:36
Readiness: Duckietown Duckiebot DB21
Verdict: Ready with caveats · 2026-09-03 · est. parts cost $524–$817 Cybersecurity — software & network: Do not place on an open network
This is the cold check for this lab — no previous report exists, so every price and stock figure below is the baseline the next run will measure drift against. The robot is a commercial product and you can buy it today: the vendor lists the complete DB-J kit from $429 and sells every custom part separately, so nothing in the bill of materials is unobtainable. Three caveats keep it out of a clean "Ready". The Jetson Nano Developer Kit — the only compute module this lab's software supports — sits on a platform line NVIDIA has formally closed, and now reaches buyers only through marketplace sellers at $95–$387.89. Every Duckietown-specific part (Hut, bumpers, chassis, battery, harnesses) has exactly one supplier worldwide, with no second source to fall back on. And six of the ten representative fastener part numbers recorded in the snapshot are stocked by no ECIA-authorized distributor — all commodities with easy equivalents, but the documented part numbers are going stale.
Action required
| Part | Problem | Recommended action |
|---|---|---|
| NVIDIA Jetson Nano Developer Kit | Platform end-of-life: NVIDIA's Jetson Linux R32.7.6 page states "Jetson Linux R32.7.6 with JetPack 4.6.6 marks the final release for Jetson Linux R32 and JetPack 4". No authorized-distributor stock found; marketplace prices range $95.00–$387.89 for nominally the same kit. | Buy now for any class you intend to run in the next few years, and buy spares — supply only tightens from here. Verify each listing is a new, authentic 4GB unit (official SKU 945-13450-0000-100 was priced at $175.00). Plan the eventual migration to the vendor's DB26-J (Jetson Orin Nano, $749) as a lab rebuild, not a part swap. |
| Spacer M6 x 12 x 1.5 mm | The snapshot's representative part number is mis-specified, not merely unstocked: Essentra 17W06001 is a "FLAT WASHER, .500 ID, .600 OD" — a 12.7 mm bore that cannot accept an M6 fastener. ECIA shows 0 distributors with stock and a 4-week factory lead time. | Ignore the recorded part number and buy any M6 x 12 x 1.5 mm nylon or metal washer, which is what the lab actually requires. Correct the part number in the lab's documentation. |
| Nylon screw M2 x 8, nylon screw M2.5 x 12, nylon nut M2.5, nylon nut M2, metal nut M3, metal screw M3 x 30 | Six representative MPNs (Essentra 012008005303, 012512005303, 042500000003, 042000000003, Würth 709303000, Bulten M3X30 DIN 7985) returned no DigiKey product and no ECIA-authorized distributor. | All are commodities with wide latitude in the snapshot. Buy a nylon metric assortment (from $5.71) plus an M2.5-specific kit for the 14-off screw line, and standard DIN 7985 M3 x 30 mm stainless screws (from $1.45). |
| Camera mount | Easy ordering mistake: the vendor's chassis page states "The camera mount is not included in this chassis set", and the camera's calibration geometry depends on this bracket. | Order it separately from "Duckiebot (DB-J) individual chassis components" ($7) whenever you buy the $45 chassis set. |
| Duckiebattery | Specification conflict: the snapshot calls for "minimum 4.5 A total output capacity across ports", but the vendor's own page for the actual part says "2x USB type A 5V at up to 4A combined". | Use the genuine Duckiebattery ($69). Do not size a third-party power bank against the snapshot's 4.5 A figure — it appears to be an error in the lab's documentation. |
Cybersecurity — software & network
Do not place on an open network — Two unauthenticated network services (a remote Docker daemon that grants root-equivalent control and an open ROS 1 message bus) sit on an end-of-life ROS release, and none of it has a fix beyond network isolation.
| Component | Version | How known | Support status |
|---|---|---|---|
| Ubuntu Linux (NVIDIA JetPack / L4T on Jetson Nano) | 18.04 | inferred (Not stated in the lab's own files; inferred from the Jetson Nano platform the snapshot specifies — the final JetPack/L4T line that supports the Nano ships a filesystem based on Ubuntu 18.04) | extended/LTS support only until 2028-04-26 |
| ROS Noetic Ninjemys | noetic | inferred (snapshot: the lab's documentation names ROS Noetic Ninjemys; no version file pinning it was fetched) | unsupported since 2025-05-01 |
| Docker Engine | not determined | not determined | — |
| Duckietown Shell (dts) | not determined | unpinned (snapshot: host CLI whose dependencies are resolved and pulled dynamically at run time) | — |
| ruamel.yaml | 0.18.5 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| comptests-z6 | 6.0.4 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| procgraph-z6 | 6.1.9 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| ros-node-utils | 2.0.0 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| compmake-z6 | 6.1.5 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| filterpy | 1.4.5 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| simple-pid | 2.0.1 | inferred (dependencies-py3.txt declares the range <=2.0.1, not an exact pin; 2.0.1 is the ceiling of that range) | — |
| numpy-quaternion | 2023.0.4 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| dt-apriltags | 3.1.7 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| duckietown-utils-ente | 7.0.0 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| lib-dt-modeling | 0.0.5 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| lib-dt-motion-planning | 0.0.1 | read from project (dependencies-py3.txt (duckietown/dt-core@ente)) | — |
| lib-dt-computer-vision | not determined | unpinned (dependencies-py3.txt installs it from git branch @ente with no commit hash, so the code installed changes over time) | — |
| lib-dt-state-estimation | not determined | unpinned (dependencies-py3.txt installs it from git branch @ente with no commit hash, so the code installed changes over time) | — |
| ROS and system APT packages (dependencies-apt.txt) | not determined | unpinned (24 of 24 entries in dependencies-apt.txt carry no version constraint; whatever the distribution serves at build time is installed) | — |
| Component | Finding | Severity | Fix available? |
|---|---|---|---|
| Docker Engine | The robot's Docker daemon is reachable over the network so the workstation can drive containers with docker -H |
posture | Mitigation only — keep the robots on an isolated lab network or VLAN, and enable Docker's TLS client-certificate authentication (port 2376) instead of the plain TCP socket (2375). |
| ROS and system APT packages (dependencies-apt.txt) | Dependencies unpinned: 24 of 24 in dependencies-apt.txt — including the network-facing ros-noetic-* packages — so the versions actually installed change with the distribution and have no checkable security state. | posture | Mitigation only — pin versions / use the lockfile |
| ROS distributed network | ROS 1 master and node traffic crosses the network to remote diagnostic tools with no authentication or encryption, so anyone on the same network can read the robot's camera and sensor topics or publish to its motor topics. | posture | Mitigation only — run the robots on an isolated network segment and do not expose the ROS master beyond it. |
| ROS Noetic Ninjemys | ROS Noetic reached end of life on 2025-05-01, so the middleware the whole robot runs on receives no further security fixes from upstream. | posture | No — requires platform migration |
| SSH service | An SSH daemon listens on port 22 and the lab's documentation hands students a standard account name (duckie@ |
posture | Mitigation only — set a unique strong password or key-only authentication on every robot before it joins a network. |
What this means for your lab
Treat these robots as untrusted devices and keep them off the campus network. Each Duckiebot answers to SSH on the usual port with a standard student account whose password the course materials never state, and its Docker service accepts commands over the network with nothing in the lab's setup requiring a password or certificate — between them, anyone else on the same Wi-Fi can log in or start their own software on the robot with full administrative rights. The ROS messaging the robot uses for its camera, sensors and motors is also unauthenticated, so a bystander on that network can watch the camera feed or send the robot driving commands. Nothing here is a flaw in the robot's own Python libraries: all eleven pinned Python packages were checked against the vulnerability database this run and came back clean. The problems are the setup and its age — the ROS Noetic release everything runs on stopped receiving security fixes in May 2025, and the Ubuntu base is past its ordinary support window. The practical answer is a dedicated, isolated Wi-Fi network or VLAN for the Duckiebots that does not reach the rest of the campus, a unique password set on every robot before it is switched on in a shared space, and a conversation with campus IT before any of these devices touch an institutional network.
Not checked
- ROS and system APT packages (24 entries in dependencies-apt.txt): Unpinned — no exact version to check against an advisory database.
- simple-pid: dependencies-py3.txt declares a range (<=2.0.1) rather than an exact pin, so no single version could be checked.
- lib-dt-computer-vision, lib-dt-state-estimation: Installed from a git branch (@ente) with no commit hash; there is no released version to look up.
- Docker Engine: Version not stated anywhere in the lab's files.
- Duckietown Shell (dts): Version not stated; its dependencies are resolved dynamically at run time.
- Ubuntu Linux / JetPack board-support package: The lab's files do not state the JetPack or L4T version, so only the Ubuntu base could be placed on a support cycle and the vendor kernel and drivers were not checked.
Parts
Compute, Carrier Boards, and Active Electronics
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| NVIDIA Jetson Nano Developer Kit | 2GB or 4GB SBC, 5 V rail, 2–4 A | Obsolete platform; available but overpriced | Marketplace only; no authorized stock found | $175.00 (SKU 945-13450-0000-100) — range $95.00–$387.89 | Google Shopping |
| Duckietown Hut v3.15 | Custom carrier / motor+LED driver PCB | Readily available (sole source) | Listed | $35.00 | Duckietown store |
| Front Bumper (FB) PCB | Custom curved LED PCB | Readily available (sole source) | Listed | $14.00 | Duckietown store |
| Back Bumper (BB) PCB | Custom curved LED PCB | Readily available (sole source) | Listed | $14.00 | Duckietown store |
| Inertial Measurement Unit (IMU) | I2C breakout, 3.3 V | not checked — ships in kit, no standalone SKU | — | — | — |
| Time of Flight (ToF) Range Sensor | VL53L0X/VL53L1X family, I2C | not checked — ships in kit, no standalone SKU | — | — | — |
| Jetson Nano Camera Module | Wide-angle CSI-2, cable attached | Readily available (sole source) | Listed | $24.00 | Duckietown store |
| DC Motors with Encoders (x2) | 5 V DC, 137 ticks/rev, metal or plastic shaft | Readily available (sole source) | Listed | $10.00 each | Duckietown store |
| Auxiliary Status Screen | I2C OLED/LCD module | not checked — ships in kit, no standalone SKU | — | — | — |
| Shutdown Button | Momentary NO push button + harness | not checked — ships in kit, no standalone SKU | — | — | — |
| DC Cooling Fan | 5 V, 40x40x10 mm axial | Readily available | In stock | $1.85 — 2-pack $9.49 | Google Shopping |
Power Supply, Networking, and Storage
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| Duckiebattery | 10 Ah at 3.7 V (37 Wh); 2x USB-A 5 V up to 4 A combined; pass-through | Readily available (sole source) — see spec note in Action required | Listed | $69.00 | Duckietown store |
| Wi-Fi Dongle | USB-A, 802.11ac dual band | Plausible, unverified — Linux for Tegra driver support not confirmed | In stock | $12.99 (Cudy AC1300) — range $7.99–$29.99 | Google Shopping |
| Micro SD Card, 64 GB Class 10 U3 | MicroSDXC, UHS-I U3 | Readily available | In stock | $29.23 (SanDisk Extreme SDSQXVF-064G-AN6MA) — from $12.99 | Google Shopping |
| Micro SD to USB Adapter | USB-A card reader | Readily available | In stock | $5.99 (Lexar USB 3.2) | Google Shopping |
Chassis Structural Components and Mechanics
The vendor sells the chassis two ways: the Complete Duckiebot Chassis (DB-J) at $45 (three sheets of acrylic), or individual chassis components from $7.
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| Bottom deck | Laser-cut acrylic plate | Readily available | Listed | In $45 chassis set | Duckietown store |
| Lower lateral supports (x2) | Vertical side plates | Readily available | Listed | In $45 chassis set | Duckietown store |
| Middle deck | Horizontal mounting deck | Readily available | Listed | In $45 chassis set | Duckietown store |
| Upper-left lateral support | Vertical structural plate | Readily available | Listed | In $45 chassis set | Duckietown store |
| Upper-right lateral support | Vertical structural plate | Readily available | Listed | In $45 chassis set | Duckietown store |
| Back support | Vertical rear plate | Readily available | Listed | In $45 chassis set | Duckietown store |
| Top deck | Top mounting platform | Readily available | Listed | In $45 chassis set | Duckietown store |
| Back pattern plate | AprilTag mounting plate | Readily available | Listed | In $45 chassis set | Duckietown store |
| Motor mounts (x2) | Gearmotor brackets | Readily available | Listed | In $45 chassis set | Duckietown store |
| Camera mount | Angled calibrated bracket | Readily available — NOT in the chassis set | Listed | From $7 (individual components) | Duckietown store |
| Omni-wheel (rear caster) | Omnidirectional caster; v3 uses an updated design | not checked — in kit, not in the chassis set, no standalone SKU | — | — | — |
| Front wheels (x2) | Rubber-treaded drive wheels on D-shafts | not checked — in kit, no standalone SKU | — | — | — |
Wiring Harnesses and Interconnects
All ten harness lines appear in the vendor's published "What's in the box" contents for the DB-J kit, but none is sold under a standalone SKU in the public catalogue, so none could be independently priced this run. Obtain them as vendor spares.
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| Camera cable | CSI-2 FFC, 15-pin 1.0 mm pitch | not checked separately — the $24 camera ships "with attached cables of appropriate length for each robot model" | — | — | — |
| Jetson to Battery cable | USB-A to DC barrel, ≥ 3 A | not checked — no standalone SKU | — | — | — |
| Battery to HUT (Ext5V) power cable | USB-A to polarized connector, ≥ 2 A | not checked — no standalone SKU | — | — | — |
| HUT to Battery charging cable | Charging harness | not checked — no standalone SKU | — | — | — |
| HUT to BB cable | Multi-conductor keyed harness | not checked — no standalone SKU | — | — | — |
| Motor to HUT cables (x2) | 6-wire motor + encoder harness | not checked — no standalone SKU | — | — | — |
| FB to ToF cable | 4/6-pin I2C interconnect | not checked — no standalone SKU | — | — | — |
| HUT to FB, IMU cable (x3) | I2C + power harness | not checked — no standalone SKU | — | — | — |
| Screen to HUT cable | 4-wire I2C ribbon | not checked — no standalone SKU | — | — | — |
| Button to HUT cable | 2-wire harness | not checked — no standalone SKU | — | — | — |
Fasteners, Hardware, and Spacers
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| Metal stand-off M2.5 x 18 mm + 6 mm M-F (x3) | Würth Elektronik 970180244, Active | Readily available | 1,126 | $0.81 | DigiKey |
| Metal hexagon stand-off M3 25 mm F-F (x3) | Würth Elektronik 970250324, Active | Readily available | 824 | $0.92 | DigiKey |
| Spacer M6 x 12 x 1.5 mm (x2) | Snapshot example Essentra 17W06001 is a ".500 ID, .600 OD" flat washer — does not match M6 | Representative MPN mis-specified; requirement itself is a commodity | 0 across 5 ECIA distributors, 4-week lead time | $0.04943 (17W06001, spec mismatch) | DigiKey / ECIA |
| Nylon screw M2 x 8 mm (x4) | Essentra 012008005303 — no product, no ECIA distributor | Exact MPN unavailable; commodity substitute | — | Assortment from $5.71 | Google Shopping |
| Nylon screw M2.5 x 12 mm (x14) | Essentra 012512005303 — no product, no ECIA distributor | Exact MPN unavailable; commodity substitute | — | M2.5 Nylon Screw/Nut Kit (100) $14.99 | Google Shopping |
| Round head tapping screws metal 3 x 20 mm (x2) | Self-tapping, 3 mm x 20 mm | not checked — no lookup dispatched | — | — | — |
| Metal screw M3 x 30 mm (x4) | Snapshot example Bulten M3X30 DIN 7985 — no product, no ECIA distributor | Exact MPN unavailable; commodity substitute | — | $1.45 (DIN 7985A stainless) | Google Shopping |
| Metal screw M3 x 12 mm (x30) | DIN7985M3X12A2-70 (Honeywell), Active, "PAN HEAD MACHINE SCREW; ISO 7045" | Available; no stock figure reported | Not reported | $0.6006 | DigiKey |
| Metal nut M3 (x30) | Würth Elektronik 709303000 — no product, no ECIA distributor | Exact MPN unavailable; commodity substitute | — | In metric assortment from $5.71 | Google Shopping |
| Nylon nut M2.5 (x16) | Essentra 042500000003 — no product, no ECIA distributor | Exact MPN unavailable; commodity substitute | — | M2.5 Nylon Screw/Nut Kit (100) $14.99 | Google Shopping |
| Nylon nut M2 (x4) | Essentra 042000000003 — no product, no ECIA distributor | Exact MPN unavailable; commodity substitute | — | In metric assortment from $5.71 | Google Shopping |
Tools, Calibration Artifacts, and Ephemera
All seven ship with the kit; none was separately priced this run.
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| Cross screwdriver | PH0 / PH1 Phillips | not checked — commodity, no lookup dispatched | — | — | — |
| Camera calibration pattern | Rigid 1:1 printed checkerboard/AprilTag target | not checked — printable artifact, no hosted file located | — | — | — |
| Back pattern sticker | AprilTag 36h11, per-vehicle ID | not checked — vehicle-specific, not a generic purchase | — | — | — |
| FCC label sticker | Regulatory label | not checked — informational only | — | — | — |
| Duckies (x2) | Miniature rubber ducks | not checked — commodity, no lookup dispatched | — | — | — |
| Instructions card | Printed leaflet | not checked — ships with kit | — | — | — |
| Duckietown Stickers (x2) | Adhesive decals | not checked — cosmetic only | — | — | — |
Substitutes
| For part | Substitute | Differences | Verified | Judgment |
|---|---|---|---|---|
| NVIDIA Jetson Nano Developer Kit | Jetson Orin Nano, as the vendor's DB26-J $749, or the Orin Nano Super Developer Kit $399.00 | Different GPU architecture (Ampere vs the Maxwell GPU the dt-core image relies on), different Tegra driver line, different JetPack major version. The snapshot requires "an NVIDIA Jetson Nano (2GB or 4GB) or pin-compatible Jetson carrier". | verified: end-of-life status of the JetPack 4 / L4T R32 line supporting Jetson Nano (NVIDIA L4T R32.7.6 release page, fetched this run); retail prices (Google Shopping, this run). not verified: mechanical or electrical pin compatibility of any Orin carrier with Hut v3.15 — no parametric evidence obtained. | HARD STOP as a part-level swap. The DB26-J is a whole-lab migration path, not a drop-in replacement for this BOM. |
| Spacer M6 x 12 x 1.5 mm | Any M6 x 12 x 1.5 mm nylon or metal washer | The snapshot's own latitude is "any nylon or metal washer with matching M6 clearance and 1.5 mm thickness". The recorded MPN (17W06001, ".500 ID, .600 OD") does not meet that spec — a generic M6 washer meets it better than the documented part. | verified: lifecycle, price and distributor stock for 17W06001 and 17W06001B (DigiKey + ECIA, this run). not verified: dimensional match to M6 x 12 x 1.5 mm — the only dimensional data returned contradicts it, and DigiKey returned no parameters block for either part. | Acceptable. The documented part number is the defect; the requirement itself is a hardware-store commodity. |
| Nylon screw M2 x 8 mm; nylon nut M2; metal nut M3 | Nylon/metric fastener assortment, 150 pcs M2–M5, $5.71; also 150 pcs kit $8.55 | Thread sizes and non-conductive nylon material match the snapshot's stated latitude ("any non-conductive nylon M2 x 8 mm screw", "standard M3 hex nut"). No electrical or mechanical requirement beyond thread and material. | verified: the exact MPNs are stocked by no ECIA-authorized distributor (DigiKey + ECIA, this run), and these assortments are currently offered at the listed prices (Google Shopping, this run). not verified: that any specific assortment contains the M2 x 8 mm length or the M3 nut count needed — no product page was fetched. | Acceptable with a caveat: confirm the length and count breakdown on the listing before ordering for a class set. |
| Nylon screw M2.5 x 12 mm; nylon nut M2.5 | M2.5 Nylon Screw/Nut Kit (100), $14.99; Adafruit black nylon M2.5 screw and stand-off set, $16.95 | M2.5 thread and nylon material match the snapshot's latitude. This is the highest-count nylon line in the BOM (14 screws, 16 nuts), so a dedicated M2.5 kit is the sensible buy rather than a mixed assortment. | verified: exact MPNs unstocked (DigiKey + ECIA, this run); kit prices current (Google Shopping, this run). not verified: that either kit contains the 12 mm length specifically — no product page was fetched. | Acceptable with a caveat: check the 12 mm length is included before ordering. |
| Metal screw M3 x 30 mm | DIN 7985A stainless M3 pan head, $1.45; stainless DIN 7985 M3 x 30 mm, $2.02 | Same DIN 7985 pan-head standard and M3 x 30 mm dimensions the snapshot names; stainless rather than an unstated Bulten finish. The snapshot's latitude is "standard M3 x 30 mm pan or socket head machine screw". | verified: no authorized-distributor listing for the representative MPN (DigiKey + ECIA, this run); DIN 7985 M3 x 30 mm stainless screws currently offered at the listed prices (Google Shopping, this run). not verified: head drive type and material grade of the specific listings — neither product page was fetched. | Acceptable. Dimensionally and standards-wise a match to what the lab specifies. |
Verify any substitute against its datasheet or product listing before ordering — the "not verified" claims above were not confirmed by this check.
Other dependencies
- Online hardware store — live.
https://get.duckietown.com/products/duckiebot-db21was fetched this run and returns the DB-J product with its full published contents; the vendor's catalogue prices it from $429. The specific?variant=41543707099311id recorded in the snapshot was not separately confirmed — variant ids are volatile, so order from the product page rather than the stored deep link. - A newer robot model now exists. The vendor lists Duckiebot (DB26-J) at $749: "This DB26J model is the latest of the Jetson line and supports Jetson Orin Orin Nano Developer kits." Worth tracking as the eventual replacement platform for this lab.
- PCB fabrication — not applicable in practice. The snapshot records that Gerbers, schematics and layer counts for the Hut, FB and BB boards are absent from the source repository. That is not a blocker: all three are sold as finished goods at the prices above, so there is a purchase path rather than a fabrication path.
- Chassis fabrication — not applicable in practice. The snapshot records that CAD vector drawings are not included in the package. The vendor sells the finished chassis; its product page describes the $45 complete set as three sheets of acrylic.
- Camera calibration pattern — not checked. A printable artifact requiring exact 1:1 scale on rigid, non-reflective stock. No hosted file was located or fetched this run.
- Back pattern sticker (AprilTag 36h11) — not checked. Tied to a per-vehicle ID rather than a catalogue item.
Watch list
- NVIDIA Jetson Nano Developer Kit — the single biggest risk to this lab. Its software line is formally closed, no authorized distributor stocks it, and marketplace prices already span $95.00–$387.89 for nominally the same product. Expect prices to climb and authenticity to get harder to judge. Buy spares now.
- Duckiebattery — sole-sourced, and no generic power bank can be shown from search evidence to meet the simultaneous-high-current and USB-diagnostics requirements the dt-core battery driver expects. A supply gap here has no workaround.
- Every Duckietown-proprietary part (Hut v3.15, FB/BB bumper PCBs, chassis set, camera, motors, and all ten harnesses) — one vendor worldwide, no second source. The harnesses are the weakest link: they are not even individually listed in the public catalogue.
- The snapshot's fastener part numbers — six of ten representative MPNs are already unstocked by every ECIA-authorized distributor, and the M6 spacer number is simply wrong. These should be corrected in the lab's documentation rather than re-checked each run.
- Wi-Fi dongle driver support — the substitution hinges on in-kernel Linux for Tegra support, which was not verified this run. If the kit's original dongle becomes unavailable, confirm the chipset against the kernel before buying a class set.
- Omni-wheel revision — the snapshot notes the DB21J4(v3) revision after September 2025 uses an updated omnidirectional wheel design; confirm which revision a replacement matches.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.
This lab builds the Duckietown Duckiebot DB21 (model DB21-J4 / DB21J4(v2)), an autonomous differential-drive ground mobile robot designed for autonomous lane-following, intersection negotiation, AprilTag localization, and fleet coordination using ROS Noetic and the Duckietown dt-core software stack. The robot is powered by a dedicated 5 V DC lithium battery pack (Duckiebattery) supplying power across two primary branches: directly to an NVIDIA Jetson Nano single-board computer (2GB or 4GB variant) via a dedicated DC power cable, and to the Duckietown Hut v3.15 carrier board via an external 5 V power cable (HUT Ext5V). The Hut v3.15 PCB performs power distribution, drives two DC gearmotors with encoders, provides step-down/regulated logic supplies (5 V and 3.3 V rails), and routes communications over an I2C bus clocked at 400 kHz (Fast-mode) to front/back bumper indicator PCBs, a Time-of-Flight (ToF) range sensor, an Inertial Measurement Unit (IMU), an auxiliary status screen, and a momentary shutdown button.
Bill of Materials
Compute, Carrier Boards, and Active Electronics
Identity: NVIDIA Jetson Nano Developer Kit, 2GB or 4GB variant (JN2 or JN4) or kit variant without Jetson. Quantity: 1 Footprint/package: Single-board computer module mounted on carrier with edge connectors and heatsink. Electrical constraints: 5 V DC input rail via micro-USB or 2-pin barrel/header connector; typical draw 2 A to 4 A (10 W power mode). Logic rail operates at 3.3 V CMOS. Substitution latitude: Must be an NVIDIA Jetson Nano (2GB or 4GB) or pin-compatible Jetson carrier. Software images (dt-core JetPack Docker stack) rely specifically on the Maxwell GPU, Tegra Linux driver architecture, and NVIDIA JetPack L4T runtime. Raspberry Pi is referenced only as legacy. Student-operated control: No. Sourcing plan: retail shopping search: NVIDIA Jetson Nano Developer Kit 4GB or 2GB.
Identity: Duckietown Hut v3.15 Carrier / Motor Driver Board. Quantity: 1 Footprint/package: Custom proprietary shield/carrier PCB matching the Duckiebot chassis mounting holes with terminal blocks, I2C JST/pin headers, motor driver circuitry, and power routing connectors. Electrical constraints: 5 V DC supply input via Battery to HUT (Ext5V) connector; motor rail drives 5 V DC motors; regulated 3.3 V / 5 V sensor logic rails; 400 kHz I2C bus (i2c-1). Substitution latitude: Proprietary custom hardware. Cannot substitute with an off-the-shelf motor shield without rewiring all bumper, screen, button, sensor, and motor harness connections. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown Hut v3.15.
Identity: Front Bumper (FB) PCB. Quantity: 1 Footprint/package: Custom curved PCB mounting to the front chassis deck with addressable/flashing indicator LEDs and passthrough wiring headers for IMU and ToF sensors. Electrical constraints: 5 V / 3.3 V DC logic and LED drive; I2C communications bus. Substitution latitude: Must be the Duckietown FB PCB. Geometry aligns with chassis front profile and light-emitting pattern required for optical stop sign / traffic light negotiation. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown Front Bumper FB PCB.
Identity: Back Bumper (BB) PCB. Quantity: 1 Footprint/package: Custom curved PCB mounting to the rear chassis deck with rear indicator LEDs. Electrical constraints: 5 V / 3.3 V DC logic and LED drive; connected to Hut v3.15 via dedicated harness. Substitution latitude: Must be the Duckietown BB PCB. Optical vehicle-to-vehicle tracking and signal negotiation depend on the exact LED geometry and spacing. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown Back Bumper BB PCB.
Identity: Inertial Measurement Unit (IMU) Module. Quantity: 1 Footprint/package: Breakout board module with mounting holes and multi-pin harness connector. Electrical constraints: 3.3 V DC supply/logic; communicates via I2C interface to Hut/Jetson. Substitution latitude: Must match the I2C register map expected by the Duckietown dt-core flight_controller_node / IMU calibration driver service. Student-operated control: No. Sourcing plan: general web research: Duckietown IMU sensor module DB21.
Identity: Time of Flight (ToF) Range Sensor Module. Quantity: 1 Footprint/package: Miniature optical sensor breakout board mounted to the chassis underside/front bumper facing down/forward. Electrical constraints: 3.3 V / 5 V DC supply; I2C communication bus exposed to ROS topic bottom_tof_driver_node/range/range. Substitution latitude: Must match the driver expectations of dt-core (typically VL53L0X or VL53L1X family). Student-operated control: No. Sourcing plan: general web research: Duckietown Time of flight ToF sensor DB21.
Identity: Jetson Nano Camera Module. Quantity: 1 Footprint/package: Fixed-focus wide-angle / fisheye camera module on small mounting PCB with CSI-2 ribbon interface (or USB equivalent). Electrical constraints: 3.3 V CSI-2 MIPI interface from Jetson Nano camera port. Substitution latitude: Wide-angle lens is required for lane-following line detection. Must be compatible with NVIDIA JetPack CSI v4l2 drivers (commonly Sony IMX219 sensor). Student-operated control: No. Sourcing plan: retail shopping search: Jetson Nano wide angle CSI camera IMX219.
Identity: DC Motors with Encoders. Quantity: 2 Footprint/package: Micro metal or plastic gearmotor assembly with integrated quadrature magnetic/optical encoder board and wiring leads. Electrical constraints: Nominal 5 V DC operating voltage; encoder logic at 3.3 V or 5 V; connected to Hut v3.15 motor ports. Substitution latitude: Must physically fit the DB21 motor mounts and match wheel shaft diameter and gear ratio; encoder tick resolution must match motor driver odometry calculations. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown DB21 DC motor with encoder.
Identity: Auxiliary Status Screen. Quantity: 1 Footprint/package: Small form-factor display module (OLED/LCD, typically 0.91 or 0.96 inch I2C) with multi-conductor harness connector. Electrical constraints: 3.3 V or 5 V DC supply; I2C bus connection to Hut v3.15. Substitution latitude: Must match the display controller IC and communication protocol utilized by the Duckietown display daemon. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown DB21 status screen display.
Identity: Shutdown Button. Quantity: 1 Footprint/package: Panel-mount momentary push-button switch with wire harness connector. Electrical constraints: Dry contact closure to ground / pull-up sensing pin on Hut v3.15. Substitution latitude: Any momentary normally-open push button with mating lead harness. Student-operated control: Yes; pressed by students to trigger controlled operating system shutdown. Sourcing plan: retail shopping search: Duckietown DB21 shutdown button.
Identity: DC Cooling Fan. Quantity: 1 Footprint/package: 40 mm or 30 mm miniature 5 V axial DC fan mounting to the Jetson Nano heatsink. Electrical constraints: 5 V DC supply, 2-pin or 3-pin connector. Substitution latitude: Any 5 V DC fan fitting the Jetson Nano heatsink screw pitch. Student-operated control: No. Sourcing plan: retail shopping search: 5V cooling fan for Jetson Nano heatsink.
Power Supply, Networking, and Storage
Identity: Duckiebattery. Quantity: 1 Footprint/package: Custom high-current portable battery pack with dual USB-A / DC power output ports and internal charge control circuitry. Electrical constraints: 5 V DC output, minimum 4.5 A total output capacity across ports; accepts charging via HUT to Battery charging cable. Substitution latitude: Requires a 5 V USB power bank capable of simultaneous high-current draw (at least 3 A on Jetson port, 1.5 A on Hut port) without auto-shutoff at light loads. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown Duckiebattery.
Identity: Wi-Fi Dongle. Quantity: 1 Footprint/package: USB Type-A wireless network adapter. Electrical constraints: 5 V USB bus powered; 2.4 GHz / 5 GHz 802.11n/ac. Substitution latitude: Any Linux-compatible USB Wi-Fi dongle supported out-of-the-box by Linux for Tegra / Ubuntu kernel without external out-of-tree driver compilation. Student-operated control: No. Sourcing plan: retail shopping search: Linux compatible USB WiFi dongle 802.11ac.
Identity: Micro SD Card, 64 GB Class 10 U3. Quantity: 1 Footprint/package: MicroSDXC card. Electrical constraints: Standard SD bus voltage (3.3 V). Minimum Class 10 / UHS-I Speed Class 3 (U3) rated to handle continuous Docker image read/write operations. Substitution latitude: Any reputable 64 GB or larger MicroSD card meeting Class 10 U3 / A1 or A2 application performance standards. Student-operated control: No. Sourcing plan: retail shopping search: 64GB Micro SD Card Class 10 U3.
Identity: Micro SD to USB Adapter. Quantity: 1 Footprint/package: USB-A dongle card reader for MicroSD cards. Electrical constraints: USB 2.0 / 3.0 standard. Substitution latitude: Any functional MicroSD to USB-A/USB-C reader. Student-operated control: No. Sourcing plan: retail shopping search: Micro SD to USB adapter reader.
Chassis Structural Components and Mechanics
Identity: Bottom deck. Quantity: 1 Footprint/package: Laser-cut or CNC-machined flat plate with specific mounting cutouts for motors, caster, and lower supports. Electrical constraints: None (structural). Substitution latitude: Must match Duckiebot DB21 chassis hole layout. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 bottom deck plate.
Identity: Lower lateral supports. Quantity: 2 Footprint/package: Vertical chassis structural side plates. Electrical constraints: None (structural). Substitution latitude: Must match DB21 chassis geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 lower lateral supports.
Identity: Middle deck. Quantity: 1 Footprint/package: Horizontal mounting deck separating lower drive assembly from compute layer. Electrical constraints: None (structural). Substitution latitude: Must match DB21 chassis geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 middle deck.
Identity: Upper-left lateral support. Quantity: 1 Footprint/package: Vertical chassis structural plate. Electrical constraints: None (structural). Substitution latitude: Must match DB21 chassis geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 upper-left lateral support.
Identity: Upper-right lateral support. Quantity: 1 Footprint/package: Vertical chassis structural plate. Electrical constraints: None (structural). Substitution latitude: Must match DB21 chassis geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 upper-right lateral support.
Identity: Back support. Quantity: 1 Footprint/package: Vertical chassis rear plate. Electrical constraints: None (structural). Substitution latitude: Must match DB21 chassis geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 back support.
Identity: Top deck. Quantity: 1 Footprint/package: Top horizontal mounting platform for Jetson Nano and sensors. Electrical constraints: None (structural). Substitution latitude: Must match DB21 chassis geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 top deck.
Identity: Back pattern plate. Quantity: 1 Footprint/package: Vertical mounting plate for vehicle AprilTag identifier sticker. Electrical constraints: None (structural). Substitution latitude: Must provide flat surface matching DB21 back support mounting holes. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 back pattern plate.
Identity: Motor mounts. Quantity: 2 Footprint/package: Molded or cut brackets clamping DC gearmotors to the bottom deck. Electrical constraints: None (mechanical). Substitution latitude: Must securely hold standard Duckiebot DC micro-gearmotors at the prescribed axle height. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 motor mounts.
Identity: Camera mount. Quantity: 1 Footprint/package: Angled bracket fixing camera module at calibrated pitch angle. Electrical constraints: None (mechanical). Substitution latitude: Angle and height must match Duckiebot camera calibration specifications to maintain valid intrinsic/extrinsic optical geometry. Student-operated control: No. Sourcing plan: general web research: Duckiebot DB21 camera mount.
Identity: Omni-wheel (passive caster/ball wheel). Quantity: 1 Footprint/package: Rear omni-directional wheel / caster ball assembly. Note: DB21J4(v3) post September 2025 incorporates an updated omnidirectional wheel design. Electrical constraints: None (mechanical). Substitution latitude: Must maintain the rear chassis ground clearance level with the front drive wheels. Student-operated control: No. Sourcing plan: general web research: Duckiebot omni-wheel caster.
Identity: Front wheels. Quantity: 2 Footprint/package: Rubber-treaded drive wheels press-fitting or coupling onto DC motor output D-shafts. Electrical constraints: None (mechanical). Substitution latitude: Wheel outer diameter directly affects linear velocity scaling; substitution requires updating the kinematic calibration parameters in dt-core. Student-operated control: No. Sourcing plan: retail shopping search: Duckiebot DB21 front wheels.
Wiring Harnesses and Interconnects
Identity: Camera cable. Quantity: 1 Footprint/package: CSI-2 ribbon flat flex cable (FFC) matching Jetson Nano 15-pin 1.0 mm pitch (or 22-pin 0.5 mm pitch if adapter board used). Electrical constraints: High-speed differential MIPI CSI-2 pairs. Substitution latitude: Standard Jetson Nano CSI ribbon cable of suitable length. Student-operated control: No. Sourcing plan: retail shopping search: Jetson Nano CSI camera ribbon cable 15 pin.
Identity: Jetson to Battery cable. Quantity: 1 Footprint/package: USB-A to DC barrel (or micro-USB) high-current power cable. Electrical constraints: 5 V DC, rated for ≥ 3 A continuous to avoid voltage drop / undervoltage throttling. Substitution latitude: Any heavy-gauge low-resistance 5 V power cable matching Jetson Nano power port. Student-operated control: No. Sourcing plan: retail shopping search: USB to 5.5mm barrel jack cable 5V 3A for Jetson Nano.
Identity: Battery to HUT(Ext5V) power cable. Quantity: 1 Footprint/package: USB-A to terminal block or polarized connector wiring harness. Electrical constraints: 5 V DC supply to Hut v3.15, rated for ≥ 2 A. Substitution latitude: Any 20 AWG or heavier 2-conductor cable terminated with matching connectors. Student-operated control: No. Sourcing plan: general web research: Duckietown Battery to HUT Ext5V power cable.
Identity: HUT to Battery charging cable. Quantity: 1 Footprint/package: Specialized wiring harness routing charging power between Hut v3.15 and Duckiebattery. Electrical constraints: 5 V charging current path. Substitution latitude: Must match Hut and battery charge-in pinout. Student-operated control: No. Sourcing plan: general web research: Duckietown HUT to Battery charging cable.
Identity: HUT to BB (Back Bumper) cable. Quantity: 1 Footprint/package: Multi-conductor ribbon/stranded harness with keyed connectors (e.g. JST-PH or similar). Electrical constraints: Carries 5 V / 3.3 V power and LED control lines. Substitution latitude: Must match pin pitch and wire pinout between Hut v3.15 and BB PCB. Student-operated control: No. Sourcing plan: general web research: Duckietown HUT to BB cable.
Identity: Motor to HUT cables. Quantity: 2 Footprint/package: 6-wire harness (2 motor power, 2 encoder power, 2 encoder phase A/B) connecting gearmotor assembly to Hut v3.15. Electrical constraints: Motor current up to 1 A peak; 3.3 V/5 V logic for hall/optical encoders. Substitution latitude: Any 6-pin harness matching motor lead header and Hut motor receptacle. Student-operated control: No. Sourcing plan: general web research: Duckietown Motor to HUT cable 6-pin.
Identity: FB to ToF cable. Quantity: 1 Footprint/package: 4-pin or 6-pin miniature I2C/power interconnect cable. Electrical constraints: 3.3 V / 5 V DC power, SDA, SCL, and optional XSHUT control lines. Substitution latitude: Must match pinouts of FB PCB and ToF sensor breakout. Student-operated control: No. Sourcing plan: general web research: Duckietown FB to ToF cable.
Identity: HUT to FB, IMU cable. Quantity: 3 Footprint/package: Multi-conductor flexible wire harnesses with keyed terminal connectors. Electrical constraints: I2C bus signals (SDA, SCL), logic power (3.3 V / 5 V), and ground. Substitution latitude: Any cable matching conductor count and connector housings. Student-operated control: No. Sourcing plan: general web research: Duckietown HUT to FB IMU cable.
Identity: Screen to HUT cable. Quantity: 1 Footprint/package: 4-wire ribbon harness with female receptacles (GND, VCC, SCL, SDA). Electrical constraints: 3.3 V / 5 V logic, I2C clock and data. Substitution latitude: Standard 4-pin female-female 2.54 mm or 2.0 mm jumper harness. Student-operated control: No. Sourcing plan: general web research: Duckietown Screen to HUT cable.
Identity: Button to HUT cable. Quantity: 1 Footprint/package: 2-wire harness with push-button terminals on one side and keyed Hut header on the other. Electrical constraints: Low-voltage digital logic sensing. Substitution latitude: Any 2-conductor wire harness. Student-operated control: No. Sourcing plan: general web research: Duckietown Button to HUT cable.
Fasteners, Hardware, and Spacers
Identity: Metal stand-off M2.5 x 18 mm + 6 mm Male-Female. Quantity: 3 Footprint/package: Hexagonal brass or steel standoff, M2.5 threaded post (6 mm) and female body (18 mm). Electrical constraints: None (mechanical mounting). Substitution latitude: Any M2.5 male-female standoff with 18 mm body length. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Wurth Elektronik 970180244.
Identity: Metal hexagon stand-off M3 25 mm Female-Female. Quantity: 3 Footprint/package: Hexagonal threaded standoff, M3 thread, 25 mm length, female-female. Electrical constraints: None (mechanical mounting). Substitution latitude: Any M3 female-female standoff with 25 mm body length. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Wurth Elektronik 970250324.
Identity: Spacer M6 x 12 x 1.5 mm. Quantity: 2 Footprint/package: Cylindrical washer/spacer, 6 mm inner diameter, 12 mm outer diameter, 1.5 mm thickness. Electrical constraints: None (mechanical spacer). Substitution latitude: Any nylon or metal washer with matching M6 clearance and 1.5 mm thickness. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Essentra Components 17W06001.
Identity: Nylon screw M2 x 8 mm. Quantity: 4 Footprint/package: Pan head or round head nylon machine screw, M2 thread, 8 mm thread length. Electrical constraints: None (non-conductive fastener). Substitution latitude: Any non-conductive nylon M2 x 8 mm screw. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Essentra Components 012008005303.
Identity: Nylon screw M2.5 x 12 mm. Quantity: 14 Footprint/package: Pan head nylon machine screw, M2.5 thread, 12 mm thread length. Electrical constraints: None (non-conductive fastener). Substitution latitude: Any non-conductive nylon M2.5 x 12 mm screw. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Essentra Components 012512005303.
Identity: Round head tapping screws metal 3 x 20 mm. Quantity: 2 Footprint/package: Metal self-tapping / sheet metal screw, 3 mm thread diameter, 20 mm length. Electrical constraints: None (mechanical fastener). Substitution latitude: Standard 3 mm x 20 mm round head tapping screw. Student-operated control: No. Sourcing plan: retail shopping search: Round head metal self tapping screw 3x20mm.
Identity: Metal screw M3 x 30 mm. Quantity: 4 Footprint/package: Metric machine screw, M3 thread, 30 mm length. Electrical constraints: None (mechanical fastener). Substitution latitude: Standard M3 x 30 mm pan or socket head machine screw. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Bulten Stainless M3X30 DIN 7985.
Identity: Metal screw M3 x 12 mm. Quantity: 30 Footprint/package: Metric machine screw, M3 thread, 12 mm length. Note: DB21J4(v3) replaces these with nylon fasteners. Electrical constraints: None (mechanical fastener). Substitution latitude: Standard M3 x 12 mm pan or socket head machine screw (or nylon equivalent for v3). Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Bulten Stainless M3X12 DIN 7985.
Identity: Metal nut M3. Quantity: 30 Footprint/package: Metric hex nut, M3 internal thread. Electrical constraints: None (mechanical fastener). Substitution latitude: Standard M3 hex nut. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Wurth Elektronik 709303000.
Identity: Nylon nut M2.5. Quantity: 16 Footprint/package: Metric hex nut, nylon, M2.5 internal thread. Electrical constraints: None (non-conductive fastener). Substitution latitude: Standard M2.5 nylon hex nut. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Essentra Components 042500000003.
Identity: Nylon nut M2. Quantity: 4 Footprint/package: Metric hex nut, nylon, M2 internal thread. Electrical constraints: None (non-conductive fastener). Substitution latitude: Standard M2 nylon hex nut. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Essentra Components 042000000003.
Tools, Calibration Artifacts, and Ephemera
Identity: Cross screwdriver. Quantity: 1 Footprint/package: Hand tool (PH0 / PH1 Phillips cross-head screwdriver). Electrical constraints: None (manual tool). Substitution latitude: Any standard PH0 / PH1 Phillips screwdriver. Student-operated control: No. Sourcing plan: retail shopping search: PH1 cross screwdriver.
Identity: Camera calibration pattern. Quantity: 1 Footprint/package: Rigid printed optical calibration target (checkerboard / AprilTag grid). Electrical constraints: None (optical target). Substitution latitude: Must be printed precisely at 1:1 scale on non-reflective rigid substrate matching Duckietown calibration grid square dimensions. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown camera calibration target pattern.
Identity: Back pattern sticker. Quantity: 1 Footprint/package: High-contrast printed AprilTag adhesive marker mounted to the back pattern plate. Electrical constraints: None (optical tracking tag). Substitution latitude: Must match the specific AprilTag family (36h11) and ID assigned to the Duckiebot vehicle. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown back pattern sticker AprilTag.
Identity: FCC label sticker. Quantity: 1 Footprint/package: Regulatory adhesive compliance label. Electrical constraints: None. Substitution latitude: Informational only. Student-operated control: No. Sourcing plan: general web research: Duckietown FCC label sticker DB21.
Identity: Duckies (yellow rubber ducks). Quantity: 2 Footprint/package: Molded vinyl miniature toy ducks. Electrical constraints: None (pedagogical obstacle / payload). Substitution latitude: Standard miniature yellow rubber duck. Student-operated control: No. Sourcing plan: retail shopping search: small rubber duckies.
Identity: Instructions card. Quantity: 1 Footprint/package: Printed quick-start leaflet. Electrical constraints: None. Substitution latitude: Informational documentation only. Student-operated control: No. Sourcing plan: general web research: Duckietown DB21 instructions card.
Identity: Duckietown Stickers. Quantity: 2 Footprint/package: Adhesive brand decals. Electrical constraints: None. Substitution latitude: Cosmetic only. Student-operated control: No. Sourcing plan: retail shopping search: Duckietown stickers.
Software and network dependencies
- Ubuntu Linux with NVIDIA JetPack / L4T: Operating system distribution running on the Jetson Nano. Version: not stated. Where the version came from: stated in documentation. The base OS hosts the Docker runtime environment. Check plan: support-status lookup: Ubuntu Linux JetPack.
- ROS Noetic Ninjemys: Middleware runtime environment for nodes, topics, and message passing. Version: not stated. Where the version came from: stated in documentation. Installed via Debian packages or base container image. Check plan: support-status lookup: ROS Noetic.
- Docker Engine: Containerization engine enabling container management over TCP via docker -H [hostname].local. Version: not stated. Where the version came from: stated in documentation. Check plan: support-status lookup: Docker Engine.
- Duckietown Shell (dts): Host CLI tool used for robot updates, building exercises, and launching development containers (e.g. dts update, dts exercises build, dts devel run). Version: not stated. Where the version came from: stated in documentation. Dependencies are unpinned and dynamically pulled during execution. Check plan: not checkable: version not stated.
- ros-noetic-image-geometry: ROS geometry processing library. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 2 without version constraint. Check plan: not checkable: unpinned version.
- ros-noetic-image-proc: ROS image rectification and pipeline package. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 3 without version constraint. Check plan: not checkable: unpinned version.
- ros-noetic-rqt: ROS graphical user interface framework. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 4 without version constraint. Check plan: not checkable: unpinned version.
- ros-noetic-rqt-common-plugins: Collection of common GUI diagnostic plugins for ROS rqt. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 5 without version constraint. Check plan: not checkable: unpinned version.
- libyaml-cpp-dev: C++ YAML parsing library. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 6 without version constraint. Check plan: not checkable: unpinned version.
- python3-sklearn: Machine learning library for Python. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 7 without version constraint. Check plan: not checkable: unpinned version.
- iputils-ping: Linux network ICMP ping diagnostic tool. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 8 without version constraint. Check plan: not checkable: unpinned version.
- python3-tk: Python bindings to the Tk GUI toolkit. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 9 without version constraint. Check plan: not checkable: unpinned version.
- mencoder: Media video encoding tool. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 11 without version constraint. Check plan: not checkable: unpinned version.
- mplayer: Media player utility. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 12 without version constraint. Check plan: not checkable: unpinned version.
- ffmpeg: Hyper-fast video and audio encoder/converter. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 13 without version constraint. Check plan: not checkable: unpinned version.
- file: System file utility required by CMake during pip builds. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 16 without version constraint. Check plan: not checkable: unpinned version.
- python3-scipy: Scientific Python computing library. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 19 without version constraint. Check plan: not checkable: unpinned version.
- ros-noetic-tf-conversions: Conversions between tf and external mathematical libraries. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 20 without version constraint. Check plan: not checkable: unpinned version.
- ros-noetic-opencv-apps: ROS nodes wrapping common OpenCV image processing algorithms. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 21 without version constraint. Check plan: not checkable: unpinned version.
- ros-noetic-mavros-msgs: MAVROS message definitions. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 22 without version constraint. Check plan: not checkable: unpinned version.
- pkg-config: Package management compiler flag retrieval tool. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 25 without version constraint. Check plan: not checkable: unpinned version.
- libcanberra-gtk*: GTK event sound library. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 26 without version constraint. Check plan: not checkable: unpinned version.
- libtbb2: Threading Building Blocks parallelism library. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 27 without version constraint. Check plan: not checkable: unpinned version.
- gstreamer1.0-tools: Tools and utilities for GStreamer media framework. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 28 without version constraint. Check plan: not checkable: unpinned version.
- v4l-utils: Video4Linux device configuration utilities. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 29 without version constraint. Check plan: not checkable: unpinned version.
- gfortran: GNU Fortran compiler. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 30 without version constraint. Check plan: not checkable: unpinned version.
- protobuf-compiler: Protocol Buffers compiler. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 31 without version constraint. Check plan: not checkable: unpinned version.
- libgoogle-glog-dev: Google Logging C++ library development files. Version: not stated (unpinned). Where the version came from: pinned in dependencies-apt.txt line 32 without version constraint. Check plan: not checkable: unpinned version.
- ruamel.yaml: YAML parser/emitter for Python. Version: 0.18.5. Where the version came from: pinned in dependencies-py3.txt line 3. Check plan: vulnerability lookup: ruamel.yaml / PyPI / 0.18.5.
- comptests-z6: Testing utilities for Duckietown. Version: 6.0.4. Where the version came from: pinned in dependencies-py3.txt line 5. Check plan: vulnerability lookup: comptests-z6 / PyPI / 6.0.4.
- procgraph-z6: Dataflow computation graph framework. Version: 6.1.9. Where the version came from: pinned in dependencies-py3.txt line 7. Check plan: vulnerability lookup: procgraph-z6 / PyPI / 6.1.9.
- ros-node-utils: Helper utilities for ROS nodes. Version: 2.0.0. Where the version came from: pinned in dependencies-py3.txt line 8. Check plan: vulnerability lookup: ros-node-utils / PyPI / 2.0.0.
- compmake-z6: Parallel and distributed processing framework. Version: 6.1.5. Where the version came from: pinned in dependencies-py3.txt line 9. Check plan: vulnerability lookup: compmake-z6 / PyPI / 6.1.5.
- filterpy: Kalman and Bayesian filtering library. Version: 1.4.5. Where the version came from: pinned in dependencies-py3.txt line 12. Check plan: vulnerability lookup: filterpy / PyPI / 1.4.5.
- simple-pid: PID controller implementation. Version: <=2.0.1. Where the version came from: pinned in dependencies-py3.txt line 13. Check plan: vulnerability lookup: simple-pid / PyPI / 2.0.1.
- numpy-quaternion: Quaternion operations for NumPy arrays. Version: 2023.0.4. Where the version came from: pinned in dependencies-py3.txt line 14. Check plan: vulnerability lookup: numpy-quaternion / PyPI / 2023.0.4.
- dt-apriltags: Duckietown Python bindings for AprilTag 3 detection. Version: 3.1.7. Where the version came from: pinned in dependencies-py3.txt line 18. Check plan: vulnerability lookup: dt-apriltags / PyPI / 3.1.7.
- duckietown-utils-ente: Core utility library for Duckietown ente branch. Version: 7.0.0. Where the version came from: pinned in dependencies-py3.txt line 20. Check plan: vulnerability lookup: duckietown-utils-ente / PyPI / 7.0.0.
- lib-dt-computer-vision: Duckietown computer vision processing pipeline repository (git+https://github.com/duckietown/lib-dt-computer-vision.git@ente). Version: branch ente, exact commit not pinned. Where the version came from: pinned in dependencies-py3.txt line 22. Check plan: not checkable: unpinned git branch without commit hash.
- lib-dt-state-estimation: Duckietown state estimation library repository (git+https://github.com/duckietown/lib-dt-state-estimation.git@ente). Version: branch ente, exact commit not pinned. Where the version came from: pinned in dependencies-py3.txt line 23. Check plan: not checkable: unpinned git branch without commit hash.
- lib-dt-modeling: Mathematical and robotic kinematic modeling library. Version: 0.0.5. Where the version came from: pinned in dependencies-py3.txt line 24. Check plan: vulnerability lookup: lib-dt-modeling / PyPI / 0.0.5.
- lib-dt-motion-planning: Motion planning and trajectory generation library. Version: 0.0.1. Where the version came from: pinned in dependencies-py3.txt line 25. Check plan: vulnerability lookup: lib-dt-motion-planning / PyPI / 0.0.1.
Manifest locations:
- dependencies-apt.txt: Root file listing Linux system APT package dependencies.
- dependencies-py3.txt: Root file listing Python 3 PyPI and Git repository dependencies.
- packages/communication/config/communication_node/default.yaml: ROS node parameter configuration for demo modes (tl_demo_mode, ss_demo_mode, time_out_sec).
- packages/flight_controller_driver/config/flight_controller_node/default.yaml: Heartbeat check toggles and flight controller configurations.
- dt-core/launchers/default.sh: Launch script invoking dt-exec roslaunch duckietown_demos communication.launch.
Network exposure:
- Physical network access: The robot connects over Wi-Fi using the USB Wi-Fi dongle and announces its hostname via mDNS (resolving to [hostname].local).
- SSH Service: An SSH daemon is active and listening on standard TCP port 22. The documentation instructs students to connect via ssh duckie@YOURBOTNAME.local to set system parameters (such as the I2C clock rate via sudo tee /sys/bus/i2c/devices/i2c-1/bus_clk_rate). Default password is not stated in the sources.
- Docker Daemon: Exposed remotely over TCP to allow container orchestration from the host workstation via docker -H [hostname].local ps and dts devel run -H YOURBOTNAME.local. Default port is unstated in the files (standard Docker daemon remote TCP port is 2375 or 2376).
- ROS Distributed Network: ROS master and node communications pass message topics across the network to remote diagnostic tools via dts start_gui_tools --name db-iface [hostname] and rqt.
- Hardware Bus Configuration: Software dynamically alters kernel bus timing by executing echo '400000' | sudo tee /sys/bus/i2c/devices/i2c-1/bus_clk_rate to enforce a 400 kHz Fast-mode clock rate on I2C bus 1 for accurate LED flashing rates and sensor communication.
Fabrication, Downloads, and External URLs
- Online Hardware Store URL: Duckiebot DB21 box purchase link referenced at https://get.duckietown.com/products/duckiebot-db21?variant=41543707099311.
- Upstream Code Repositories:
- https://github.com/duckietown/lib-dt-computer-vision.git on branch ente
- https://github.com/duckietown/lib-dt-state-estimation.git on branch ente
- User fork testing branch referenced in documentation: korra141/mooc-exercises/daffy-project and korra141/dt-core on branch daffy-project-standalone.
- PCB and Chassis Fabrication Details:
- Duckietown Hut v3.15, Front Bumper PCB, and Back Bumper PCB: Physical board dimensions, Gerber files, schematics, and layer counts are not provided in the source repository (pre-assembled commercial kit parts).
- Chassis structural decks (bottom, middle, top, lateral supports, camera/motor mounts): Fabricated from sheet materials (acrylic, laser-cut wood, or 3D printed polymer); exact CAD vector drawings are not included in this package.