コード例 #1
0
    def __init__(self):
        self.conf = ServoConfig()
        self.mg996r = ServoMotor(0, self.conf.getNeutral('steering'), self.conf.getMin('steering'), self.conf.getMax('steering'), 5)

        # Initialize message variables.
        self.enable = False
        self.pwm = self.conf.getNeutral('steering')

        self.mg996r.set_current_pwm(self.pwm)

        self.robot_host = re.sub("-", "_", socket.gethostname())

        self.steerSub = rospy.Subscriber(self.robot_host + '/steer/set', Steer, self.steerCallback)

        self.steerPWMSub = rospy.Subscriber(self.robot_host + '/steer/set/pwm', Steer, self.steerCallback)
        self.steerDegressSub = rospy.Subscriber(self.robot_host + '/steer/set/degree', ServoDeg, self.steerDegreeCallback)

        self.steerResetSub = rospy.Subscriber(self.robot_host + '/steer/reset', Bool, self.steerResetCallback)

        self.steerPub = rospy.Publisher(self.robot_host + '/steer/get', Steer, queue_size=10)
        self.steerPWMPub = rospy.Publisher(self.robot_host + '/steer/get/pwm', Steer, queue_size=10)
        self.steerDegreePub = rospy.Publisher(self.robot_host + '/steer/get/degree', ServoDeg, queue_size=10)  

        self.steerIntervallPub = rospy.Publisher(self.robot_host + '/steer/get/intervall', ServoIntervall, queue_size=10)
        self.steerIntervallPWMPub = rospy.Publisher(self.robot_host + '/steer/get/intervall/pwm', ServoIntervall, queue_size=10)
        self.steerIntervallDegreePub = rospy.Publisher(self.robot_host + '/steer/get/intervall/degree', ServoIntervallDeg, queue_size=10)

        self.steerChannelPub = rospy.Publisher(self.robot_host + '/steer/get/channel', Int8, queue_size=10)

        self.steerMinPub = rospy.Publisher(self.robot_host + '/steer/get/min', Steer, queue_size=10)
        self.steerMinPWMPub = rospy.Publisher(self.robot_host + '/steer/get/min/pwm', Steer, queue_size=10)
        self.steerMinDegreePub = rospy.Publisher(self.robot_host + '/steer/get/min/degree', ServoDeg, queue_size=10)

        self.steerMaxPub = rospy.Publisher(self.robot_host + '/steer/get/max', Steer, queue_size=10)
        self.steerMaxPWMPub = rospy.Publisher(self.robot_host + '/steer/get/max/pwm', Steer, queue_size=10)
        self.steerMaxDegreePub = rospy.Publisher(self.robot_host + '/steer/get/max/degree', ServoDeg, queue_size=10)

        self.steerNeutralPub = rospy.Publisher(self.robot_host + '/steer/get/neutral', Steer, queue_size=10)
        self.steerNeutralPWMPub = rospy.Publisher(self.robot_host + '/steer/get/neutral/pwm', Steer, queue_size=10)
        self.steerNeutralDegreePub = rospy.Publisher(self.robot_host + '/steer/get/neutral/degree', ServoDeg, queue_size=10)

        self.steerRangePub = rospy.Publisher(self.robot_host + '/steer/get/range', ServoRange, queue_size=10)
        self.steerRangePWMPub = rospy.Publisher(self.robot_host + '/steer/get/range/pwm', ServoRange, queue_size=10)
        self.steerRangeDegreePub = rospy.Publisher(self.robot_host + '/steer/get/range/degree', ServoRangeDeg, queue_size=10)

        self.rate = rospy.Rate(10) # 10hz

        if self.enable:
            self.start()
        else:
            self.stop()
