Esempio n. 1
0
	def __init__(self):
		self.myMotor = qwiic_scmd.QwiicScmd()

		self.R_MTR = 0
		self.L_MTR = 1
		self.FWD = 0
		self.BWD = 1

		if self.myMotor.connected == False:
			print("Motor Driver not connected. Check connections.", \
				file=sys.stderr)
			return
		self.myMotor.begin()
		print("Motor initialized.")
		time.sleep(.250)

		#self.myMotor.inversion_mode(1,1)

		# Zero speeds
		self.myMotor.set_drive(0,0,0)
		self.myMotor.set_drive(1,1,0)

		self.myMotor.enable()
		print("Motor enabled")
		time.sleep(.250)
Esempio n. 2
0
    def __init__(self):
        super(Motor, self).__init__()

        self.motor = qwiic_scmd.QwiicScmd()
        self.left = 1
        self.right = 0

        self.fwd = 0
        self.bwd = 1
Esempio n. 3
0
    def __init__(self, *args, **kwargs):
        super(Robot, self).__init__(*args, **kwargs)

        self.motor_driver = qwiic_scmd.QwiicScmd()
        self.left_motor = Motor(self.motor_driver,
                                channel=self.left_motor_channel,
                                alpha=self.left_motor_alpha)
        self.right_motor = Motor(self.motor_driver,
                                 channel=self.right_motor_channel,
                                 alpha=self.right_motor_alpha)
        self.motor_driver.enable()
Esempio n. 4
0
 def __init__(self):
     rospy.loginfo("Setup Move...")
     # setup motor controller
     if rospy.get_param("motor_controller").lower() == 'adafruit':
         self.motor_driver = Adafruit_MotorHAT(
             i2c_bus=int(rospy.get_param("i2c_bus")))
         self.motor_left_ID = 1
         self.motor_right_ID = 2
         self.motor_left = self.motor_driver.getMotor(self.motor_left_ID)
         self.motor_right = self.motor_driver.getMotor(self.motor_right_ID)
         self.all_stop()
     elif rospy.get_param("motor_controller").lower() == 'qwiic':
         self.motor_driver = qwiic_scmd.QwiicScmd()
         self.motor_driver.disable()
     rospy.loginfo("Setup Move Complete")
Esempio n. 5
0
class Motor(HasTraits):
  #-------------------------------------------
  # Class variables for setting up the motor 
  # driver for all instances of the Motor class
	speed = Int()
	myMotor = qwiic_scmd.QwiicScmd(address=0x58)
	myMotor.begin()
	myMotor.set_drive(1,0,0)
	myMotor.set_drive(0,0,0)
	myMotor.enable()
	FWD = 0
	BWD = 1
	
	def __init__(self, side):
		self.side = side
		
		if self.myMotor.is_connected():
			print('Motor driver connection established')
		else:
			print('Motor driver not connected')
		

	#--------------------------------------------
  # Utilize observer pattern so Motor instance
  # can modulate speed in response to change in 
  # speed-value
	@observe('speed')
	def _observe_speed(self, change):
		self._run(change['new'])



	#--------------------------------------------
	# Speed input will be in range of -255 to 255
  # Values < 0 imply reverse direction
	def _run(self, speed):
		if speed < 0: # backward
			self.myMotor.set_drive(self.side, self.BWD, abs(speed))
		else: # forward
			self.myMotor.set_drive(self.side, self.FWD, speed)
	
	#--------------------------------------------
  # Calling disable from any instance of Motor
  # will disable the motor driver for ALL instances
	def disable(self):
		self.myMotor.set_drive(0,0,0)
		self.myMotor.set_drive(1,0,0)
		self.myMotor.disable()
    def setup_motor_controller(self):
        rospy.loginfo("Starting with controller %s", CONTROLLER)
        if CONTROLLER == 'adafruit':
            # setup motor controller
            self.motor_driver = Adafruit_MotorHAT(i2c_bus=1)

            self.motor_left = self.motor_driver.getMotor(
                CircleRobot.motor_left_ID)
            self.motor_right = self.motor_driver.getMotor(
                CircleRobot.motor_right_ID)

            # stop the motors as precaution
            self.all_stop()
        elif CONTROLLER == 'qwiic':
            self.motor_driver = qwiic_scmd.QwiicScmd()
            self.motor_driver.disable()
Esempio n. 7
0
    def __init__(self):
        myMotor = qwiic_scmd.QwiicScmd()

        self.R_MTR = 0
        self.L_MTR = 1
        self.FWD = 0
        self.BWD = 1

        if myMotor.connected == False:
            print("Motor Driver not connected. Check connections.", \
             file=sys.stderr)
            return
        myMotor.begin()
        print("Motor initialized.")
        time.sleep(.250)

        # Zero speeds
        myMotor.set_drive(0, 0, 150)
        myMotor.set_drive(1, 1, 150)
