구성

  • 마스터 → 노드 정보 관리
  • 노드1 → Publisher, turtle_teleop_key, 키보드 입력
  • 노드2 → Subscriber, turtlesim_node, 조종 되는 거북이
  • 토픽 전송 → /turtle1/cmd_vel, Publisher토픽Subscriber에 전송

터미널 관련

  • 터미널을 여러 개 동시에 작업해야 한다.
    1. roscore 실행
    2. turtlesim_node 실행
    3. turtle_teleop_key 실행
    4. rosnode, rostopic… 실행

ROS 실행

  • 마스터(roscore) 실행
# 터미널 1
roscore
  • ROS node 확인
# 터미널 4
rosnode list
  • 거북이 이동시키기
# 터미널 2
rosrun turtlesim turtlesim_node

# 터미널 4
rosnode list
## 출력 ##
$ rosout/
$ turtlesim/
##########
  • 사용자 입력에 맞춘 토픽 발행
# 터미널 3
rosrun turtlesim turtle_teleop_key # 키보드 입력값을 토픽에 남아서 보내는 일을 함
# 터미널 3 안에서 방향키를 조작하면
# 터미널 2에서 띄운 거북이가 움직일 것이다.
  • 추가 정보 보기
# 터미널 4
rqt_graph # 노드와 토픽 관계 시각화

rostopic list # 현재 어떤 토픽이 전송되는지 볼 수 있음
rostopic list -v # 더 세밀하게 볼 수 있음

rostopic echo /turtle1/cmd_vel # 토픽에 담긴 내용을 볼 수 있음
# 터미널 3에서 방향키를 조작하고,
# 터미널 4에서 출력되는 내용을 확인해 보자

rostopic type /turtle1/cmd_vel # 메시지의 타입을 볼 수 있음
rosmsg show geometry_msgs/Twist # Twist 타입의 메시지는 어떻게 구성되어 있는가?
  • 토픽을 직접 발행해 보기
# 터미널
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
# pub : 토픽을 보낸다
# -1 : 1번 실행한다
# /turtle1/cmd_vel : 토픽
# geometry_msgs/Twist : 메시지 타입
# --'[2.0,0.0,0.0]''[0.0,0.0,1.8]' : 메시지 내용
  • 주기적으로 반복되는 메시지를 보내 보자
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
# 토픽 발행 주기는 1hz, 1초에 한 번
profile
올해로 26세

0개의 댓글