コード例 #2
0
ファイル: stipple.py プロジェクト: krimkus/stipplebot
    def __init__(self, x=0, y=0, width=200):
        self.left_pulley_moving = False
        self.right_pulley_moving = False
        self.x = x
        self.y = y
        self.width = width

        self.left_pulley_position = hypotenuse(x, y)
        self.right_pulley_position = hypotenuse(width - x, y)

        self.left_pulley = PulleyMotor(parent=self,
                                       direction_pin=7,
                                       step_pin=8,
                                       backwards=True)
        self.right_pulley = PulleyMotor(parent=self,
                                        direction_pin=24,
                                        step_pin=23)
        self.pen = ServoMotor()

        self.pulley_queue = multiprocessing.Queue()

        self.points_to_draw = []
コード例 #3
0
ファイル: servo_config.py プロジェクト: Michdo93/robotcar
    def setServo(self, servoName):
        servo_neutral = self.getNeutral(servoName)
        servo_min = self.getMin(servoName)
        servo_max = self.getMax(servoName)

        servo = self.getServo(servoName)

        servo_pwm = servo_neutral

        intervall = 5

        if servoName == "steering":
            charMax = "d"
            charMin = "a"
            turn = "turn right / left"
            servoChannel = 0
        elif servoName == "pan":
            charMax = "a"
            charMin = "d"
            turn = "turn left / right"
            servoChannel = 4
        elif servoName == "tilt":
            charMax = "s"
            charMin = "w"
            turn = "turn down / up"
            servoChannel = 3

        # channel, pwm_neutral, pwm_min, pwm_max, intervall
        servoMotor = ServoMotor(servoChannel, servo_neutral, servo_min,
                                servo_max, intervall)
        servoMotor.set_current_pwm(servo_neutral)

        for current in servo:
            if (current == 'neutral'):
                servo_pwm = servo_neutral

            elif (current == 'min'):
                servo_pwm = servo_min

            elif (current == 'max'):
                servo_pwm = servo_max

            self.__printScreen(charMin, charMax, turn, servoName, current,
                               servo_pwm)

            # pwm.set_pwm(servoChannel, 0, servo_pwm)
            servoMotor.set_current_pwm(servo_pwm)

            while True:
                char = self.__getch()

                if (char == charMin):
                    servo_pwm = servo_pwm - intervall
                    servoMotor.set_current_pwm(servo_pwm)

                    self.__printScreen(charMin, charMax, turn, servoName,
                                       current, servo_pwm)

                if (char == charMax):
                    servo_pwm = servo_pwm + intervall
                    servoMotor.set_current_pwm(servo_pwm)

                    self.__printScreen(charMin, charMax, turn, servoName,
                                       current, servo_pwm)

                if (char == "x"):
                    print("x pressed")
                    self.setServoValue(servoName, current, servo_pwm)
                    self.writeConifgFile()
                    servoMotor.set_current_pwm(servo_neutral)
                    break

        print("Exit program...")

        char = ""
コード例 #4
0
    print("w/s: turn up / down")
    print("a/d: turn left / right")
    print("x:   Exit program")
    print("=== PWM value of the servo motors ===")
    print("PWM value pan servo: ", pan.get_current_pwm())
    print("PWM value tilt servo: ", tilt.get_current_pwm())

    #servo2 pan
    #servo1 tilt


if __name__ == "__main__":
    conf = ServoConfig()

    # channel, pwm_neutral, pwm_min, pwm_max, intervall
    mg996r = ServoMotor(0, conf.getNeutral('steering'),
                        conf.getMin('steering'), conf.getMax('steering'), 5)

    pan = ServoMotor(4, conf.getNeutral('pan'), conf.getMin('pan'),
                     conf.getMax('pan'), 5, -90.0, 90.0)
    tilt = ServoMotor(3, conf.getNeutral('tilt'), conf.getMin('tilt'),
                      conf.getMax('tilt'), 5, -45.0, 45.0)

    print("w/s: turn up / down")
    print("a/d: turn left / right")
    print("x:   Exit program")

    while True:
        char = getch()

        # The Pan-Tilt-Kit turns up.
        if (char == "w"):
