1. 개요
ros2-web-bridge는 ROS 2와 웹 애플리케이션 간에 통신을 위한 브릿지이다. 이 브릿지를 사용하면 ROS 2에서 실행 중인 노드들과 웹 기반의 사용자 인터페이스 간에 메시지를 주고받을 수 있다. 주로 ROS 2의 데이터를 시각화하거나 웹 애플리케이션에서 로봇을 제어하는 데 사용된다. ROS 2에서 실행되는 노드들과 웹 애플리케이션 간에 양방향 통신을 가능케 한다. ROS 2의 토픽, 서비스, 액션 등과 같은 통신 메커니즘을 사용하여 데이터를 주고받을 수 있다.
- ro2-web-bridge는 웹 소켓(WebSocket) 프로토콜을 사용하여 통신한다.
- 웹 소켓은 실시간 양방향 통신을 지원하여 ROS 2에서 발생하는 데이터를 실시간으로 웹 애플리케이션에 전달할 수 있다.
2. 사용환경
우부투 20.04, ROS2(Foxy)
3. 설치
nvm을 사용하여 nodejs를 최신버전으로 설치한다. ( nodejs 20.10.0을 사용한다).
다음과 같이 nvm 모듈을 설치 한다.
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
홈 디렉토리에 .nvm 폴더가 생기고 .bashrc에 추가로 정보가 저장된다.
> cd ~
> source .bashrc
> nvm --version
> nvm ls-remote <== 설치 가능한 nodejs 버전을 알아본다.
> nvm install v20.10.0 <= nodejs v20.10.0을 설치한다.
> node -v <== 설치확인
> npm -v
> npm install npm@latest <== 최신버전으로 업데이트
> mkdir -p ~/web_ws/src
> cd web_ws/src
> git clone https://github.com/RobotWebTools/ros2-web-bridge.git
> cd ros2-web-bridge <== 하위 폴더로 이동 ~/web_ws/src/ros2-web-bridge
> sudo npm install <== 필요한 모듈 설치하기 Nodejs version >= 16.13.0.이상이어야 함
에러가 방생한다면 아래의 명령을 실행
> npm audit fix
> pip install git+https://chromium.googlesource.com/external/gyp
> npm cache clean --force
> rm package-lock.json
> sudo npm install int64-napi
> npm update
> sudo npm install
npm install이 삽질을 하는 과정에서 성공적으로 통과되었다. 이제 아래 명령을 실행한다.
> node bin/rosbridge.js <== Websocket started on ws://localhost:9090
새 터미널을 열고 다음 명령을 실행합니다.
> cd ~ /web_ws/src/examples
> node index.js <== ' The web server started on http://localhost:3000'
그런 다음 브라우저에서 http://localhost:3000/html/publisher.html 로 이동합니다.