Divide and Conquer
ROS2 Foxy rosbridge_suite 설치 매뉴얼 본문
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
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
'2025 > ROS' 카테고리의 다른 글
ROS2 Humble Docker 컨테이너에 Duckietown (0) | 2024.03.14 |
---|---|
Ubuntu 22.04의 Docker 컨테이너에 ROS2 Humble 설치 (1) | 2024.03.14 |
ROS2 Humble 토픽 한 번만 Publish하는 3가지 방법 (0) | 2023.07.27 |
Visual SLAM을 위한 'NVIDIA Jetson Nano와 함께하는 SLAM의 이해와 구현' (0) | 2023.07.24 |
ROS VirtualBox (0) | 2023.07.14 |