BrachioGraph|两根木条做出画画机器人

让三只小舵机把照片画到纸上

用树莓派和3只模拟舵机驱动两段木条,让一支笔画出线稿。固定8cm+8cm基础结构,提供原作者装配实拍、逐针接线、采购入口和从画方框到照片转线稿的步骤。约¥150–350为复用部分材料时的规划估算;全新原厂海外采购另核。Daniele Procida开源项目,有外部制作者教程,非本站实机测试。

alan000

BrachioGraph 原作者开放文档 / GitHub 2019

参数信息

基础构型绘图范围
约14 × 9 cm

复现文档

01|清点零件,固定原版基础路线

![basic-construction.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/87bd0b103cb34639bf730e1cbdfc0727.jpg)

### 清点零件,固定原版基础路线

按材料表清点主控、3模拟SG90(含舵盘/中心螺钉)、SD卡、电源、面包板、5母公线和9公公线、2木条、衣夹、底板/垫片、胶棒、笔、纸和胶带。固定两臂80mm、Pi Zero WH+Wi-Fi+面包板路线,不混入Pi5、Pico、360°舵机或数字SG92R。供应商缺货项不能假定已买到;家中已有物料可扣除。

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

02|打印定位网格并安装肩舵机

![template-grid.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/6dc7392040f64e329eea8b004770def1.jpg)

![shoulder-servo-mounting.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/d2e04263268e4e71ac5d0c5d208d769d.jpg)

### 打印定位网格并安装肩舵机

下载原template-grid.pdf,以100%实际大小打印在A4纸并用尺复核刻度。固定到A4硬底板,肩舵机轴心对准(0,0)。用硬纸片把电机垫高约4–6mm,让后续木臂旋转时不刮板。胶固化后轻推电机,确认底座不晃。

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

03|制作80mm双臂和抬笔机构

![arm-inner.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/d77f665bfc9e4edeb73253404c5dc605.jpg)

![arm-outer.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/4545b3b450614e3a9931607ea737ff40.jpg)

![pen-and-lift.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/53a43c3481134ceea7f67b0c7d38f4b8.jpg)

### 制作80mm双臂和抬笔机构

把两个舵盘粘在内臂上,转轴中心间距准确80mm。外臂粘肘舵机和衣夹,肘转轴到被夹笔尖的水平距离也为80mm。抬笔舵机固定在外臂靠近衣夹的位置,转动舵盘能顶起笔,且全程不碰木条。先不把两臂锁在电机上,第一次通电先归中。

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

04|准备树莓派系统与控制程序

![basic-construction.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/87bd0b103cb34639bf730e1cbdfc0727.jpg)

### 准备树莓派系统与控制程序

本方案沿用原文测试的Raspberry Pi OS Bullseye Lite 32-bit包名。用官方Imager刷卡并设置你自己的用户名、2.4GHz Wi-Fi和SSH;采用Wi-Fi连接,无需照抄旧OTG默认口令。电脑通过SSH登录后运行下列命令。若所用系统找不到libtiff5/libwebp6,先核OS版本,不能随意删除依赖后声称安装完成。本站未在Pi硬件试装,保留安装日志和pip freeze。

```

sudo apt update

sudo apt install -y python3-venv python3-tk pigpiod libjbig0 libjpeg-dev liblcms2-2 libopenjp2-7 libtiff5 libwebp6 libwebpdemux2 libwebpmux3 libzstd1 libatlas3-base libgfortran5 git

python3 -m venv ~/bg-env

source ~/bg-env/bin/activate

git clone https://github.com/evildmp/BrachioGraph.git ~/BrachioGraph

cd ~/BrachioGraph

git checkout a2825e42edbccde866cc070e50db5721a153a772

pip install -r requirements.txt

```

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

05|断电逐针接线

![wiring.png](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/f74a648357ea4d9585fb90552070c419.png)

### 断电逐针接线

