训狗日记
2025.04.26
给狗子充了电。
2025.05.02
开始尝试与 3-1 狗子建立连接,阅读 PPT 没明白 Cyberdog2 APP 是怎么突然出现的,咨询后发现是手机 APP,PPT 讲解顺序有点混乱。经过尝试连接成功,但不能站立。根据人工校准的图示,发现确实是位置没摆好,摆好后遥控动作成功。
Cyberdog2 APP 的 UI 与手机型号不适配,IP 显示只能看到 10.0.0 后的一个数字。利用 Advanced IP scanner 根据此信息扫描拿到了狗子的 IP。在个人电脑和 3-1 上开始安装 tightVNC。
晚,WJ 抵达,开始与 3-2 狗子互动。
发现自身系统直接打开 windows powershell 窗口的配色太怪了,不想调,遂换用 vscode 打开。熟悉了 vim 的操作,并完成了 tightVNC 的配置。
3-2 安装了 tightVNC,但出现灰屏。利用群内文件尝试修改 ~/.vnc/xstartup
,图形界面出现,但命令行无法输入。3-2 最终决定换用 mobaxterm 进行操作,顺利开始。
通过两处 manual.py
的 get_namespace
的修改进行改名。3-1 改名为 jiqimao1,3-2 改名为 jiqimao2。尝试直接在命令行里键入 ros2 service call
相关指令使狗子站起,未果。暂时跳过此步骤。
创建了工作空间 workplace/src
,创建了 learning
功能包,在 learning/learning
下依照 PPT 编写了 stand.py
,增添了 learning/setup.py
有关 stand.py
的配置。尝试在 workplace
下 colcon build
,报错,修复未果。直接 python3 stand.py
瞬间执行完成,但没有任何作用。
经咨询发现报错是正常的,能跑就行。明天试试。
2025.05.03
继续 3-1 的站立。source ~/workplace/install/setup.bash
报错 not found:"/opt/ros2/galactic/share/libg2o/local_setup.bash"
。忽略。直接执行 ros2 run learning stand
,狗子成功站立。WJ 到,3-2 试验亦成功。3-2 还试验了原地踏步、超声波测距、相机开启等,均顺利完成;但 bash 文件配置不成功,不能打开全部相机。
咨询了上位机相关问题,学习了 ROS2 的 callback 相关机制。
(以下内容由 WJ 撰写)
2025.05.04
修改了讲义中的代码,使用 $!
获取后台进程 PID,并在脚本末尾用 wait
维持主进程存活,最终成功使用 .bash 文件打开了 3-2 的相机。
之后将PPT里的追踪部分的代码拷贝到了 3-2 当中,使用 ros2 和 python3 运行了几次都没有反应,遂将 3-2 重启,重新连接后build,终于出现了错误信息,是有几处地方拷贝错误了。修正过后重新运行追踪部分的代码,输出 Connection Refused
。
2025.05.05
出现 Connection Refused
的原因是没有正常打开深度相机,除此之外还报了一些和 ip
和 port
相关的错误,用 tightvncserver
连接后好像解决了。
后续仍然不断输出 Not Found
(后来发现一直输出 Not Found
是因为上位机的追踪算法没有启用,需要我们自己写一个根据图片识别绿球的算法),就先搓了一个在 Not Found
的条件下狗子原地转圈的函数 rotate
。
搞了一下午也没有搞清楚 RGB
相机如何使用,想索性直接用灰度图,搓了一个获取灰度图数据的程序 get_camera_info
,却发现用 cv2
不能实时显示订阅的数据。
2025.05.06
cv2
必须配合 cv2.waitKey()
使用才有效,否则无法展示界面,将获取相机数据与展示数据写在一个循环里,将每一帧的展示时间设定为 1ms
,最后可以实时显示画面。
发现先打开深度相机,再新开一个命令行运行 export DISPLAY=:0
并打开 RGB 相机就能使 RGB 相机正常工作
使用 cv2 库中的方法实现了绿球的识别功能:inRange
滤除非绿色部分,GuassianBlur
对图像进行平滑化处理,最后用 HoughCircles
检测图像中的圆形,并返回圆心坐标。
下午把之前写好的几类节点直接拷贝到 my_track
里,使用了比较初级的策略完成了识别到球后往前走,当球足够近时停下的功能。同时使用超声波测距实现了避障功能。(由 WJ 与 LX 共同完成)
(以下转回本人撰写)
晚上为 3-1 配备相应功能。编写了前进、左转、右转、坐下、超声结点。与 DC、YC 交流 ROS2 初步以及 cv 内容。
2025.05.07
3-1 cv 最终选用绿色过滤加中点检测的方法,即先把画面滤到只剩绿色,并忽略有色点过少的情形,再将所有有色点的中点视为球的中心,避免了各类噪点干扰问题,识别结果相当稳定。避障仍采用超声测距方法,最终停止结合绿色存在性与超声测距的两结果进行判断。