[ROS] 프로그래밍 기초 1

happy_quokka·2023년 10월 16일
0

ROS

목록 보기
12/25

1. 패키지 만들기

  1. 패키지를 담을 directory로 이동
$ cd xycar_ws/src/

  1. 패키지 새로 만들기
  • catkin_create_pkg (패키지이름) (패키지가 의존하고 있는 다른 패키지 나열)
$ catkin_create_pkg my_pkg1 std_msgs rospy

  1. 새로 만든 패키지 빌드
  • 디렉토리 하나 올라가서 빌드
$ cd .. 또는 cd ~/xycar_ws
$ catkin_make

또는

$ cm
이렇게 한번에 실행할 수 있다(~/.bashrc 파일에서 alias 선언해놓았기 때문)

  1. 만들어진 패키지 확인
  • my_pkg1이 잘 만들어 졌는지 확인
$ rospack list | grep my_pkg1
또는
$ rospack find my_pkg1

  • my_pkg1이 어떤 패키지를 의존하고 있는지 확인
$ rospack depends1 my_pkg1

2. 코드 작성 (1) - pub.py

  1. ~/xycar_ws/src/my_pkg1/src 디렉토리로 이동
$ cd ~/xycar_ws/src/my_pkg1/src

  1. pub.py 파일 생성
$ gedit pub.py

  1. 생성한 pub.py 파일에 아래의 내용 작성 -> 저장 -> 나가기
#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Twist

rospy.init_node('my_node', anonymous=True)
pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)

msg = Twist()
msg.linear.x = 2.0
msg.linear.y = 0.0
msg.linear.z = 0.0
msg.angular.x = 0.0
msg.angular.y = 0.0
msg.angular.z = 1.8

rate = rospy.Rate(1)

while not rospy.is_shutdown():
    pub.publish(msg)
    rate.sleep()

3. 프로그램 실행

  1. 파일 실행 권한 확인
  • 권한 중 실행 권한인 x 가 없다.
$ ls -l

  1. 실행 권한 부여 후 확인
  • x가 있고 파일 이름이 녹색(실행권한이 있음)임을 확인 가능
$ chmod +x pub.py
$ ls -l

  1. 프로그램 실행
$ roscore

  1. 터미널2 열고 turtle node 실행
$ rosrun turtlesim turtlesim_node

  1. 터미널 3 열고 내가 만든 my_pkg1 패키지의 pub.py 파일 실행
  • 거북이가 빙글빙글 계속 돈다
  • 만약 멈추고 싶다면 ctrl+c 누르면 된다
$ rosrun my_pkg1 pub.py

4. 프로그램 확인

  1. 터미널 하나 더 열어서 node 확인
  • 노드 이름을 지정해주지 않으면 알아서 시리얼 번호가 부여된다.
$ rosnode list

  1. 시각화
$ rqt_graph

5. 코드 작성 (2) - sub.py

  1. turtle이 어떤 토픽에 어떤 메시지를 발행하고 있는지 확인
$ rostopic list
$ rostopic type /turtle1/pose
$ rosmsg show turtlesim/Pose

  1. pub.py가 실행되고 있을 때 pose 토픽에 담긴 메세지 확인
$ rostopic echo /turtle1/pose 

  1. src 폴더로 이동
$ cd xycar_ws/src/my_pkg1/src/

  1. sub.py 파일 생성
$ gedit sub.py

  1. sub.py 파일에 아래의 내용 작성 -> 저장 -> 나가기
#!/usr/bin/env python

import rospy
from turtlesim.msg import Pose

def callback(data):
    s = "Location: %.2f, %.2f" % (data.x, data.y)
    rospy.loginfo(rospy.get_caller_id() + s)

rospy.init_node("my_listener", anonymous=True)
rospy.Subscriber("/turtle1/pose", Pose, callback)
rospy.spin()
  1. 실행권한 부여
$ chmod +x sub.py
또는
$ chmod +x *.py 이건 모든 .py 파일에 권한 부여

  1. sub.py 실행
$ rosrun my_pkg1 sub.py

  1. 그래프 확인
$ rqt_graph

0개의 댓글