コード例 #1
0
ファイル: executer.py プロジェクト: TurdOnTheRun/iliketurtles
class Executer():
    def __init__(self, queue):
        self.receiver = Queue()
        self.sender = Queue()
        self.mediator = Mediator(self.receiver, self.sender)
        self.mediator.start()
        rospy.init_node('executer', anonymous=False)
        rospy.on_shutdown(self.shutdown)
        self.rate = rospy.Rate(5)
        self.commander = rospy.Publisher('cmd_vel_mux/input/navi',
                                         Twist,
                                         queue_size=10)
        self.bumper = rospy.Subscriber('mobile_base/events/bumper',
                                       BumperEvent, self.processBump)

    def processBump(self, data):
        if (data.state == BumperEvent.PRESSED):
            package = {
                'type': 'bumper',
            }
            if data.bumper == 1:
                package['value'] = 'front'
            elif data.bumper == 0:
                package['value'] = 'left'
            elif data.bumper == 2:
                package['value'] = 'right'
            sender.put(package)
        else:
            rospy.loginfo("Bumper Event")
            rospy.loginfo(data.bumper)

    def run(self):

        twist = Twist()

        while not rospy.is_shutdown():

            if not self.receiver.empty():
                command = self.receiver.get()
                twist = Twist()
                if command['type'] == 'straight':
                    twist.linear.x = command['value']
                if command['type'] == 'turn':
                    twist.linear.x = 0
                    twist.angular.z = radians(command['value'])
                print(command)

            self.commander.publish(twist)
            self.rate.sleep()

    def shutdown(self):
        # stop turtlebot
        rospy.loginfo("Stopping")
        self.commander.publish(Twist())
        rospy.sleep(1)
コード例 #2
0
from mediator import Mediator
from multiprocessing import Queue

receive = Queue()
send = Queue()
medi = Mediator(receive, send)
medi.start()

while True:
    phrase = input()
    send.put({'text': phrase})