set_torque.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # -*- coding: utf-8 -*-
00003 #
00004 # Software License Agreement (BSD License)
00005 #
00006 # Copyright (c) 2010-2011, Antons Rebguns.
00007 # All rights reserved.
00008 #
00009 # Redistribution and use in source and binary forms, with or without
00010 # modification, are permitted provided that the following conditions
00011 # are met:
00012 #
00013 #  * Redistributions of source code must retain the above copyright
00014 #    notice, this list of conditions and the following disclaimer.
00015 #  * Redistributions in binary form must reproduce the above
00016 #    copyright notice, this list of conditions and the following
00017 #    disclaimer in the documentation and/or other materials provided
00018 #    with the distribution.
00019 #  * Neither the name of University of Arizona nor the names of its
00020 #    contributors may be used to endorse or promote products derived
00021 #    from this software without specific prior written permission.
00022 #
00023 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00024 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00025 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00026 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00027 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00028 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00029 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00030 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00031 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00032 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00033 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00034 # POSSIBILITY OF SUCH DAMAGE.
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 


dynamixel_driver
Author(s): Antons Rebguns, Cody Jorgensen
autogenerated on Wed Aug 26 2015 11:24:35