我有一个web界面,允许用户发送远程命令到1或2个机器人。目前,任务被保存在数据库中(也用于日志记录),机器人每隔125ms就会使用GET请求来轮询django后端,这样可以提供可接受的响应时间,而不会给后端带来过大的压力。简而言之:
Action(User) -> [Remote Control UI] -> Django -> DB (based on user input)
while(ros::ok())
{
response = requests.get(task_url, timeout=5)
// input task(s) to state machine
// execute task if possible
rate.sleep();
}
我的问题是:有没有更好的方法?当机器人离开Wi-Fi时,遥控器有时会被禁用,因此该解决方案需要一定程度的灵活性来重新连接,IP更改和连接错误。我考虑了可能的替代方案,但不确定它们是否可行。
- 要求机器人注册并保存他们的IP(?),如果注册,则将命令发送给机器人
- 将命令多播到整个Wi-Fi子网(?)并让机器人读取它 使用django的通道或者其他类似的技术?我只找到了[django或flask] + javascript的例子。我不确定是否可以从Django到Flask或类似的东西。
欢迎反馈
搜索ROS多机将有助于解决这个问题。
http://wiki.ros.org/ROS/Tutorials/MultipleMachines
简而言之,在本地设备/etc/hosts中设置其他设备的IP在此文件中,您可以为彼此分配正确的IP
对所有设备执行此操作。
然后在一台机器上运行roscore
在这个roscore中,您将看到从roscore中发出的消息,通常是您的核心IP地址+ 11311
然后在第二台机器上,将ROS_MASTER_URI设置为您找到的ros IP +端口。
然后两台机器可以共享主题和服务。
p。如果您在遵循本教程尝试SSH时遇到端口22问题。重新安装open-ssh-server和open-ssh-client