로봇 구동

  • 01_wheel.ipynb

  • 셀 실행시키기
    Ctrl + Enter
import rospy
import json
from std_msgs.msg import String
import time
import math
  • python 모듈 가져오기

pub = rospy.Publisher('/robot_command', String, queue_size=1)
rospy.init_node('zetabot', anonymous=True)
time.sleep(1)
  • zetabot Node 생성

  • robot_command Topic Publisher 생성

def move():
    tmp = {"MoveForward": 1}
    msg = json.dumps(tmp)
    rospy.loginfo("Sent: %s", msg)
    pub.publish(msg)
  • move() 함수 생성

  • {“MoveForward”: 1}을 Json 문자열로 변환

  • 변환한 Message를 Publish

def stop():
    tmp = {"Stop": 0}
    msg = json.dumps(tmp)
    rospy.loginfo("Sent: %s", msg)
    pub.publish(msg)
  • stop() 함수 생성

  • {“Stop”: 0}을 Json 문자열로 변환

  • 변환한 Message를 Publish

def moveTo():
    tmp = {"MoveDelta": -0.5}
    msg = json.dumps(tmp)
    rospy.loginfo("Sent: %s", msg)
    pub.publish(msg)
  • moveTo() 함수 생성

  • {“MoveDelta”: -0.5}을 Json 문자열로 변환

  • 변환한 Message를 Publish

def moveTo(distance):
    tmp = {"MoveDelta": distance}
    msg = json.dumps(tmp)
    rospy.loginfo("Sent: %s", msg)
    pub.publish(msg)
  • moveTo(distance) 함수 생성

  • {“MoveForward”: distance}을 Json 문자열로 변환

  • 변환한 Message를 Publish

def turnTo():
    tmp = {"TurnDelta": math.radians(45)}
    msg = json.dumps(tmp)
    rospy.loginfo("Sent: %s", msg)
    pub.publish(msg)
  • turnTo() 함수 생성

  • 45°를 radian으로 변환

  • {“TurnDelta”: math.radians(45)}을 Json 문자열로 변환

  • 변환한 Message를 Publish

def turnTo(degree):
    tmp = {"TurnDelta": math.radians(int(degree))}
    msg = json.dumps(tmp)
    rospy.loginfo("Sent: %s", msg)
    pub.publish(msg)
  • turnTo(degree) 함수 생성

  • degree(°)를 radian으로 변환

  • radian을 int형으로 변환

  • {“TurnDelta”: math.radians(int(degree))}을 Json 문자열로 변환

  • 변환한 Message를 Publish

move()
time.sleep(2)
stop()
  • move() 함수 실행

  • 2초간 시간 지연

  • stop() 함수 실행

moveTo(1)
  • moveTo(distance) 함수 실행

  • 1 거리 전진

turnTo(170)
time.sleep(1)
stop()
  • turnTo(degree) 함수 실행

  • 170도 회전

  • 1초간 시간 지연

  • stop() 함수 실행

turnTo(25)
time.sleep(1)
stop()
  • turnTo(degree) 함수 실행

  • 25도 회전

  • 1초간 시간 지연

  • stop() 함수 실행