在本教程之后,我已经使用roslaunch rosbridge_server rosbridge_websocket.launch
创建了一个简单的HTML页面来控制模拟的Gazebo Turtlebot的运动。
但是,在HTML页面(F12)的Web控制台中,它显示错误“ Firefox无法在ws:// localhost:9090 /建立与服务器的连接”。我正在为websocket(9090)使用默认的rosbridge。在终端机中,我还收到错误消息:
[-] WebSocket打开握手失败(“ WebSocket连接被拒绝:不允许源'null')”
[-]放弃与对等tcp4:127.0.0.1:41290的连接,且abort = False:WebSocket连接被拒绝:不允许源'null'。
有人对我如何解决此问题有任何建议吗?
答案 0 :(得分:0)
鉴于您已遵循ROS教程并创建了Ros Bridge tutorial中所示的HTML文件,则必须运行:
runcore
rosrun rospy_tutorials add_two_ints_server
roslaunch rosbridge_server rosbridge_websocket.launch
现在您已经启动并运行了这些程序,您需要提供html / javascript文件(例如 simple.html )并启动服务等。例如,您可以提供使用SimpleHTTPServer来实现simple.html ,请参见下面的示例(例如 simplehttpserver_test.py ):
#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/':
self.path = '/simple.html'
return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Handler = MyRequestHandler
server = SocketServer.TCPServer(('127.0.0.1', 9089), Handler)
server.serve_forever()
运行 simplehttpserver_test.py 后,您可以在 127.0.0.1:9089 上打开浏览器,并且应该能够使它运行。
请注意,SimpleHTTPServer提供当前目录及以下目录中的文件,将目录结构直接映射到HTTP请求,这意味着 simple.html 应该在同一目录中(或以下) )目录作为 simplehttpserver_test.py 。最后, simplehttpserver_test.py 的端口应与 Rosbridge WebSocket服务器所使用的端口不同(例如,默认为9090)。