コード例 #5
0
import os
import sys
import getpass

env = os.path.expanduser(
    os.path.expandvars('/home/' + getpass.getuser() + '/robotcar/config'))
sys.path.insert(0, env)

from servo_config import ServoConfig

env2 = os.path.expanduser(
    os.path.expandvars('/home/' + getpass.getuser() +
                       '/robotcar/driver/actor'))
sys.path.insert(1, env2)

from servo import ServoMotor

if __name__ == "__main__":
    conf = ServoConfig()

    # channel, pwm_neutral, pwm_min, pwm_max, intervall
    mg996r = ServoMotor(0, conf.getNeutral('steering'),
                        conf.getMin('steering'), conf.getMax('steering'), 5)

    print("a/d: turn left / right")
    print("x:   Exit program")

    mg996r.test_servo()
コード例 #6
0
from motioncontrol import MotionControl
from motionsensor import MotionSensor
from servo import ServoMotor
from ultrasonic import UltrsonicSensor

if __name__ == "__main__":
    config = {}
    with open('config.json') as f:
        config = json.load(f)

    motionControl = MotionControl(config['MultiStepperController'])
    motionControl.setSpeed(1.5)
    motionsensor = MotionSensor()
    ultrasonicSensorFront = UltrsonicSensor(config["FrontUltrsonicSensor"])
    ultrasonicSensorBack = UltrsonicSensor(config["BackUltrsonicSensor"])
    servo = ServoMotor(config['HeadMountServo'])
    servoAngle = 90
    servo.rotate(servoAngle)

    try:
        while 1:
            events = get_gamepad()
            for event in events:
                # print(event.ev_type, event.code, event.state)
                if event.ev_type == 'Key' and event.code == 'BTN_NORTH' and event.state == 0:
                    print('Moving forward')
                    motionControl.move(0.1)
                elif event.ev_type == 'Key' and event.code == 'BTN_EAST' and event.state == 0:
                    print('Moving backward')
                    motionControl.move(-0.1)
                elif event.ev_type == 'Key' and event.code == 'BTN_Z' and event.state == 0:
コード例 #7
0
def test2(photo):
    from time import time
    # t1 = time()
    # draw_photo1(photo)
    # t2 = time()
    # print('time1: ' , round(t2 - t1, 2))

    t1 = time()
    draw_photo2(photo)
    t2 = time()
    print('time2: ', round(t2 - t1, 2))


if __name__ == '__main__':
    stepper = StepperMotor()
    servo = ServoMotor()

    boundaries = Boundaries(left_down_corner=(-4.7, 5.85),
                            right_down_corner=(4.7, 5.85),
                            left_up_corner=(-4.7, 15.35),
                            right_up_corner=(4.7, 15.35))
    pen = Pen()
    photo = Photo('star')
    test2(photo)
    # test() #simple test
    sleep(5)
    # explicit deletation is need in order to call destructor.
    # in destructors we reset positions of motors to 0 degrees and clean GPIO
    del stepper
    del servo
コード例 #8
0
#!/usr/bin/env python
import os
import sys
import getpass

from config.servo_config import ServoConfig

env = os.path.expanduser(
    os.path.expandvars('/home/' + getpass.getuser() +
                       '/robotcar/driver/actor'))
sys.path.insert(0, env)

from servo import ServoMotor

# Main function.
if __name__ == "__main__":
    conf = ServoConfig()

    steering = ServoMotor(0, conf.getNeutral('steering'),
                          conf.getMin('steering'), conf.getMax('steering'), 5)
    pan = ServoMotor(4, conf.getNeutral('pan'), conf.getMin('pan'),
                     conf.getMax('pan'), 5)
    tilt = ServoMotor(3, conf.getNeutral('tilt'), conf.getMin('tilt'),
                      conf.getMax('tilt'), 5)

    steering.reset()
    pan.reset()
    tilt.reset()