09_ROS2파라미터
1. 파라미터와 관련된 모든 명령어의 사용예를 실습하고 결과를 캡쳐 하여 제출하라.
● 파라미터 서버확인 (ros2 service list)
RCL(ROS Client Libraries)의 기본 기능으로 모 든 노드가 자신만의 Parameter server를 가지고 있음.
● 파라미터 목록 확인 (ros2 param list)
▷ use_sim_time: 모든 노드의 기본 파라미터로 시뮬레이션 때 사용하는 파라미터.
▷ $ ros2 param list <노드명>을 추가하면 해당 노드만 출력
● 파라미터 내용 확인 (ros2 param describe)
▷ 명령어: $ ros2 param describe <노드명> <파마리터명>
▷ $ ros2 param describe /turtlesim backgroun_b
▷ 파라미터의 이름, 타입, 목적, 최소/최댓값을 출력
● 파라미터 읽기 (ros2 param get)
▷ 명령어: $ ros2 param get <노드명> <파마리터명>
▷ $ ros2 param get /turtlesim backgroun_b
▷ 현재 실행 중인 turtlesim 노드의 배경색 background_r, background_g, background_b 파라미터 출력
● 파라미터 쓰기 (ros2 param set)
▷ 명령어: $ ros2 param set <노드명> <파마리터명> <설정값>
▷ 노드의 다양한 매개변수를 글로벌 매개변수처럼 사용할 수 있게 되어 추가 프로그래밍이나 컴파일 없이 능동적으로 변화 가능한 프로세스를 만들 수 있음.
● 파라미터 저장 (ros2 param dump)
▷ 명령어: $ ros2 param dump <노드명>
▷ 노드의 파라미터를 현재 폴더에 해당 노드이름의 yaml 파일로 저장
▷ 각 파라미터는 yaml 파일 형태의 파라미터 설정 파일을 만들어 초기 파라미터 값 설정 및 노드 실행시에 파라미터 설정 파일을 불러와서 사용 가능.
● 파라미터 저장한 파일 사용
▷ 명령어: $ ros2 run <패키지> <실행파일명> --ros-args --params-file <yaml파일> (노드 -> 실행파일명)
● 파라미터 삭제 (ros2 param delete)
▷ 명령어: $ ros2 param delete <노드명> <파라미터명>
10_ROS2 인터페이스
1. 메시지, 토픽, 서비스, 액션, 인터페이스 용어를 명확히 구분하여 설명하라.
메시지: 노드와 노드 사이에 주고받는 데이터.
토픽: 발행, 구독의 방식이며 여러 구독자에게 단방향 메시지를 발행함
서비스: 요청, 응답 방식의 통신 메커니즘이며 일회성 요청과 응답으로 구성
액션: 비동기+동기 통신 방식이며 목표, 피드백 , 결과로 구성
인터페이스: 노드 사이에 주고받는 메시지의 자료형(type)
2. turtlesim 패키지의 모든 메시지, 서비스, 액션 인터페이스의 내용을 깃허브 사이트의 파일에서 확인하라, 깃허브 주소와 파일내용을 첨부하시오.
● msg interface
▷ 토픽명: / turtle1/cmd_vel
▷ 메시지 인터페이스: geometry_msgs/msg/Twist
▷ geometry_msgs 패키지의 msgs 분류의 Twist 데이터 형태
▷명령어를 통한 인터페이스 내용 확인 (ros interface show)
명령어: $ ros2 interface show <인터페이스명>
▷ 인터페이스관련 명령어 (list / package / proto)
1. 현재 개발 환경의 모든 msg, srv, action 메시지를 보여줌.
명령어: $ ros2 interface list
2-1. msg, srv, action 인터페이스를 담고 있는 패키지의 목록을 보여줌.
명령어: $ ros2 interface packages (주의사항: 's'붙여야 됨)
2-2. package 옵션에 패키지명을 입력하면 지정한 패키지에 포함된 인터페이스들을 보여줌.
명령어: $ ros2 interface package <패키지명>
인터페이스들: (msg, src, action type)
3. proto에 특정 인터페이스 형태를 입력하면 그 인터페이스의 기본 형태를 표시.
명령어: $ ros2 interface proto <인터페이스명>
● service interface
▷ 서비스 인터페이스는 request용 msg 인터페이스와 response용 msg 인터페이스로 구성
▷ *.srv 파일 안에 정의
▷ 서비스명: /Spawn
▷ 서비스 인터페이스: turtlesim/srv/Spawn
▷ request(요청)/response(응답) 메시지는 구분자 --- 로 구분함.
○ /spawn 서비스 사용 명령어: $ ros2 service call /spawn turtlesim/srv/Spawn "{x: 5.5, y: 9, theta: 1.57, name: 'turtle1'}"
○ 파라미터 값 (x, y, theta, name) 을 통해 요청을 하고, 지정한 name으로 거북이가 추가되면서 추가된 거북이의 이름을 반환
○ 즉, x, y, theta, name 은 서비스 요청에 해당 → 서비스 클라이언트단에서 서비스 서버단에 전송하는 값 → 서비스 서버단은 지정된 서비스를 수행하고 name 데이터를 서비스 클라이언트단에 전송
▷명령어를 통한 인터페이스 내용 확인 (ros interface show)
명령어: $ ros2 interface show <인터페이스명>
● action interface
▷ *.action 파일 안에 정의
▷ 액션 인터페이스는 액션 목표 메시지(request), 액션 결과 메시지(result), 액션 피드백 메시지(feedback)로 구성
▷ 각 메시지는 --- 로 구분
▷ 액션명: /turtle1/rotate_absolute
▷ 액션 인터페이스: turtlesim/action/RotateAbsolute
▷명령어를 통한 인터페이스 내용 확인 (ros interface show)
명령어: $ ros2 interface show <인터페이스명>
○ turtlesim/action/RotateAbsolute 은 float32 형 태 의 theta, delta, remaining 라는 세개의 데이터가 있음.
○ 서비스와 마찬가지로 --- 이라는 구분자를 사용하여 액션 목표(goal), 액션 결과(result), 액션 피드백(feedback)으로 나누어 사용.
○ theta는 액션 목표, delta는 액션 결과, remaining는 액션 피드백을 의미.
3. ros 명령어를 이용하여 turtlesim 패키지의 모든 메시지, 서비스, 액션 인터페이스의 내용을 확인하라. 실행결과를 첨부하시오.