[ROS] 모터 제어 : 모형차 8자 주행

happy_quokka·2023년 10월 16일
0

ROS

목록 보기
24/25

1. my_motor 패키지

xycar_ws의 src에 my_motor 패키지 만들기

2. 8_drive.py

#!/usr/bin/env python

import rospy
import time
from xycar_motor.msg import xycar_motor


rospy.init_node("auto_driver")
pub = rospy.Publisher("xycar_motor", xycar_motor, queue_size=1)

motor_controll = xycar_motor()
speed = 3

def motor_pub(angle, speed):
    global pub
    global motor_controll

    motor_controll.angle = angle
    motor_controll.speed = speed

    pub.publish(motor_controll)

while not rospy.is_shutdown():
    angle = -50 #turn left
    for i in range(4):
        motor_pub(angle, speed)
        time.sleep(0.1)

    angle = 0 #straight
    for i in range(3):
        motor_pub(angle, speed)
        time.sleep(0.1)

    angle = 50 #turn right
    for i in range(4):
        motor_pub(angle, speed)
        time.sleep(0.1)

    angle = 0 #straight
    for i in range(3):
        motor_pub(angle, speed)
        time.sleep(0.1)

3. receiver_8_drive.py

#!/usr/bin/env python

import rospy
from xycar_motor.msg import xycar_motor

def callback(msg):
    rospy.loginfo("angle : %d ", msg.angle)

rospy.init_node("receiver")
rospy.Subscriber("xycar_motor", xycar_motor, callback)


rospy.spin()

4.실행

$ roscore
$ rosrun my_motor 8_drive.py 
$ rosrun my_motor receiver_8_drive.py

5. topic 확인

$ rostopic info /xycar_motor
$ rosmsg show xycar_motor/xycar_motor
$ rostopic echo xycar_motor


0개의 댓글