我的机器人在 Raspberry Pi 3B+ 上运行 Ubuntu 20.04.2 64 位无头服务器
有时我的机器人启动后一切似乎都正常。它将伺服器置于中心位置,将电池电压写入其 life.log,但 ssh 和 ping 会报告主机已关闭。我的 Mac 上的“arp -a”将报告:
(10.0.0.11) at (incomplete) on en0 ifscope [ethernet]
ssh 和 ping 都不成功。有时我必须冷启动很多次,ssh 才能让我登录。
有时我的机器人启动后,ssh 会成功,但 ping 和 ROS2 动态发现却不起作用。
由于我的机器人没有头,因此我在首次启动之前使用 cloud-init 设置 WiFi SSID/pswd。Cloud-init 将名为 network-config 的文件的内容复制到文件 /etc/netplan/50-cloud-init.yaml 并启动网络。
我使用“cloud-init”通过编辑启动分区上的网络配置文件来从一开始就初始设置无头网络:
wifis:
wlan0:
dhcp4: true
optional: true <-- true tells OS: finish boot, don't wait on networking
access-points:
"your_SSID":
password: "your_netpswd"
"another_SSID":
password: "another_netpswd"
我曾尝试将 wifi0 的可选标志设置为 false,但没有什么区别。
Ubuntu 防火墙 ufw 已禁用
Xfinity 路由器已为该 MAC 地址保留了 IP
Xfinity 路由器“防火墙”仅阻止 Wan-to-Lan IDENT(113)
我位于美国
我的机器人:
有什么想法可以尝试吗?
答案1
目前,ROSbot Dave
已成功启动并完成 ssh、ping、arp 和 ROS2 动态发现数据分发系统 DDS 工作
- 12 次尝试中 12 次成功
- 自从更换了 2.4GHz 频段 WiFi 接入点
- 来自 xFinity Technicolor CGM4331COM XB7 路由器
- 到我的古老的DLink DIR-825(上次发布的固件是2013年)。
虽然我可以说机器人 Carl 和我的 DeskPi 与 xFinity 路由器的连接不稳定,但它们都没有出现 ROSbot Dave 所表现出来的“无法远程登录”(ssh)问题,而且当机器人 Carl 尝试使用 ROS (1) 时,我也没有尝试通过网络进行分布式数据传递。
Carl 一直是基于 Raspberry Pi 3B 的 GoPiGo3,但 DeskPi 实际上使用的是 GoPiGo3 ROSbot Dave 运行的确切 Raspberry Pi 3B+(plus)主板,只不过 DeskPi 一直运行 Raspbian/PiOS。
所有这些测试似乎都指向 RaspberryPi 3B+ 上的 Ubuntu 20.04.2(或者至少是我在这个特定的 3B+ 上的特定 Ubuntu 配置)在 DHCP 链路建立阶段存在不可靠的 ICMP、ARP 或 UDP 处理,其中 xFinity 路由器配置了保留的 IPv4 地址作为主板的 WiFi MAC 地址。
我对这个问题的了解还不够多,无法进行更深入的诊断,而且在找到了一个能够让我继续学习 ROS2 的解决方案(通过迁移“动手 ROS 进行机器人编程”练习)之后,我还没有解决这个宇宙之谜。
我确实订购了一个新的 WiFi 6 路由器(具有持续的固件更新支持),以尽量减少我的网络成为加密机器人或参与下一次针对互联网民主的分布式拒绝服务攻击的可能性。