change_id.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_hardware_interface')
00050 
00051 import dynamixel_io
00052 
00053 if __name__ == '__main__':
00054     parser = OptionParser(usage='Usage: %prog [options] OLD_ID NEW_ID', description='Changes the unique ID of a Dynamixel servo motor.')
00055     parser.add_option('-p', '--port', metavar='PORT', default='/dev/ttyUSB0',
00056                       help='motors of specified controllers are connected to PORT [default: %default]')
00057     parser.add_option('-b', '--baud', metavar='BAUD', type="int", default=1000000,
00058                       help='connection to serial port will be established at BAUD bps [default: %default]')
00059                       
00060     (options, args) = parser.parse_args(sys.argv)
00061     
00062     if len(args) < 3:
00063         parser.print_help()
00064         exit(1)
00065         
00066     port = options.port
00067     baudrate = options.baud
00068     old_id = int(args[1])
00069     new_id = int(args[2])
00070     
00071     try:
00072         dxl_io = dynamixel_io.DynamixelIO(port, baudrate)
00073     except RuntimeError, soe:
00074         print 'ERROR:', soe
00075     else:
00076         print 'Changing motor id from %d to %d...' %(old_id, new_id),
00077         if dxl_io.ping(old_id):
00078             dxl_io.set_id(old_id, new_id)
00079             print ' done'
00080             print 'Verifying new id...' ,
00081             if dxl_io.ping(new_id):
00082                 print ' done'
00083             else:
00084                 print 'ERROR: The motor did not respond to a ping with its new id.'
00085         else:
00086             print 'ERROR: The specified motor did not respond to id %d. Make sure to specify the correct baudrate.' % old_id


dynamixel_hardware_interface
Author(s): Antons Rebguns
autogenerated on Sun Oct 5 2014 23:33:10