Divide and Conquer

ROS2 Foxy rosbridge_suite 설치 매뉴얼 본문

2025/ROS

ROS2 Foxy rosbridge_suite 설치 매뉴얼

10살 2023. 7. 27. 18:00
728x90

https://www.robotstory.co.kr/king/?vid=898 

 

ROS와 비ROS 사이의 통신: roslibpy

ROS2는 UDP를 기반으로 DDS-RTPS 프로토콜을 통해 통신합니다. 그러므로 웹브라우저같은 TCP를 기반으로 통신하는 어플리케이션은 원래 ROS와 커뮤니케이션이 불가합니다. 하지만 이를 가능하게 하는

www.robotstory.co.kr


~/ros2_ws/src$ git clone https://github.com/RobotWebTools/rosbridge_suite.git
# 빌드

에러

jinsun@jinsun-autolab:~/ros2_ws/src$ kiki
Starting >>> rosapi_msgs
Starting >>> skku_auto_interfaces
Starting >>> rosbridge_msgs
Starting >>> skku_auto_description
Starting >>> rosbridge_test_msgs
Starting >>> skku_auto_cartographer
Starting >>> skku_auto_navigation2
Starting >>> skku_auto_gazebo
Finished <<< skku_auto_description [0.33s]                       
Finished <<< skku_auto_cartographer [0.34s]
Finished <<< skku_auto_navigation2 [0.35s]
Finished <<< skku_auto_gazebo [0.35s]                            
Finished <<< skku_auto_interfaces [0.67s]                        
Starting >>> skku_auto_bringup
Starting >>> skku_auto_teleop
--- stderr: rosapi_msgs                                          
CMake Error at /opt/ros/foxy/share/rosidl_typesupport_c/cmake/get_used_typesupports.cmake:35 (message):
  No 'rosidl_typesupport_c' found
Call Stack (most recent call first):
  /opt/ros/foxy/share/rosidl_typesupport_c/cmake/rosidl_typesupport_c-extras.cmake:8 (get_used_typesupports)
  /opt/ros/foxy/share/rosidl_typesupport_c/cmake/rosidl_typesupport_cConfig.cmake:41 (include)
  /opt/ros/foxy/share/rosidl_default_generators/cmake/rosidl_default_generators-extras.cmake:21 (find_package)
  /opt/ros/foxy/share/rosidl_default_generators/cmake/rosidl_default_generatorsConfig.cmake:41 (include)
  CMakeLists.txt:6 (find_package)


---
Failed   <<< rosapi_msgs [1.12s, exited with code 1]
Aborted  <<< rosbridge_msgs [1.10s]
Aborted  <<< rosbridge_test_msgs [1.09s]
Aborted  <<< skku_auto_bringup [0.77s]                                      
Aborted  <<< skku_auto_teleop [0.76s]

Summary: 5 packages finished [1.61s]
  1 package failed: rosapi_msgs
  4 packages aborted: rosbridge_msgs rosbridge_test_msgs skku_auto_bringup skku_auto_teleop
  3 packages had stderr output: rosapi_msgs rosbridge_msgs rosbridge_test_msgs
  5 packages not processed

에러 찾아서 설치... https://github.com/ros2/ros2/issues/1144

 

colcon build error: No 'rosidl_typesupport_c' found [Focal Foxy] · Issue #1144 · ros2/ros2

Bug report Required Info: Ubuntu 20.04 binary ? DDS implementation: middleware name : rmw_fastrtps_cpp Client library (if applicable): ? Steps to reproduce issue building control_msgs, on Ubuntu 20...

github.com

sudo apt install ros-foxy-rosidl-typesupport-c

그 다음 빌드

