Не удается установить sh подключение к веб-серверу с использованием rosbridge - PullRequest
1 голос
/ 01 апреля 2020

Я создал простую страницу HTML для управления перемещением симулированной черепашьей беседки, используя roslaunch rosbridge_server rosbridge_websocket.launch, следуя этому руководству.

Однако в веб-консоли страницы HTML (F12) он показывает ошибку "Firefox не может установить sh соединение с сервером по адресу ws: // localhost: 9090 /." Я использую rosbridge по умолчанию для websocket (9090). В Терминале я также получаю сообщения об ошибках:

[-] при сбое рукопожатия при открытии WebSocket («Соединение WebSocket отклонено: происхождение« ноль »не разрешено»)

[-] прерывание соединения с партнером tcp4: 127.0.0.1: 41290 с abort = False: соединение с WebSocket отклонено: источник 'null' не разрешен.

У кого-нибудь есть предложения, как мне это исправить?

1 Ответ

0 голосов
/ 02 апреля 2020

Учитывая, что вы выполнили учебник по ROS и создали файл HTML, как показано в Учебное пособие по Ros Bridge , вам нужно выполнить:

  • runcore
  • rosrun rospy_tutorials add_two_ints_server
  • roslaunch rosbridge_server rosbridge_websocket.launch

Теперь, когда они у вас есть, вам нужно отправить файл html / javascript (например, просто. html) и запустить службы et c. Например, вы можете обслуживать simple. html, используя SimpleHTTPServer , см. Ниже пример (например, 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).

...