Create motor_control.py
This commit is contained in:
99
scripts/motor_control.py
Normal file
99
scripts/motor_control.py
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
from dis import dis
|
||||||
|
from sys import breakpointhook
|
||||||
|
import rospy
|
||||||
|
from std_msgs.msg import Int32
|
||||||
|
from std_msgs.msg import Float64
|
||||||
|
import time
|
||||||
|
|
||||||
|
motor_vel0 = 0
|
||||||
|
motor_vel1 = 50
|
||||||
|
motor_vel2 = 100
|
||||||
|
motor_vel3 = 250
|
||||||
|
motor_vel10000 = 10
|
||||||
|
end_flag = 1
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
def camera_callback(data):
|
||||||
|
global position
|
||||||
|
position = data.data
|
||||||
|
rospy.loginfo("Position is %d", position)
|
||||||
|
motorL_pub = rospy.Publisher('motorL_chatter', Int32, queue_size=100)
|
||||||
|
motorR_pub = rospy.Publisher('motorR_chatter', Int32, queue_size=100)
|
||||||
|
servo_pub = rospy.Publisher('servo_chatter', Int32, queue_size=100)
|
||||||
|
if distance_front_sub > 10:
|
||||||
|
if position == -2:
|
||||||
|
velocity_R = motor_vel1
|
||||||
|
velocity_L = motor_vel3
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('left - position -2')
|
||||||
|
elif position == -1:
|
||||||
|
velocity_R = motor_vel2
|
||||||
|
velocity_L = motor_vel3
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('left - position -1')
|
||||||
|
elif position == 0:
|
||||||
|
velocity_R = motor_vel3
|
||||||
|
velocity_L = motor_vel3
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('straight')
|
||||||
|
elif position == 1:
|
||||||
|
velocity_R = motor_vel3
|
||||||
|
velocity_L = motor_vel2
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('right - position 1')
|
||||||
|
elif position == 2:
|
||||||
|
velocity_R = motor_vel3
|
||||||
|
velocity_L = motor_vel2
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('right - position 2')
|
||||||
|
elif position == 10000:
|
||||||
|
velocity_R = motor_vel10000
|
||||||
|
velocity_L = motor_vel10000
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('Driving stop')
|
||||||
|
|
||||||
|
time.sleep(2)
|
||||||
|
velocity_L = motor_vel0
|
||||||
|
velocity_R = motor_vel0
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
time.sleep(1)
|
||||||
|
servo_pub.publish(end_flag)
|
||||||
|
print(f'Finish & send the end topic')
|
||||||
|
rospy.is_shutdown()
|
||||||
|
time.sleep(20000)
|
||||||
|
else:
|
||||||
|
velocity_L = motor_vel0
|
||||||
|
velocity_R = motor_vel0
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('stop')
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
velocity_L = motor_vel0
|
||||||
|
velocity_R = motor_vel0
|
||||||
|
motorL_pub.publish(velocity_L)
|
||||||
|
motorR_pub.publish(velocity_R)
|
||||||
|
print('stop(sonic)')
|
||||||
|
|
||||||
|
def sonicFrontCallback(disF):
|
||||||
|
global distance_front_sub
|
||||||
|
distance_front_sub = disF.data
|
||||||
|
rospy.loginfo("Distance_front: %f", distance_front_sub)
|
||||||
|
|
||||||
|
def listener():
|
||||||
|
rospy.init_node('listener', anonymous=False)
|
||||||
|
rospy.Subscriber('sonic_chatter_front', Float64, sonicFrontCallback)
|
||||||
|
rospy.Subscriber('camera_chatter', Int32, camera_callback)
|
||||||
|
|
||||||
|
rospy.spin()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
listener()
|
||||||
Reference in New Issue
Block a user