jinsun@jinsun-autolab:~/ros2_ws$ kiki
Starting >>> rosapi_msgs
Starting >>> skku_auto_interfaces
Starting >>> rosbridge_msgs
Starting >>> skku_auto_description
Starting >>> rosbridge_test_msgs
Starting >>> skku_auto_cartographer
Starting >>> skku_auto_navigation2
Starting >>> skku_auto_gazebo
Finished <<< skku_auto_description [0.33s]                       
Finished <<< skku_auto_cartographer [0.33s]
Finished <<< skku_auto_navigation2 [0.34s]
Finished <<< skku_auto_gazebo [0.34s]                            
Finished <<< skku_auto_interfaces [0.71s]                        
Starting >>> skku_auto_bringup
Starting >>> skku_auto_teleop
Finished <<< skku_auto_bringup [1.52s]                              
Finished <<< skku_auto_teleop [1.68s]                               
Starting >>> skku_auto
Finished <<< skku_auto [0.18s]                                      
Finished <<< rosbridge_msgs [8.85s]                                  
Finished <<< rosbridge_test_msgs [22.9s]                                
Starting >>> rosbridge_library
Finished <<< rosbridge_library [2.44s]                                
Finished <<< rosapi_msgs [25.8s]                      
Starting >>> rosapi
Finished <<< rosapi [1.38s]                     
Starting >>> rosbridge_server
Finished <<< rosbridge_server [1.09s]                     
Starting >>> rosbridge_suite
Finished <<< rosbridge_suite [0.44s]                     

Summary: 15 packages finished [29.0s]

성공!


ros2 launch rosbridge_server rosbridge_websocket_launch.xml

[rosbridge_websocket-1] [INFO] [1690443468.677225970] [rosbridge_websocket]: Rosbridge WebSocket server started on port 9090
>>> 9090 포트로 웹소켓 생성된 것 확인 완료


ros2 launch rosbridge_server rosbridge_websocket_launch.xml
# 이거 돌악가는 중
~/ros2_ws/src/rosbridge_suite/rosbridge_library/src/rosbridge_library/internal$ python3 test_pub.py
~/ros2_ws/src/rosbridge_suite/rosbridge_library/src/rosbridge_library/internal$ python3 test_sub.py

ros2 topic echo로 찍어서 토픽 출력을 했는데 안 뜸... 


/home/jinsun/ros2_ws/src/pubsub_py/pubsub_py에 만든 것 확인하기

이제 다시 동작 시켜보면

실행코드

ros2 launch rosbridge_server rosbridge_websocket_launch.xml

cd ~/ros2_ws/src/rosbridge_suite/rosbridge_library/src/rosbridge_library/internal
python3 test_pub.py

cd /home/jinsun/ros2_ws/src/pubsub_py/pubsub_py
python3 string_sub.py

ros2 topic list

test_pub이랑 test_sub은 동작하는데 test_pub이랑 string_sub은 동작 안 함 
>>> 아 ㅋㅋㅋ topic 일치 안 해서 그랬네

반대로 실행해 봤다
웹에 등록되지 않은 pub 노드에서 토픽 발행하고
웹에 등록된 sub노드에서 토픽 수신하게 했다
>>> 아래 그림처럼 동작을 안 한다. 
       topic list에는 찍히는데 출력이 안 된다 흠 뭘까
       rqt 그래프를 보면 /client_topic에도 양방향으로 연결된 것을 볼 수 있었다


roslibjs 모듈을 통해 웹에서 pub sub 진행하기

cd ~/ros2_ws/src/pubsub_py/pubsub_py
mkdir -p node-server/html                         # 서버로 사용할 폴더를 생성
cd node-server 

npm install express                               # npm을 통해 express 모듈을 설치
touch app.js && gedit app.js                      # 웹서버 모듈 작성
touch html/index.html && gedit html/index.html    # html 파일 작성
touch html/script.js && gedit html/script.js      # script.js 파일 작성

node app.js                                       # 웹서버를 실행

에러 발생

Error: Cannot find module 'express'

internal/modules/cjs/loader.js:638
throw err;
^
npm install express

다시 실행하니 된다

ros2 launch rosbridge_server rosbridge_websocket_launch.xml


cd ~/ros2_ws/src/pubsub_py/pubsub_py

rma node_modules/
rma package-lock.json 

# npm init # 계속 enter
# npm install 
# npm start
npm install express

node node-server/app.js

 http://localhost:3000

cd /home/jinsun/ros2_ws/src/rosbridge_suite/rosbridge_library/src/rosbridge_library/internal
python3 test_sub.py

cd /home/jinsun/ros2_ws/src/pubsub_py/pubsub_py
ros2 run pubsub_py string_sub 

cd /home/jinsun/ros2_ws/src/pubsub_py/pubsub_py
ros2 run pubsub_py client_sub

 

반응형
Comments