This commit is contained in:
Pepijn
2025-04-22 10:45:57 +02:00
13 changed files with 4275 additions and 12 deletions

View File

@@ -0,0 +1,72 @@
# Overhead Camera Installation Guide for SO-100
<img height="400" alt="Screenshot 2025-04-12 at 2 52 49PM" src="https://github.com/user-attachments/assets/a652e133-8672-448d-baa0-bdd494a0a515" />
<img height="400" alt="Screenshot 2025-04-12 at 2 53 09PM" src="https://github.com/user-attachments/assets/050387cb-b701-47ed-bfb9-dabd29689272" />
<img height="400" alt="Screenshot 2025-04-12 at 2 47 38PM" src="https://github.com/user-attachments/assets/519d884d-dcb6-42a4-bff4-927858672f8b" />
## Overview
This guide provides step-by-step instructions for installing an **Overhead Camera** on the SO-100 robot using a **Web Camera** and a 3D-printed **Arm Base** and **Camera Mount**.
## Design Goals
1. Provide overhead view of entire manipulation space
2. Support both single follower arm and double follower ("bi-manual") arm setups
3. Ensure consistent data across SO-100 arm users through standardized camera positioning and arm spacing (bi-manual)
## Required Components
- **Web Camera** (1) - this is the [recommended model](https://www.amazon.com/dp/B082X91MPP)
- **3D-printed parts**
- [Arm Base](stl/arm_base.stl) (1 per follower arm)
- [Camera Mount Bottom](stl/cam_mount_bottom.stl) (1)
- [Camera Mount Top](stl/cam_mount_top.stl) (1)
- **M2 Screws** (8) - these are the smaller screws that came with your Feetech servos.
<img height="200" alt="Screenshot 2025-03-04 at 7 43 33PM" src="https://github.com/user-attachments/assets/18099e1d-754c-4877-871f-9113a0dff062" />
## Assembly Instructions
### Step 1: Remove the existing base from the **Webcam**
<img height="250" src="https://github.com/user-attachments/assets/89226328-16bf-41e2-b2e2-260352597b61" /> </br>
Take the **Webcam** out of its package, and:
1. Remove the soft plastic cover from the joint.
2. Unscrew/remove the screw in the joint.
3. Remove the base from the camera module.
### Step 2: Attach the **Webcam** onto the **Camera Mount Top**
<img height="250" src="https://github.com/user-attachments/assets/051ebe6b-9548-47a0-81f7-df60a1ea5fad" /> </br>
1. Push the **Webcam** into the **Camera Mount Top** by aligning the round joint holes.
2. Place the hex bolt into the hexagon shaped-hole and screw **M2 screw** into the opposite hole of the **Camera Mount Top** round joint.
### Step 3: Attach the **Camera Mount Top** to the **Camera Mount Bottom**.
<img height="250" src="https://github.com/user-attachments/assets/434e4423-bf8a-4a36-95fb-d3c4283381a9" />
1. Push the **Camera Mount Top** into the **Camera Mount Bottom** by aligning the linear joint lines on the bottom of **Camera Mount Top** with the top of the **Camera Mount Bottom**.
2. Screw an **M2 screw** into each of the 4 holes in the linear joint.
### Step 4: Attach the **Arm Base** to the **Camera Mount Bottom**.
<img height="250" src="https://github.com/user-attachments/assets/732977ac-dd4a-4289-9d9c-8752c0369ff0"/></br>
1. Push the **Arm Base** into the joint lines on the side of the **Camera Mount Bottom**. (Repeat if you have 2 follower arms.)
### Step 5: Attach the **SO-100 follower arm** to the **Arm Base**.
<img height="250" src="https://github.com/user-attachments/assets/24b4c0ce-e62b-4fd6-963c-09448e7ae6f9" /></br>
1. Align the bottom of the **SO-100 follower arm** with the top of the **Arm Base**. (Repeat if you have 2 follower arms.)
2. If you use clamps to hold down your **SO-100 follower arm**, clamp in the same way you've done before, and it will hold down the camera mount.
### Step 6: Configure Software
1. In your software, add your overhead cam, including setting its resolution and FPS.
- **Note**: You will likely want to set your resolution to *640 x 480* and FPS to *30* even if the camera module's max resolution/frame rate is higher or wider, as most models work with lower resolutions and any higher will just be data bloat. This camera mount was specifically designed for 640 x 480 resolution and width.
2. Look at the video feed from your newly installed camera (On Mac, you can also use *QuickTime*->*New Movie Recording* to see this feed). You should be able to see the workspace of the arm(s).
<img height="300" alt="Screenshot 2025-04-12 at 4 48 35PM" src="https://github.com/user-attachments/assets/a0aded4e-6abf-4d19-a514-6d4be90ebe1b" />
<img height="300" alt="Screenshot 2025-04-12 at 4 52 09PM" src="https://github.com/user-attachments/assets/d33287bd-0263-4a03-b7d9-54e360ef5a36" /></br>
### Step 7: (Optional) Add Gripper Cameras
<img height="250" src="https://github.com/user-attachments/assets/8e8fbf60-f62e-4d8c-8451-3ca5a864497c"/></br>
1. For optimal training data, add [**Gripper Cameras**](../Wrist_Cam_Mount_32x32_UVC_Module) designed specifically alongside this camera mount setup.
## Acknowledgements
- Conor Mc Gartoll
- Design and R & D
- Philip Fung
- R & D

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,56 @@
# Plug Wrist Camera (MF) Installation Guide for SO-100
<img height="300" src="https://github.com/user-attachments/assets/139be1c3-d446-4304-b0f4-c90a996789d6" />
<img height="300" src="https://github.com/user-attachments/assets/6c2f0f47-9663-4224-ac4e-220d1d71c162" />
## Overview
This guide provides step-by-step instructions for installing a **Wrist Camera** (alternate "McGartoll-Fung" design) on the SO-100 robot using a **Camera Module** and a 3D-printed **Plug-in Camera adapter**.
This an adapatation of [Wrist Camera (MF) UVC Module](../Wrist_Cam_Mount_32x32_UVC_Module/)
## Comparison to Main Design
#### Advantages:
- smaller
- fewer parts
- no additional screws/hardware needed to attach camera
- no removal/replacement of existing pieces
- easy removal/replacement
#### Disdvantages:
- still require to adapt to new camera
## Required Components
### Hardware:
- **USB Camera Module** (1) - this is the [recommended model](https://www.amazon.com/innomaker-Computer-Raspberry-Support-Windows/dp/B0CNCSFQC1/ref=pd_lpo_d_sccl_3/132-7372155-9780230?pd_rd_w=eYz4L&content-id=amzn1.sym.4c8c52db-06f8-4e42-8e56-912796f2ea6c&pf_rd_p=4c8c52db-06f8-4e42-8e56-912796f2ea6c&pf_rd_r=XC3EXZRSSXKDB1G0Z5D7&pd_rd_wg=1wTpn&pd_rd_r=932b1976-9ac7-4cef-9774-f0f9c3acb804&pd_rd_i=B0CNCSFQC1&psc=1), but any 32mm x 32mm USB camera module with min 720p / 30 fps spec will likely work
- [3D-printed Plugin camera attachment](stl/SO-ARM100_Plug_camera.stl) (1)
- I recommend printing it as oriented in the STL using tree supports. 40% infill is recommended to increase sturdiness and avoid wobbling
- **M2 Screws** (8) - these are the smaller screws that came with your Feetech servos.
<img height="200" alt="Screenshot 2025-03-04 at 7 43 33PM" src="https://github.com/user-attachments/assets/18099e1d-754c-4877-871f-9113a0dff062" />
## Assembly Instructions
### Step 1: Plug the new camera module to the Gripper
2. 3D print the **Plugin camera attachment**.
3. Attach the **Plugin camera attachment**.
1. The hole fit into the [Gripper hole](../../STEP/Follower_specific/Moving_Jaw_08d%20v1.step)
4. Secure it with the M2 screws
### Step 2: Install the Camera
1. Take out the **Camera Module**.
2. Align the 4 holes of the **Camera Module** with the **Moving Jaw Replacement**, and attach using 4 **M2 Screws**.
<img height="300" src="https://github.com/user-attachments/assets/ea5af652-9311-44c7-8ae8-525f42cb4703" />
### Step 3: Configure Software and Adjust Focus
1. In your software, set your resolution and FPS.
- **Note**: You will likely want to set your resolution to *640 x 480* and FPS to *30* even if the camera module's max resolution/frame rate is higher, as most models work with lower resolutions and any higher will just be data bloat.
2. Turn on your arm. Look at the video feed from your newly installed camera (On Mac, you can also use *QuickTime*->*New Movie Recording* to see this feed).
- **Note**: The focus on the camera is manual and will look very blurry initially. Adjust the focus by twisting the lens counterclockwise or clockwise until the video feed is clear.

File diff suppressed because it is too large Load Diff

View File

@@ -103,25 +103,49 @@ Follow the [complete guide of LeRobot](https://github.com/huggingface/lerobot/bl
It points to [our video tutorial](https://www.youtube.com/watch?v=FioA2oeFZ5I&ab_channel=HuggingFace).
Note: we removed to auto-calibration at the end in favor of manual calibration which is more robust.
## Other
## Optional Hardware
### Hardware
#### Back Plate Motor Attachment
You can [attach the WaveShare servo bus controller to you back plate](Optional/Backplate_ServoBus/WaveShare_Mounting_Plate.stl) (with smaller holes).
**Wrist Cameras**
| Webcam (Vinmooog) | 32x32mm UVC Module | RealSense™ D405 |
| --- | ---| --- |
| <img src="media/cam_mount2.jpg" height="150" > | <img height="150" src="media/UVC_cam_mount.jpeg" /> | <img src="media/d405_mount.jpg" height="150"/> |
| [Instructions](Optional/Wrist_Cam_Mount_Vinmooog_Webcam) | [Instructions](Optional/Wrist_Cam_Mount_32x32_UVC_Module) | [Instructions](Optional/Wrist_Cam_Mount_RealSense_D405) |
<img height="150" src="media/backplate_motor_attachment.png" />
**Mount helper**: You can print this part to make your so100 easier to assemble here: `Optional/Mount_Helper/stl/mount_helper v2.stl`
#### Mount Helper
Print this [mount helper](Optional/Mount_Helper/README.md) to make your SO-100 easier to assemble.
**Tactile sensing**: You can find an AnySkin tactile sensor for the SO100 here: [WOWROBO](https://shop.wowrobo.com/products/enhanced-anyskin-premium-crafted-editionwowskin)
<img height="150" src="media/mount_helper.png" />
**Raised leader base**: You can raise the base of leader arm for easier teleoperation near the ground plane by printing this extension: `Optional/Raised_Leader_Base_SO100/SO100 Leader Base Extension.stl`
#### Overhead Camera Mount
You can [mount an overhead camera](Optional/Overhead_Cam_Mount/README.md) for one or two (bi-manual) arm setups.
- **Back plate motor attachement**: You can attach the WaveShare servo bus controller to you back plate (with smaller holes) by printing it here: `Optional/Backplate_ServoBus/WaveShare_Mounting_Plate.stl`
<img height="150" src="https://github.com/user-attachments/assets/a652e133-8672-448d-baa0-bdd494a0a515" />
### Software
#### Raised Leader Base
You can [raise the base of leader arm](Optional/Raised_Leader_Base_SO100/SO100%20Leader%20Base%20Extension.stl) for easier teleoperation near the ground plane.
<img height="150" src="media/raised_leader_base.png" />
#### Tactile Sensing
You can find an AnySkin tactile sensor for the SO-100 at [WOWROBO](https://shop.wowrobo.com/products/enhanced-anyskin-premium-crafted-editionwowskin).
<img height="150" src="media/tactile_sensor_anyskin.png" />
#### Wrist Cameras
| Webcam (Vinmooog) | 32x32mm UVC Module | 32x32mm UVC Module (Plugin) | RealSense™ D405 |
| --- | ---| --- | --- |
| <img src="media/cam_mount2.jpg" height="150" > | <img height="150" src="media/UVC_cam_mount.jpeg" /> | <img height="150" src="media/UVC_cam_mount_plugin.jpg" /> | <img src="media/d405_mount.jpg" height="150"/> |
| [Instructions](Optional/Wrist_Cam_Mount_Vinmooog_Webcam) | [Instructions](Optional/Wrist_Cam_Mount_32x32_UVC_Module) | [Instructions](Optional/Wrist_Cam_Plug_Mount_32x32_UVC_Module) | [Instructions](Optional/Wrist_Cam_Mount_RealSense_D405) |
## Optional Software
Check out this Handy [URDF viewer](https://gkjohnson.github.io/urdf-loaders/).

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
media/mount_helper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB