在无头模式下向 ROS2 机器人输入 WiFi 凭证

在无头模式下向 ROS2 机器人输入 WiFi 凭证

我设计了一个在 Ubuntu 操作系统上安装了 ROS2 的机器人,全部运行在树莓派 4 上。另一个 esp32 用于控制电机。该机器人是防水且密封的。每次我把它带到一个新的地方,我都需要将其全部打开并重新配置 wifi 凭据以连接到 wifi。我的机器人只有一个 USB 输出连接,并且没有网络端口访问权限。

如果现有网络无法工作,如何让机器人连接到新网络?如果可能的话,我正在寻找强制门户系列中的东西。即使有一种方法可以在 esp32 中创建设置并从那里读取凭据,那也很好。任何不同的建议也将很有用。请帮忙。

答案1

嗯,我有两个想法...


如果您可以放心地假设您有某种设备应该能够到达(例如,您的控制 PC),那么这会变得更容易一些:您可以实现一个循环,尝试 ping 控制计算机几次,如果成功,那就太好了,如果没有,那么是时候尝试一下了新网络。您可以使用以下脚本来完成此操作:

  1. 使用命令-c上的标志ping,这将允许您设置“计数”(这样它就不会无限地执行 ping 操作)。指向ping您应该能够够到的东西。
  2. 观察 ping 命令的退出值:如果无法到达设备,则 ping 将退出并显示错误值。
  3. 如果您收到错误值,请尝试新网络。您可以使用类似的东西nmtui来实现此目的,并且您可能已经将其安装在 Ubuntu 上。
  4. 转到 1。

然后,将该功能包装到 bash 脚本中,并编写一个 systemctl 服务以在系统启动时启动该脚本。


所以这是可行的,但我个人不喜欢我的机器人在如何连接到它时变得超级动态的想法,而且我不喜欢这实际上是我们正在尝试的硬件问题这一事实使用软件解决方案来解决问题。这里的硬件问题是,一旦密封防水,就不可能与机器人进行交互。

为了解决这个问题,您应该考虑添加防水数据端口。您可以通过购买防水电缆组件并将 USB 电缆切成两半来实现此目的。然后,将该 USB 电缆焊接到防水连接的任一侧,这样您现在就可以将 USB 电缆的一侧插入外壳内以插入板载 PC,而另一侧则可以插入 USB 转接头。 - 控制电脑上的以太网适配器。我建议仅出于易于焊接的目的而使用以太网 USB。这种方法为您提供了一个始终可以通过 SSH 进行连接的端口,即使机器人没有以其他方式连接,这始终很有价值。

答案2

我对此的建议是拥有一个已知的 wifi 访问信息,您可以从笔记本电脑提供该信息作为临时/后备/特殊网络,系统将在检测到它时自动连接到该网络。这样您就可以从专用网络配置基础设施网络的 wifi 设置。然后关闭特殊配置网络,传感器连接到配置的基础设施网络。

相关内容