ROS2 네트워크

김주형·2021년 7월 16일
0

ROS2

목록 보기
2/3
post-thumbnail

ROS2는 여러 개의 노드로 이루어져 있습니다. 마스터가 모든 통신을 관리하는 것과는 다르게 ROS2는 검색, 직렬화 및 전송과 같은 기능을 제공하는 종단 간 미들웨어인 DDS(Data Distribution Standard) 를 기반으로 합니다.
ROS2로 일반적인 작업 단계는 다음과 같습니다.
1. ROS2 네트워크에 연결합니다. ROS2 네트워크에 연결하려면 ID를 가지는 ROS2 노드를 생성해야 합니다.
2. 네트워크에 연결되면 Publisher와 Subscriber를 통해 같은 네트워크의 다른 노드들과 데이터를 교환합니다.
3. 노드, 퍼블리셔, 서브스크라이버를 모두 지우면 ROS2 네트워크에서 Matlab을 제거할 수 있습니다.

기본 도메인에 ROS2 노드 생성

ros2 명령어로 기본 도메인에 ID가 0인 노드를 생성할 수 있습니다. 노드는 같은 도메인의 다른 노드들과 정보를 주고 받을 수 있습니다. 반대로 다른 도메인의 노드는 인식하지 못 합니다.

defaultNode = ros2node("/default_node")


clear를 이용해 생성한 노드를 ROS2 네트워크에서 삭제할 수 있습니다.

clear defaultNode

다른 도메인에 ROS2 노드 만들기

기본 도메인이 아닌 다른 도메인에 노드를 만들기 위해서, ros2node의 두번째 인수로 숫자를 입력하면 됩니다. 아래 newDomainNode는 ID 25로 명시된 도메인에 생성되었습니다.

newDomainNode = ros2node("/new_domain_node",25)


특정 도메인의 네트워크의 정보를 보기 위해서 ros2 함수에 ID를 매개변수로 입력하면 됩니다. 다음은 도메인 ID 25에 있는 모든 노드들을 보여줍니다.

기본 도메인 ID 변경하기

노드나 도메인 ID에 특정한 값을 설정하지 않았다면 ROS_DOMAIN_ID는 기본적으로 환경 변수 값을 사용합니다. getenv을 이용해 현제 환경 변수 값을 알 수 있습니다. 환경 변수 값을 설정하지 않았다면 기본적으로 0입니다.

getenv("ROS_DOMAIN_ID")


setenv 명령어에 첫 번째 매개변수로 "ROS_DOMAIN_ID"를 넣고 원하는 숫자를 입력하면 기본 도메인 ID를 설정할 수 있습니다.

setenv("ROS_DOMAIN_ID", 12)
envDomainNode = ros2node("env_domain_node")

profile
안녕하세요!

0개의 댓글