Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 __author__ = 'Antons Rebguns'
00038 __copyright__ = 'Copyright (c) 2010-2011 Antons Rebguns'
00039
00040 __license__ = 'BSD'
00041 __maintainer__ = 'Antons Rebguns'
00042 __email__ = 'anton@email.arizona.edu'
00043
00044
00045 import sys
00046 from optparse import OptionParser
00047
00048 import roslib
00049 roslib.load_manifest('dynamixel_driver')
00050
00051 from dynamixel_driver import dynamixel_io
00052
00053 if __name__ == '__main__':
00054 usage_msg = 'Usage: %prog [options] ID [On|Off]'
00055 desc_msg = 'Turns the torque of specified Dynamixel servo motor on or off.'
00056 epi_msg = 'Example: %s --port=/dev/ttyUSB1 --baud=57600 1 Off' % sys.argv[0]
00057
00058 parser = OptionParser(usage=usage_msg, description=desc_msg, epilog=epi_msg)
00059 parser.add_option('-p', '--port', metavar='PORT', default='/dev/ttyUSB0',
00060 help='motors of specified controllers are connected to PORT [default: %default]')
00061 parser.add_option('-b', '--baud', metavar='BAUD', type="int", default=1000000,
00062 help='connection to serial port will be established at BAUD bps [default: %default]')
00063
00064 (options, args) = parser.parse_args(sys.argv)
00065
00066 if len(args) < 3:
00067 parser.print_help()
00068 exit(1)
00069
00070 port = options.port
00071 baudrate = options.baud
00072 motor_id = int(args[1])
00073 torque_on = args[2]
00074
00075 try:
00076 dxl_io = dynamixel_io.DynamixelIO(port, baudrate)
00077 except dynamixel_io.SerialOpenError, soe:
00078 print 'ERROR:', soe
00079 else:
00080 print 'Turning torque %s for motor %d' % (torque_on, motor_id)
00081 if dxl_io.ping(motor_id):
00082 if torque_on.lower() == 'off':
00083 torque_on = False
00084 elif torque_on.lower() == 'on':
00085 torque_on = True
00086 else:
00087 parser.print_help()
00088 exit(1)
00089 dxl_io.set_torque_enabled(motor_id, torque_on)
00090 print 'done'
00091 else:
00092 print 'ERROR: motor %d did not respond. Make sure to specify the correct baudrate.' % motor_id
00093