ROS #2

남생이·2024년 10월 2일

ROS

목록 보기
2/28

1. Turtlesim

  • ROS 창시자 Morgan Quigley 박사에 의해 시작된 Ros TUTORIALS 작업 당시 툴개발을 맡고 있던 Josh Faust에 의해 소개됨
  • ros_tutorials 리포지터리 하위에 속해 있음

1.2 명령어

$ ros2 pkg executables turtlesim # turtlesim 패키지에 포함된 노드 확인

$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key
  • topic
$ ros2 pkg executables turtlesim # turtlesim 패키지에 포함된 노드 확인

$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key

# topic
$ ros2 topic list # 현재 실행 중인 토픽 이름 표시 (/turtlesim으로 입력)
$ ros2 topic list -t # 현재 개발 환경에서 동작 중인 모든 노드들의 정보 확인

$ ros2 topic info # 현재 실행중인 토픽 정보 표시
$ ros2 topic type # 현재 실행중인 토픽 타입 표시

$ ros2 topic echo # 특정 토픽을 터미널에 표시
$ ros2 topic echo /turtle1/cmd_vel # 선, 각속도 토픽 확인

$ ros2 topic bw /turtle1/cmd_vel # 토픽 메세지의 크기 확인, 초당 대약폭 확인
$ ros2 topic hz /turtle1/cmd_vel # 토픽의 전송 주기 확인
$ ros2 topic delay /Topic name # 토픽의 지연시간 확인

$ ros2 topic find # 지정 타입을 사용하는 토픽 이름 출력

$ ros2 topic pub <topic_name> <msg_type> "<args>" # 퍼블리시
$ ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y:0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z:1.8}}"
# --once 한번 실행, --rate 1 주기 1HZ 생성

$ ros2 bag record /turtle1/cmd_vel # 토픽을 파일형태로 저장, ctrl+c로 종료
$ ros2 bag info rosbag2...
$ ros2 bag play rosbag2...$ ros2 pkg executables turtlesim # turtlesim 패키지에 포함된 노드 확인

$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key

# topic
$ ros2 topic list # 현재 실행 중인 토픽 이름 표시 (/turtlesim으로 입력)
$ ros2 topic list -t # 현재 개발 환경에서 동작 중인 모든 노드들의 정보 확인

$ ros2 topic info # 현재 실행중인 토픽 정보 표시
$ ros2 topic type # 현재 실행중인 토픽 타입 표시

$ ros2 topic echo # 특정 토픽을 터미널에 표시
$ ros2 topic echo /turtle1/cmd_vel # 선, 각속도 토픽 확인

$ ros2 topic bw /turtle1/cmd_vel # 토픽 메세지의 크기 확인, 초당 대약폭 확인
$ ros2 topic hz /turtle1/cmd_vel # 토픽의 전송 주기 확인
$ ros2 topic delay /Topic name # 토픽의 지연시간 확인

$ ros2 topic find # 지정 타입을 사용하는 토픽 이름 출력

$ ros2 topic pub <topic_name> <msg_type> "<args>" # 퍼블리시
$ ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y:0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z:1.8}}"
# --once 한번 실행, --rate 1 주기 1HZ 생성

$ ros2 bag record /turtle1/cmd_vel # 토픽을 파일형태로 저장, ctrl+c로 종료
$ ros2 bag info rosbag2...
$ ros2 bag play rosbag2...

  • Service
'''service'''
$ ros2 service list # 서비스 목록 확인
$ ros2 service type [서비스 이름]  # 서비스의 타입 확인

$ ros2 service call [서비스 이름][서비스 타입]"{값}" # 특정 서비스르 호출
$ ros2 service call /reset std_srvs/srv/Empty
$ ros2 service call /turtle1/set_pen turtlesim/srv/SetPen "{r: 255, g: 255, width: 10}"

$ ros2 service call /kill turtlesim/srv/Kill "name: 'turtle1'"
$ ros2 service call /spawn turtlesim/srv/Spawn "{x: 5.5, y: 9.0, theta: 1.57, name: 'leonardo'}"

$ ros2 service find [서비스 타입] # 지정 서비스 타입의 서비스 출력

  • action
'''action'''
$ ros2 action list # 실행 중인 액션 이름 표시
$ ros2 action info # 실행중인 액션이 정보 표시

$ ros2 action goal # 액션의 목표지정
$ ros2 action send_goal <action_name><action_type>"<values>" # 액션 목표 전달
$ ros2 action send_goal /turtle1/rotate_absolute turtelsim.action.RotateAbsolute "{theta:1.5708}"

  • parameter
'''parameter'''
$ ros2 param list # 파라미터 목록 확인
$ ros2 param describe [노드이름][파라미터 이름] # 파라미터 내용 확인

$ ros2 param get [노드이름][파라미터 이름] # 파라미터 읽기
$ ros2 param get /turtelsim background_r

$ ros2 param set [노드이름][파라미터 이름][] # 파라미터 쓰기
$ ros2 param set /turtlesim background_r 255

$ ros2 param dump [노드이름] # 파라미터 저장

$ ros2 param delete [노드이름][파라미터 이름] # 파라미터 삭제

  • service, action interface
'''service, action interface'''
$ ros2 interface show # 지정 인터페이스의 데이터 형태 출력, ros2의 service, action을 사용하기 위한 type의 구조 확인
$ ros2 interfaace package # 사용 가능한 모든 인터페이스 목록 출력
$ ros2 interface package # 특정 패키지에서 사용가능한 인터페이스 목록 출력
$ ros2 interface packages # 인터페이스 패키지들의 전체 목록 출력
$ ros2 interface proto # 지정 패키지의 프로토타입 출력


1.3 Rqt

  • 플러그인 형태로 다양한 도구와 인터페이스를 구현할 수 있는 그래픽 사용자 인터페이스 프레임 워크
  • 다양한 목적의 GUI 툴을 모아둔 Ros의 종합 GUI 툴박스
profile
공부하는 거북이

0개의 댓글