ROS : WebSocket ROS 연결 (roslibpy 라이브러리)

Chloé·2023년 5월 11일

ROS의 roslibpy 라이브러리란?

Python을 사용하여 ROS(로봇 운영체제)와 통신하기 위한 라이브러리



1. VMware에 ubuntu 설치


  1. https://releases.ubuntu.com/20.04/ 에 접속해서 자기 환경에 맞는 image를 선택한다


  1. VMware를 실행한 뒤 새로운 가상환경을 생성


  1. 1번에서 받은 image를 넣어준다


  1. 컴퓨터 환경에 따라 10 ~ 20분 기다려준다
    나는 20분^^



2. ROS 설치


ROS에는 여러 버전이 있는데 나는 Foxy 버전을 설치했다
ROS 설치는 GPT 답변으로 대신한다ㅎㅎ


2-1. Ubuntu 버전 확인

ROS Foxy는 Ubuntu 20.04 (Focal) 이상에서 지원됩니다.
따라서 사용 중인 Ubuntu 버전이 20.04인지 확인해야 합니다.
터미널을 열고 다음 명령어를 실행하여 Ubuntu 버전을 확인합니다:

lsb_release -a

출력된 정보에서 "Description"이 "Ubuntu 20.04.x LTS"와 같은 형식인지 확인합니다.



2-2. ROS Foxy 설치

ROS Foxy를 설치하기 위해 다음 명령어를 터미널에 입력합니다:

sudo apt update
sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2.list'
sudo apt update
sudo apt install ros-foxy-desktop

위 명령어는 ROS Foxy 설치에 필요한 패키지를 설치하고, ROS 저장소를 시스템에 추가한 후 ROS Foxy Desktop 설치를 수행합니다.



2-3. 환경 설정

ROS를 사용하기 위해 환경을 설정해야 합니다. 다음 명령어를 실행하여 ROS 환경을 설정합니다:

source /opt/ros/foxy/setup.bash

이 명령어를 터미널 세션마다 실행하거나, .bashrc 파일에 해당 명령어를 추가하여 로그인할 때마다 자동으로 환경이 설정되도록 할 수 있습니다:

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc

이제 ROS Foxy가 설치되었으며, ROS 명령어 및 도구를 사용할 수 있습니다.



3. roslibpy 설치

pip install roslibpy


pip가 설치 되어있지 않은 경우

sudo apt install python3-pip


4. Python 코드 작성


  1. ROS 패키지를 생성한다
ros2 pkg create {패키지 이름} --build-type ament_python --dependencies rclpy

패키지 이름은 보통 my_package로 쓰는듯
다음부터 나올 코드에는 my_package로 표기하겠다




2. Python 스크립트 파일을 생성한다

cd my_package
mkdir src
touch src/my_script.py


3. my_script 파일에 코드를 작성한다
import roslibpy

# ROS 마스터에 연결
client = roslibpy.Ros(host='{웹소켓 주소}')
client.run()

# 토픽 구독 콜백 함수
def callback(message):
    print('Received message:', message)

# 토픽 구독
listener = roslibpy.Topic(client, '{토픽이름}', 'std_msgs/String')
listener.subscribe(callback)

# 메시지 발행
publisher = roslibpy.Topic(client, '{토픽이름}', 'std_msgs/String')
message = roslibpy.Message({'data': 'Hello, ROS!'})
publisher.publish(message)

# 연결 종료
client.terminate()

listener가 메세지 수신, publisher가 메세지를 발신하는 코드이다
더 많은 예시코드는 https://roslibpy.readthedocs.io/en/latest/examples.html 를 참고



  1. 실행권한 부여
chmod +x src/my_script.py


  1. ROS 패키지를 빌드하고 실행
colcon build --packages-select my_package
ros2 run my_package my_script.py

ros2 run을 돌렸을 때 Package {이름} not found라는 오류가 뜰 경우,
root 폴더에서 colcon build 명령어를 사용해 빌드해주고
source install/setup.bash 이 명령어를 실행해주면 된다

profile
안녕하세용

2개의 댓글

comment-user-thumbnail
2023년 5월 12일

빨리 소켓통신 해주시죠? ಠ_ಠ (갓 속눈썹펌한 ㅎㅅ,ㅈㅇ)

1개의 답글