Esempio n. 8
0
    def __init__(self):
        super().__init__('motor_node')

        self.motor_driver = qwiic_scmd.QwiicScmd()
        self.left_motor = 0
        self.right_motor = 1
        self.all_stop()

        self.string_sub = self.create_subscription(
            String,
            'jetbot_motor_string',
            self.string_callback,
            10)
        
        self.twist_sub = self.create_subscription(
            Twist,
            'jetbot_motor_twist',
            self.twist_callback,
            10)
Esempio n. 9
0
class AutoPhatMD:
    TEST = 0
    pastError = 0
    prevSteer = 0
    prevDrive = 0
    myMotor = qwiic_scmd.QwiicScmd()

    def Turn(self, steer):
        if (steer > 200):
            steer = 200
        elif (steer < -200):
            steer = -200
        if (steer < 0):
            self.myMotor.set_drive(0, 0, abs(steer))
        else:
            self.myMotor.set_drive(0, 1, abs(steer))

    def Drive(self, speed):
        if (speed > 150):
            speed = 150
        if (speed > 30):
            for i in range(speed - 7, speed, 1):
                self.myMotor.set_drive(1, 1, i)
                time.sleep(0.01)
        else:
            self.myMotor.set_drive(1, 1, speed)
        self.prevDrive = speed

    def NoError(self):
        self.myMotor.set_drive(0, 0, 0)
        self.myMotor.set_drive(1, 1, 150)

    def Stop(self):
        self.myMotor.set_drive(0, 0, 0)
        self.myMotor.set_drive(1, 0, 0)
        time.sleep(0.05)

    def ManualLeft(self):
        self.myMotor.set_drive(0, 1, 200)
        time.sleep(0.05)

    def ManualRight(self):
        self.myMotor.set_drive(0, 0, 200)
        time.sleep(0.05)

    def ManualSteerStop(self):
        self.myMotor.set_drive(0, 1, 0)
        time.sleep(0.05)

    def ManualForward(self):
        for i in range(60, 120, 20):
            self.myMotor.set_drive(1, 1, i)
            time.sleep(0.01)

    def ManualReverse(self):
        for i in range(60, 120, 20):
            self.myMotor.set_drive(1, 0, i)
            time.sleep(0.01)

    def ManualDriveStop(self):
        self.myMotor.set_drive(1, 0, 0)
        time.sleep(0.05)

    def __init__(self):
        R_MTR = 0
        L_MTR = 1
        FWD = 0
        BWD = 1
        if self.myMotor.connected == False:
            print("Motor Driver not connected. Check connections.",
                  file=sys.stderr)
            return
        self.myMotor.begin()
        print("Motor initialized.")
        time.sleep(.250)
        # Zero Motor Speeds
        self.myMotor.set_drive(0, 0, 0)
        self.myMotor.set_drive(1, 0, 0)
        self.myMotor.enable()
        print("Motor enabled")
Esempio n. 10
0
        motor_driver.enable()
    elif msg.data.lower() == "backward":
        set_speed(motor_left_ID, -1.0)
        set_speed(motor_right_ID, -1.0)
        motor_driver.enable()
    elif msg.data.lower() == "stop":
        all_stop()
    else:
        rospy.logerror(rospy.get_caller_id() + ' invalid cmd_str=%s', msg.data)


# initialization
if __name__ == '__main__':

    # setup motor controller
    motor_driver = qwiic_scmd.QwiicScmd()

    motor_left_ID = 1
    motor_right_ID = 2

    print(motor_left_ID)

    #motor_left = motor_driver.getMotor(motor_left_ID)
    #motor_right = motor_driver.getMotor(motor_right_ID)

    # stop the motors as precaution
    all_stop()

    # setup ros node
    rospy.init_node('jetbot_motors')
Esempio n. 11
0
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
# SOFTWARE.
#==================================================================================
# Example 1
#

from __future__ import print_function
import time
import sys
import math
import qwiic_scmd

myMotor = qwiic_scmd.QwiicScmd()

def runExample():
	print("Motor Test.")
	R_MTR = 0
	L_MTR = 1
	FWD = 0
	BWD = 1

	if myMotor.connected == False:
		print("Motor Driver not connected. Check connections.", \
			file=sys.stderr)
		return
	myMotor.begin()
	print("Motor initialized.")
	time.sleep(.250)
Esempio n. 12
0
from __future__ import print_function
import time
import sys
import math
import qwiic_scmd
from log_setup import logger

#------------------------------------------
# Default I2C assigned by qwiic library is bus 1.
# This motor driver will be using bus 0 therefore
# a modification has been made to change the default
# bus to bus 0 in file:
# ~/.local/lib/python3.6/site-packages/qwiic_i2c/linux_i2c.py
# Line number 65

myMotor = qwiic_scmd.QwiicScmd(address=0x58)


def run_motor_test():
    print("Start: ")
    motor_left = 0
    motor_right = 1
    forward = 0
    backward = 1

    if not myMotor.is_connected():
        print("Motor driver not connected!", file=sys.stderr)
    else:
        print("Motor driver connection established.")

    logger.info('Initializing operation of SCMD module')
 def setup_motor_controller(self):
     rospy.loginfo("Starting with controller %s", CONTROLLER)
     self.motor_driver = qwiic_scmd.QwiicScmd()
     self.motor_driver.disable()