Skip to content

Commit 3e63bb3

Browse files
authored
Merge pull request #3 from lijin686686/main
lj24 1st commit of L3
2 parents 0560067 + 7228d61 commit 3e63bb3

23 files changed

Lines changed: 312 additions & 0 deletions
Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
# Lecture 3 读取摄像头数据流,超声波测距
2+
3+
## 摄像头——颜色识别
4+
我们会用 **thuei-1/sdk-python/Functions/ColorDetect.py**作为一个示例
5+
### 一、预先准备
6+
7+
#### 1.软件
8+
使用vscode ssh连接上板子 / 用MobaXterm连接上板子 / 用HDMI连接上屏幕
9+
10+
以vscode为例
11+
![alt text](./images/image-15.png)
12+
13+
#### 2.硬件
14+
15+
16+
**小车开电之前找志愿者检查!!!
17+
小车开电之前找志愿者检查!!!
18+
小车开电之前找志愿者检查!!!**
19+
20+
连错线容易烧板子,大家一定小心,不要问我怎么知道的()
21+
22+
硬件常见的问题一般都是**接线没有接好,电源没有打开**等等,大家有些时候遇到问题可以先检查下硬件是否都连接到位了
23+
24+
用杜邦线连接对应的借口,**一定不要连错!!**
25+
3,5,6依次对应
26+
27+
![alt text](./images/c911b6606e6b4b8fb242f2679fdf35b.jpg)
28+
![alt text](./images/aaff8786bcff97e238a0666c9ec3f01.jpg)
29+
30+
**摄像头的线**连接到**香橙派**
31+
32+
![alt text](./images/d07353078e2af16220323ad41382f28.jpg)
33+
34+
35+
记得连接**板子的电源线**
36+
记得打开**板子上的开关**,灯会亮
37+
38+
39+
记得**打开电源**,在车子底下,打开后应该会有亮灯
40+
41+
![alt text](./images/3a7684565aea5aaa87c26edda8ab655.jpg)
42+
43+
44+
---
45+
46+
47+
### 二、克隆代码仓库
48+
49+
#### 法一:从github上直接克隆下来
50+
51+
确保是在root所在的位置打开终端(命令行没有显示其他文件夹),在命令行输入下面这串代码
52+
53+
确保clone到的是**root文件夹底下**
54+
55+
```
56+
git clone https://github.com/thuasta/thuei-1.git
57+
```
58+
59+
#### 法二:直接将文件从本地导入
60+
由于一些网络的问题很可能一直没办法clone下来,大家可以登上github的网站找到这个仓库直接下载到本地,或者下载已经下载好的
61+
62+
```
63+
#拷贝到浏览器打开
64+
https://github.com/thuasta/thuei-1
65+
```
66+
67+
![alt text](./images/image-13.png)
68+
69+
如果github实在登不上去,放到了云盘上
70+
```
71+
#拷贝到浏览器打开
72+
https://cloud.tsinghua.edu.cn/d/cc73898d3e374b639648/
73+
```
74+
75+
用vscode ssh连接上
76+
把thuei-1这个文件夹直接拖到root文件夹底下,**注意一定是root**
77+
![alt text](./images/image-8.png)
78+
79+
---
80+
81+
### 三、创建并激活新的conda环境
82+
83+
环境管理器:可以给同一台机器造出任意多个相互隔离的“软件栈”目录,每个目录里拥有自己独立的 Python 解释器版本和第三方库集合,切来切去互不影响。
84+
85+
执行完后你会得到一个**新环境 masterpi**,它和 base 当前状态 100% 一样,但以后在 masterpi 里装/卸/升级任何包都不会动到 base。
86+
87+
如果你在masterpi里进行了一些操作把这个环境搞坏了,直接删掉就好,就不会影响到base
88+
89+
#### 1.创建masterpi的conda环境
90+
91+
```
92+
conda create -n masterpi --clone base
93+
```
94+
95+
#### 2.激活masterpi环境
96+
我们这次都会在自己创建的masterpi这个环境里面进行活动,所以**确保命令行前面出现的是(masterpi)而不是(base)**
97+
98+
```
99+
conda activate masterpi
100+
```
101+
102+
![alt text](./images/image-9.png)
103+
104+
---
105+
106+
### 4.修改错误
107+
108+
ColorDetect.py中from ai_pro_pin_map import **_BOARD**原先大小写打错了
109+
![alt text](./images/image-7.png)
110+
111+
112+
113+
---
114+
115+
116+
### 五、下载安装TightVNC
117+
118+
从这里开始,因为需要图形化界面来展示摄像头捕捉到的东西,建议用vnc
119+
如果使用的是hdmi连接的桌面,则可以直接跳过
120+
121+
#### 1.下载 TightVNC
122+
123+
下载网站:https://www.tightvnc.com/
124+
125+
![alt text](./images/image-10.png)
126+
![alt text](./images/image-11.png)
127+
128+
129+
130+
#### 2.安装 TightVNC
131+
132+
点击安装包安装
133+
134+
135+
136+
#### 3.TightVNC设置密码
137+
138+
在vscode命令行或者mobaxterm命令行输入以下命令
139+
```
140+
vncpasswd 123456
141+
```
142+
143+
一般都把密码设置成123456,好记()
144+
145+
如果让你再vertify一遍,再输入一次123456即可
146+
147+
如果问你问题,根据具体情况他会需要你输入(y/n),根据情况输入y或者n即可
148+
149+
150+
151+
#### 4.启动VNC服务器
152+
153+
在vscode命令行或者mobaxterm命令行输入以下命令,代表启动vncserver并且设置成1080
154+
```
155+
vncserver :1 -geometry 1920x1080
156+
```
157+
158+
如果后续步骤出现以下弹窗,也说明没有启动,再次输入
159+
```
160+
vncserver :1 -geometry 1920x1080
161+
```
162+
163+
![alt text](./images/image-16.png)
164+
165+
166+
如果发现任何时候对桌面进行操作都没有反应,很可能是**卡死了**
167+
168+
在vscode命令行或者mobaxterm命令行输入以下命令,**关闭vncserver,再重新启动**
169+
```
170+
vncserver -kill :1
171+
vncserver :1 -geometry 1920x1080
172+
```
173+
174+
175+
176+
#### 5.启动VNC Viewer
177+
找到tightVNC Viewer
178+
![alt text](./images/image-15.png)
179+
180+
Remote Host当中填写:XX.XX.XX.XX :1
181+
182+
XX.XX.XX.XX的ip地址就是之前的得到的香橙派的地址
183+
184+
**注意中英文的::,要用的是英文的:**,
185+
186+
![alt text](./images/image-14.png)
187+
188+
**点connect,输入密码**
189+
190+
得到以下画面即为成功,可以**进入需要的文件夹**
191+
192+
![alt text](./images/image-2.png)
193+
![alt text](./images/image-3.png)
194+
![alt text](./images/image-4.png)
195+
![alt text](./images/image-5.png)
196+
![alt text](./images/image-6.png)
197+
198+
---
199+
200+
### 六、运行ColorDetect.py程序
201+
202+
这是一个 **“看到颜色就点头或摇头”** 的视觉机械臂小项目
203+
204+
运行python3 Functions/ColorDetect.py,在命令行输入以下命令
205+
```
206+
python3 ColorDetect.py
207+
```
208+
209+
成功运行之后可以在摄像头面前展示红绿蓝不同颜色,机械臂会做出不同反应
210+
<video controls src="./images/3beabc39baf72a2a0ae8210a19abdfa6.mp4" title="Title"></video>
211+
212+
#### 可能的问题:
213+
214+
1. **报错module 'HiwonderSDK.Board' has no attribute 'RGB'**
215+
216+
把thuei-1/sdk-python/HiwonderSDK/Board.py文件中RGB相关的代码删掉,我们用不到
217+
218+
219+
2. **报错信息当中有cap = cv2.VideoCapture('http://127.0.0.1:8080?action=stream')**
220+
221+
括号里改成0
222+
cap = cv2.VideoCapture(0)
223+
224+
3. **AttributeError: module 'cv2' has no attribute 'VideoCapture'**
225+
在命令行输入以下命令
226+
```
227+
pip install opencv-python==4.6.0.66 --trusted-host pypi.tuna.tsinghua.edu.cn --trusted-host files.pythonhosted.org --trusted-host pypi.org
228+
```
229+
4. **ImportError:**
230+
根据少了哪个库,install对应的库
231+
比如说没有numpy库,在命令行输入以下命令
232+
```
233+
pip install numpy
234+
```
235+
236+
5. **A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.2 as it may crash.**
237+
238+
在命令行输入以下命令
239+
```
240+
pip install matplotlib
241+
pip install numpy
242+
```
243+
6. **命令行当中是(base)......**
244+
在命令行输入以下命令
245+
```
246+
conda activate masterpi
247+
```
248+
7. **摄像头相关错误解决:**
249+
250+
VIDEOIO(V4L2:/dev/video0): can't open camera表示无法打开摄像头
251+
因为没连USB
252+
253+
8. **遇到No module named OPi报错**
254+
在命令行输入以下命令
255+
```
256+
pip install --upgrade OPi.GPIO
257+
```
258+
---
259+
260+
## 超声波
261+
262+
轮子会转,建议在小车底下放东西垫起来,不要碰倒其他物品
263+
264+
### 运行Avoidance.py程序
265+
找到对应的程序的地址
266+
![alt text](./images/image-12.png)
267+
268+
269+
运行python3 Functions/Avoidance.py,在命令行输入以下命令
270+
```
271+
python3 Avoidance.py
272+
```
273+
成功运行之后可以在画面上看到打印出来的超声波距离,而且距离超声波进了轮子的运动会发生变化
274+
275+
276+
#### 可能的问题:
277+
278+
1. **ImportError:**
279+
根据少了哪个库,install对应的库
280+
比如说没有numpy库,在命令行输入以下命令
281+
```
282+
pip install numpy
283+
```
284+
285+
2. **(base)**
286+
在命令行输入以下命令
287+
```
288+
conda activate masterpi
289+
```
290+
291+
292+
---
293+
294+
## 写在最后
295+
296+
大家过程中遇到一些问题可以先问讲师和志愿者,当然有一些问题可能我们也无法及时解答,只是比你们多了一点点经验,在某些共性问题上能够尽快解决。有一些个性的问题我们会努力帮大家解决,如果哪里讲的不好或者实在没能帮到忙希望大家见谅。
297+
298+
AI是个很好用的工具,无论是否申请到了copilot,其实都可以把报错信息或者一些疑问丢给ai让他帮你解答
299+
300+
两位部长之前一段话启发很大:
301+
>很多同学在找ai提问时只复制粘贴报错信息,这样ai的回复可能不会很有针对性。建议大家同时给出设备信息和问题背景,尽量全面地提供你所知道的信息,比如ai让你查看某个命令的输出,可以把输出结果及时反馈给ai,并且主动提出自己对问题原因的猜测,引导ai的思考。(不过这个确实需要经验。遇到上面两个问题的话,可以试试把上面这段话直接喂给ai)
302+
303+
>还有要大概知道AI的知识储备有哪些,比如linux的基础操作,python的常用库,AI肯定知道得比较全面;但是像我们这个小车的具体功能,AI应该几乎是不知道,所以在问的时候尽量把示例代码等必要信息都提供给AI才可能获得比较满意的答案
304+
305+
>在调试过程中,要有意识地缩小问题范围。当你通过某条指令查看某个服务或配置项后,你需要判断这一项输出是否符合预期。如果现在没有经验无法判断,你可以将你的猜测以及命令返回值一起告诉AI,让AI帮助你判断某个服务是否有问题,但是自己一定要有意识地积累经验。如果某个方面已经确认没有问题,那么你就可以去尝试其他的猜测,不要无意识地ai让干嘛就一个一个试过去,很容易被带偏。
306+
307+
希望能够帮到大家的忙,祝大家比赛顺利!!
308+
309+
---
310+
311+
312+
7.65 MB
Binary file not shown.
1.05 MB
Loading
Binary file not shown.
340 KB
Loading
220 KB
Loading
1.48 MB
Loading
322 KB
Loading
374 KB
Loading
9.43 KB
Loading

0 commit comments

Comments
 (0)