Skip to content

Commit

Permalink
Update Chinese README files. (ob-f#84)
Browse files Browse the repository at this point in the history
  • Loading branch information
leegang authored Oct 15, 2020
1 parent dcbfa78 commit a3a4ed2
Show file tree
Hide file tree
Showing 12 changed files with 379 additions and 71 deletions.
5 changes: 5 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Contributing

<p align="center">
<span>English</span> |
<a href="README_CN.md">简体中文</a>
</p>

## Process

1. Submit an issue describing the changes you want to implement. If it's only minor changes/bug-fixes, you can skip to step 3.
Expand Down
52 changes: 52 additions & 0 deletions CONTRIBUTING_CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# 贡献

<p align="center">
<a href="README.md">English</a> |
<span>简体中文</span>
</p>

## 流程

1. 提交一个问题,描述你要实现的改变。如果只是小的改动/bug修复,你可以跳到第3步。
2. 在issue中讨论了范围之后,把它分配给自己。它应该显示在OpenBot项目的 "To DO"一栏中。
3. Fork 项目并克隆到本地。

`git clone https://github.com/<user_id>/OpenBot.git`

4. 创建一个分支,并将其命名为`<user_id>/<feature>`,其中`<feature>`简明扼要地描述工作范围。

`git checkout -b <user_id>/<feature>`

5. 做好工作,写好提交信息,把你的分支推送到分叉的仓库里。

```
git add <修改后的文件>
git commit -m <有意义的描述>。
git push --set-upstream origin <user_id>/<feature>。
```

6. 在GitHub上创建一个[pull request](https://github.com/intel-isl/OpenBot/pulls),并将问题链接到它。它应该会显示在OpenBot项目的 "In progress "栏中。
7. 处理你可能收到的任何代码审查反馈,并将其推送到你的fork中。pull request会自动更新。
8. 来一杯你喜欢的冷饮,奖励你让世界变得更美好。

## 指南

- 使用与其他代码相同的样式和格式。
- 对于Android代码,你可以运行以下命令。
1. `./gradlew checkStyle`-->返回样式不正确的Java文件。
2. `./gradlew applyStyle`-->将必要的样式更改应用于所有Java文件。
- 对于Arduino和Python代码,只需尝试混合即可。
- 更新与你所做的代码更改相关的文档。
- 如果你想加入第三方的依赖关系,请先在问题中讨论。
- pull request应该尽可能少地实现单一功能的改动。
- 确保你不包含临时文件或二进制文件 (gitignores 应该主要处理这个问题)。
- 在提交拉取请求之前,先将master分支重写/合并到你的分支中。
- 如果可能的话,在Windows、Linux和OSX上测试你的代码。


如果你正在寻找更多关于为开源项目做贡献的信息,这里有两个很好的参考资料。

- [如何为开源做贡献](http://opensource.guide/how-to-contribute/)
- [为GitHub项目做贡献的初学者指南(英文)](https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/)

非常感谢你!
10 changes: 5 additions & 5 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ OpenBot利用智能手机作为低成本机器人的大脑。我们设计了一

## 开始使用OpenBot

- 构建自己的车身 [车身](body)
- 刷入 [Arduino 固件](firmware)
- 编译并运行 [Android App](android)
- 训练自己的 [驾驶策略](policy)
- 构建自己的车身 [车身](body/README_CN.md)
- 刷入 [Arduino 固件](firmware/README_CN.md)
- 编译并运行 [Android App](android/README_CN.md)
- 训练自己的 [驾驶策略](policy/README_CN.md)

## 引用

Expand All @@ -50,7 +50,7 @@ OpenBot利用智能手机作为低成本机器人的大脑。我们设计了一

## 贡献

请阅读[贡献准则](CONTRIBUTING.md)。 如果您不确定从哪里开始,请查看[未解决的问题](https://github.com/intel-isl/OpenBot/issues)
请阅读[贡献准则](CONTRIBUTING_CN.md)。 如果您不确定从哪里开始,请查看[未解决的问题](https://github.com/intel-isl/OpenBot/issues)

## 联系我们

Expand Down
84 changes: 72 additions & 12 deletions android/README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,87 @@

我们的应用程序派生自[TensorFlow Lite object Detection Android Demo](https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android)。我们增加了一个数据记录器,并支持游戏控制器与机器人一起收集数据集。目前,我们记录以下传感器的读数:相机、陀螺仪、加速计、磁力计、环境光传感器和气压计。使用Android API,我们可以获得以下传感器读数:RGB图像、角速度、线加速度、重力、磁场强度、光强、大气压力、纬度、经度、海拔、方位和速度。除了手机传感器,我们还记录车身传感器读数(车轮里程计、障碍物距离和电池电压),这些读数通过串口传输。最后,我们记录从连接的游戏控制器接收道德命令(如果存在)。我们还集成了多个神经网络用于人员跟踪和自主导航。

## 免责声明

1. **安全性:** 一定要确保在安全的环境下操作。请记住,您的手机可能会在碰撞中受损! **安全:** 一定要确保在安全的环境中操作。在使用自动控制时(如人员跟随或驾驶策略),必须特别小心。确保您始终连接着一个游戏手柄控制器,并熟悉按键映射,以便您可以在任何时候停止车辆。使用时风险自负
2. **应用程序正在开发中:** 应用程序正在开发中,根据您的手机型号和操作系统的版本,可能会崩溃或表现出意外行为。请务必在不连接车轮的情况下测试所有功能。使用时请自行承担风险!

## 开始

### 先决条件

-设置[Android Studio](https://developer.android.com/studio/index.html)
-Android设备和Android开发环境,最低API版本21。
-Android Studio 3.2或更高版本
- [Android Studio 3.2或更高版本](https://developer.android.com/studio/index.html),用于构建和安装apk,否则从[最新版本](https://github.com/intel-isl/OpenBot/releases/latest)的静态资源中下载apk。
- 安卓设备和安卓开发环境,最低API 21。

### 构建
-打开Android Studio,选择[打开已有的Android Studio项目]
-选择OpenBot/Android目录,点击OK。
-如有必要,确认Gradle Sync。
-连接您的安卓设备,确保在[开发者选项](https://developer.android.com/studio/debug/dev-options)]中开启usb调试。根据您的开发环境[可能需要更多步骤](https://developer.android.com/studio/run/device)
-单击Run按钮(绿色箭头)或从顶部菜单中选择Run>Run‘Android’。您可能需要使用“Build”>“Rebuild Project”重新构建项目。
-如果系统要求您使用即时运行,请单击 *Proceed Without Instant Run*.。
- 如果你使用的是[最新版本](https://github.com/intel-isl/OpenBot/releases/latest)的静态资源中的apk,你可以跳过下面的步骤,直接在手机上[安装](https://www.lifewire.com/install-apk-on-android-4177185)即可。注意,该apk是用调试密钥签名的。
- 打开Android Studio,选择*打开一个现有的Android Studio项目*
- 选择OpenBot/android目录,点击确定。
- 如果需要的话,确认Gradle Sync。
- 连接你的Android设备,并确保在[开发者选项](https://developer.android.com/studio/debug/dev-options)中启用USB调试。根据你的开发环境,[进一步的步骤](https://developer.android.com/studio/run/device)可能是必要的。
- 单击"运行"按钮(绿色箭头)或从顶部菜单中选择 "运行">"运行'安卓'"。你可能需要使用Build > Rebuild Project来重建项目。
- 如果它要求你使用Instant Run,点击*Proceed Without Instant Run*

### 代码结构
Tensorlfow Lite目标检测示例程序 [TensorFlow Lite Object Detection Android Demo](https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android) 作为集成TFLite模型并获取相机源的起点。 Main activity 是运行主线程的[NetworkActivity](app/src/main/java/org/openbot/NetworkActivity.java)。它继承自管理摄像机和UI的[CameraActivity](app/src/main/java/org/openbot/CameraActivity.java)[SensorService](app/src/main/java/org/openbot/SensorService.java)读取所有其他电话传感器并记录它们。[env](app/src/main/java/org/openbot/env)文件夹包含实用程序类,如[GameController](app/src/main/java/org/openbot/env/GameController.java)接口和用于声音反馈的[AudioPlayer](app/src/main/java/org/openbot/env/AudioPlayer.java)[tflite](app/src/main/java/org/openbot/tflite)文件夹包含[Autopilot](app/src/main/java/org/openbot/tflite/Autopilot.java)[Detector](app/src/main/java/org/openbot/tflite/Detector.java)网络的模型定义。

## 如何使用应用程序
即将到来...
<p align="center">
<img src="../docs/images/app_teaser.jpg" alt="App Teaser" width="100%"/>
</p>
<img src="../docs/images/app_gui.jpg" alt="App Teaser" width="100%"/>
</p>

### 数据记录器

有四种不同的记录模式。

- **only_sensors**。所有传感器数据,但不保存图像
- **crop_img**: 保存所有传感器数据和具有网络输入尺寸的裁剪图像。这是默认设置,是数据收集时应该使用的设置。
- **preview_img**: 保存所有传感器数据和全尺寸图像。这将需要大量的内存,而且速度会很慢。然而,它对于编译FPV视频是很好的。
- **all_imgs**: 所有的传感器数据和裁剪和全尺寸的图像被保存。这将需要大量的内存,而且可能很慢。

右边的开关是用来切换登录和关闭的。在游戏控制器上,这个开关可以用X按钮来切换。

### USB连接

下拉菜单用于设置波特率。默认值是115200,你应该不需要改变这个值,除非你把Arduino固件搞乱。该应用程序将尝试自动连接,但如果你遇到问题,你可以使用这个开关来断开/连接。

### 驱动模式

在使用游戏控制器(如PS4)时,有三种不同的驱动模式。

- **游戏模式**。使用左右肩部触发器(R2,L2)进行前进和后退油门,任一操纵杆进行转向。该模式模仿赛车电子游戏的控制模式。
- **操纵杆模式**。使用任一操纵杆控制机器人。
- **左右模式**:使用左右操纵杆控制机器人。用左右两根操纵杆分别控制汽车的左右两边 这是原始的差速转向。

右侧的开关用于在游戏控制器和网络之间切换控制。在游戏控制器上,可以使用R1触发按钮切换此开关。

### 车辆控制

有三种不同的速度。

- **慢速**:电机所承受的电压被限制在输入电压的50%(约6V)。
- **正常**:电机所承受的电压被限制在输入电压的75%以内(约9V)。
- **快速**:没有限制。全输入电压将应用于电机 (~12V)。*这是运行神经网络的默认设置*

以更高的速度运行会降低电机的寿命,但更有乐趣。从连接的游戏控制器接收到的控制或网络预测的控制显示在右侧。

### 模型

该应用程序随附三种模型:

- **DETECTOR_V1_1_0_Q**。此模式用于人员跟踪。它使用MobileNet V1模型的SSD对象检测器。为了在嵌入式设备上获得更好的性能,该模型进行了量化。
- **DETECTOR_V3_S_Q**。该模型用于人员跟踪。它使用MobileNet V3模型的SSD对象检测器。为了提高嵌入式设备的性能,该模型进行了量化。
此模型用于自主导航。它将直接从摄像机输入预测控件。很有可能它在您的环境中不起作用。您应该按照我们的说明来训练自己的[驾驶策略](../ policy)并予以替换。
如果一个模型处于活动状态,它的右侧将显示以[ms]为单位的推理速度。

### 设备

使用下拉菜单选择运行神经网络的设备。您有以下选择。

- **CPU**:使用CPU可以在大多数手机上使用,是默认选择。您可以调整线程数量以优化性能。
- **GPU**:大多数智能手机都具有GPU。具有大量输入(例如图像)的网络通常在GPU上运行得更快。
- **NNAPI**:这将使用[TensorFlow Lite NNAPI delegate](https://www.tensorflow.org/lite/performance/nnapi)。现代智能手机通常会配备专用的AI加速器。[神经网络API](https://developer.android.com/ndk/guides/neuralnetworks)(NNAPI)为Android设备上的TensorFlow Lite模型提供加速,这些设备具有图形处理单元(GPU)、数字信号处理器(DSP)和神经处理单元(NPU)。请注意,在一些较旧的手机上,这可能会非常慢!

## 下一步(可选)

训练自己的[驾驶策略](../policy/README_CN.md)
97 changes: 55 additions & 42 deletions body/README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@
3) 手机支架底部 ([STL](cad/phone_mount_bottom.stl), [STEP](cad/phone_mount_bottom.step))
4) 手机支架顶部 ([STL](cad/phone_mount_top.stl), [STEP](cad/phone_mount_top.step))

对于上述零件,你的构建板至少需要240mmx150mm。

由于很多常见的3D打印机的构建体积较小,我们还制作了一个[slim body](cad/slim_body/README_CN.md),它适合在220mmx220mm的构建板上以45度的角度进行构建。

对于在3D打印机上打印更小的构建量,还有一个[glueable body](cad/glue_body/README_CN.md),适合在150mmx140mm的构建板上打印。感谢@sloretz

在Ultimaker S5上,我们通过以下设置获得了良好的效果:

- 层高:0.2mm
Expand All @@ -27,13 +33,9 @@
- 打印速度80毫米/秒
- 无支持

我们能够使用PLA,ABS和CPE打印机箱。 根据我们的经验,打印不受打印设置的影响很大。 但是,如果您有耐心,则打印速度较慢且层高度较小的纸张会改善打印质量。 另外,添加支撑结构可以改善打印效果,但是之后需要进行额外的工作才能删除
我们能够使用PLA,ABS和CPE打印机箱。 根据我们的经验,打印设置不受打印设置的影响很大。 但是,如果您有耐心,则打印速度较慢且层高度较小的纸张会改善打印质量。 另外,添加支撑结构可以改善打印效果,但是添加的支撑之后需要进行额外的工作才能去除

由于许多常见的3D打印机的构建体积较小,因此我们还制作了一个[body_bottom_slim.stl](./cad/slim_body/slim_body_bottom.stl)[body_top_slim.stl](./cad/slim_body/body_top_slim.stl),它们以45度安装在220x220构建板上。 这些未经测试,但应该可以正常工作。

## 配件购买

### 必须
中国用户可以在淘宝找商家打印。注意以下事项:

- PLA材料 3D打印机身
- 层高:0.2mm
Expand All @@ -42,22 +44,25 @@
- 填充图案:网格
- 机身数量 共4块
- 建议价格:¥120.00以内(含邮费)
- 直流减速电机+智能小车车轮cbot
- 数量 4
- 价格:¥10.00
- [淘宝购买](https://s.click.taobao.com/GA955xu)
- L298N 开发板
- 数量 1
- 价格:¥14.92
- [淘宝购买](https://s.click.taobao.com/pyt45xu) , [领券](https://s.click.taobao.com/C1nJ4xu)

## 部件

机器人的组装有两种不同的选择:DIY和PCB。 DIY方法依赖于流行的L298N电机驱动器,建议具有一定电子经验的业余爱好者使用。 它需要大量的接线,尤其是在安装所有传感器和LED的情况下。但是,在大多数情况下,所有组件都很容易获得,尤其是对于只需要制作一部车身或只是为了尝试项目,建议使用DIY选项。同时为了减少布线并简化组装,我们还开发了[custom PCB](pcb)。 如果您想要制作过程更简单或想要多个OpenBots车身,则建议这样做。

### 料清单

我们的机器人主体依靠随时可用的爱好电子设备。 我们提供快速运输到德国(EU)和美国(US)的链接。 如果您有耐心等待更长的时间,您也可以从速卖通(AE)那里购买便宜得多的组件。中国用户建议在淘宝购买。您将需要以下组件。

(通用)

- Arduino nano V3.0 CH340G 改进版
- 数量 1
- 价格:¥5.49
- [淘宝购买](https://s.click.taobao.com/iI1K4xu)
- 测速传感器 Tacho Sensor 3.3V-5V
- 数量 2
- 价格:¥3.80
- [淘宝购买](https://s.click.taobao.com/jMA45xu)
- 直流减速电机+智能小车车轮cbot
- 数量 4
- 价格:¥10.00
- [淘宝购买](https://s.click.taobao.com/GA955xu)
- 18650大容量充电锂电池
- 数量 3
- 价格:¥16.80
Expand All @@ -69,7 +74,7 @@
- T型口转type-c 连接线
- 数量 1
- 价格:¥25.00
- [淘宝购买](https://m.tb.cn/h.VzbuDbd)
- [淘宝购买](https://s.click.taobao.com/FKmZVvu)
- 304不锈钢拉簧拉力拉伸带钩弹簧
- 数量 1
- 价格:¥0.60
Expand All @@ -91,21 +96,39 @@
- 价格:¥2.80
- [淘宝购买](https://s.click.taobao.com/nfSJ4xu)

### 可选
(仅DIY)

- L298N 开发板
- 数量 1
- 价格:¥14.92
- [淘宝购买](https://s.click.taobao.com/pyt45xu) , [领券](https://s.click.taobao.com/C1nJ4xu)
- (可选) 电阻器(2x 150<span>&#8486;</span>用于LED,20k<span>&#8486;</span>和10k<span>&#8486;</span>用于分压器)
- (Combo) 4x TT马达和轮胎+2x L298N+dupont电缆 ([US](https://www.amazon.com/dp/B07ZT619TD))
- (Combo) 4x TT马达和轮胎+电线+螺丝 ([US](https://www.amazon.com/dp/B07DRGTCTP))

(仅PCB)

- 1x [自定义PCB](pcb)
- 5条Micro JST PH 2.0电缆([淘宝购买](https://s.click.taobao.com/HYyOTvu))

(可选)

- 测速传感器 Tacho Sensor 3.3V-5V
- 数量 2
- 价格:¥3.80
- [淘宝购买](https://s.click.taobao.com/jMA45xu)
- HC-SR04超声波测距模块传感器
- 数量 1
- 价格:¥2.69
- [淘宝购买](https://s.click.taobao.com/q5545xu)
- 21*15mm 开关
- 数量 1
- 数量 1
- 价格:¥1.60
- [淘宝购买](https://m.tb.cn/h.VzbvV36)
- 5mm发光二极管橘色 (接线需要分压器, 新手不太建议)
- 数量 2
- 价格:¥1.98
- [淘宝购买](https://s.click.taobao.com/rjXJ4xu)
- 电阻器(2个150<span>&#8486;</span>用于LED,一个20k<span>&#8486;</span>和10k<span>&#8486;</span>用于分压器。

## 制作说明

Expand Down Expand Up @@ -136,26 +159,16 @@

### 选项2:定制PCB

![PCB_2D](../docs/images/pcb_2d_v2.png)
![PCB_3D](../docs/images/pcb_3d_v2.png)

警告:PCB已更新至版本2,尚未经过测试。 更改如下:
-将正确的速度传感器移至D3引脚以启用中断功能
-为主电池添加电源LED
-更新一些更常用的组件
-将分压器更新为20k / 10k,以获得更高的精度
-将电机连接器更改为直立版本,以便于操作

定制PCB包括以下步骤:

1) **购买 PCB**: 下载[Gerber](pcb/v2/gerber_v2.zip) 文件 并选择供应商处订购PCB。 你也可以直接在[PCBWay](https://www.pcbway.com/project/shareproject/OpenBot__Turning_Smartphones_into_Robots.html)上订购PCB,在那里我们共享了一个OpenBot项目。
2) **订购组件:** 下载[BOM](pcb/v2/BOM_v2.csv)并在您选择的供应商处订购组件,例如[LCSC](https://lcsc.com)
3) **PCB组装:** 你可以自己组装PCB,也可以让供应商来组装。对于自动装配,您将需要[Centroid文件](pcb/v2/centroid_file_v2.csv)

您还可以找到供应商,他们将为您提供涵盖所有3个步骤的全套解决方案。他们将生产PCB,提供组件和组装PCB。这非常方便,也不太贵。然而,交货时间通常很长(1-3个月)。
1. 将带有Micro JST PH 2.0连接器的导线焊接到电机上。
2. 将左边两个电机连接到 M3 和 M4,右边两个电机连接到 M1 和 M2。
3. 用四个 M3x5 螺丝安装 PCB,用八个 M3x25 螺丝和螺母安装电机。
4. 按照DIY选项中的步骤5-10进行。
5. 将LED、速度传感器和超声波传感器连接到PCB上。
6. 将USB电缆连接到Arduino,并将其穿过顶盖。
7. 将电池连接到PCB的Vin(Micro JST PH 2.0连接器)。如果你安装了开关,把它放在电流路径上。
8. 按照DIY选项中的步骤19-20。

当在[PCBWay](https://www.pcbway.com/orderonline.aspx)请求报价时,您可以在上传Gerber文件后选择组装服务。
## 下一步

![Assembly Service](../docs/images/assembly_service.jpg)
烧录[Arduino固件](../firmware/README_CN.md)

在下一步中,您将需要上传[BOM](pcb/v2/BOM_v2.csv)[Centroid File](pcb/v2/centroid_file_v2.csv)。 您的报价将在几天之内进行审核和更新。 然后,您可以在查看成本和交货时间后选择继续付款。
Loading

0 comments on commit a3a4ed2

Please sign in to comment.