彻底断开Pi电源后接线。三只舵机5V(通常红/橙)接同一电源轨,再连Pi物理针2;三只GND(通常棕)接另一轨,再连物理针6。肩信号接BCM14=物理针8,肘接BCM15=物理针10,抬笔接BCM18=物理针12。颜色只是参考,最终看舵机标识。用面包板配5根母公线与9根公公线;电源轨若中断需按实际板型桥接。严禁把5V接入GPIO信号脚。

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

06|空载归中,依次安装两臂

![inner-arm-attached.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/025a182854524a9391cbae30bf7288db.jpg)

![outer-arm-attached.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/29f3ce1ced50432c9cf8826e4d728751.jpg)

### 空载归中,依次安装两臂

先让肩、肘舵机与木臂脱开,电机空载通电。终端启动pigpiod及Python,再执行from brachiograph import BrachioGraph;bg = BrachioGraph()。按原图把内臂装在约-90°、外臂相对内臂约90°位置,用随SG90附带中心螺钉固定。保持手远离运动区,先试bg.set_angles(0, 90),再bg.park();肘测试bg.set_angles(-90, 120)后归位。方向与原图不符先停机检查安装和配置。

```

sudo pigpiod

source ~/bg-env/bin/activate

cd ~/BrachioGraph

python

```

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

07|调抬笔高度并画第一个方框

![pen-and-lift.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/53a43c3481134ceea7f67b0c7d38f4b8.jpg)

![wobbly-box.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/106f86a10b134b6f89fff3b92a07f619.jpg)

### 调抬笔高度并画第一个方框

在Python执行bg.pen.down()与bg.pen.up(),调笔在夹中的高度,使落笔刚能出线、抬笔高出纸约1–2mm。bg.status()核默认范围。用bg.set_pulse_widths(1500,1500)作为初始中心,每次改不超过100µs,记录各机实际归位脉宽,不能把他人的1570/1450当你的校准值。先执行下方4cm小方框,能闭合后再画大图。

```

bg.pen.down()

bg.pen.up()

bg.status()

bg.box(bounds=[-2, 7, 2, 11])

```

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

08|保存校准,先画原版测试图

![hysteresis-correction.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/b297d12e2c93456f8e29e2f834fd6e55.jpg)

### 保存校准,先画原版测试图

[将自己的归位脉宽写进custom.py](http://将自己的归位脉宽写进custom.py)。bg.test_pattern(both=True)比较正反方向偏差,再小幅调整hysteresis_correction_1/2;原文7–20只是试验区间。角度系数由实际测量,肩方向通常为负、肘为正。先画images/demo.json,不能把低价舵机的波浪线当软件错误或承诺工程精度。

```

bg.test_pattern(both=True)

bg.plot_file("images/demo.json")

```

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)

09|把照片变线稿,保存你的成品

![brachiograph-with-kant-portrait.jpg](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/03d49936-174a-43a9-a597-c9427d2787d6/files/image/9fa8e89e77624b78822c038b52c8ae69.jpg)

### 把照片变线稿,保存你的成品

先选高对比、背景简单的照片。原linedraw还需要opencv-python-headless,建议在已有电脑转换:把照片放images目录,用image_to_json生成SVG与JSON,先看SVG,再把JSON复制到Pi的images目录。执行bg.plot_file("images/你的文件.json")。验收保存小方框、正反测试图、一张线稿、接线照片、依赖版本与校准参数;头图所示为原作者结果,并非本站测试。

```

from linedraw import image_to_json

image_to_json("africa", draw_contours=2, draw_hatch=16)

```

照片/接线图:Daniele Procida,BrachioGraph原仓库配套文档,MIT;保留原图。中文整理2026-10-03,未进行实机测试。

[原装配教程](https://www.brachiograph.art/tutorial/) · [MIT许可全文](https://github.com/evildmp/BrachioGraph/blob/a2825e42edbccde866cc070e50db5721a153a772/LICENSE)