66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import argparse
 | |
| import numpy
 | |
| import time
 | |
| import sys
 | |
| 
 | |
| import pypot.dynamixel
 | |
| 
 | |
| N = 1000
 | |
| 
 | |
| 
 | |
| def read_register(dxl, register, ids):
 | |
|     print('\tReading {} times the {}...'.format(N, register))
 | |
| 
 | |
|     t = []
 | |
|     getter = getattr(dxl, 'get_{}'.format(register))
 | |
| 
 | |
|     for _ in range(N):
 | |
|         start = time.time()
 | |
|         getter(ids)
 | |
|         end = time.time()
 | |
|         t.append(1000 * (end - start))
 | |
| 
 | |
|     print('\tTook {}ms (STD={}) per read'.format(numpy.mean(t), numpy.std(t)))
 | |
| 
 | |
| 
 | |
| def full_test(dxl, ids):
 | |
|     print('Testing the communication speed with motor{} {}'.format('s' if len(ids) else '',
 | |
|                                                                    ids))
 | |
|     read_register(dxl, 'present_position', ids)
 | |
|     read_register(dxl, 'control_table', ids)
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     available_ports = pypot.dynamixel.get_available_ports()
 | |
| 
 | |
|     parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | |
|                                      description='Test low-level communication with Dynamixel motors.')
 | |
| 
 | |
|     parser.add_argument('-p', '--ports',
 | |
|                         type=str, nargs='+',
 | |
|                         default=available_ports,
 | |
|                         help='Select which port(s) to test')
 | |
| 
 | |
|     parser.add_argument('-b', '--baudrate',
 | |
|                         type=int, choices=[57600, 1000000], default=1000000,
 | |
|                         help='Sets the baudrate')
 | |
| 
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     for port in args.ports:
 | |
|         print('Now testing port {} with {}bds...'.format(port, args.baudrate))
 | |
| 
 | |
|         print('Opening connection...')
 | |
|         with pypot.dynamixel.DxlIO(port, baudrate=args.baudrate) as dxl:
 | |
|             print('Ok!')
 | |
|             print('Scanning the bus...',)
 | |
|             sys.stdout.flush()
 | |
|             ids = dxl.scan()
 | |
|             print('Done!')
 | |
|             print('Ids found: {}'.format(ids))
 | |
| 
 | |
|             full_test(dxl, ids[:1])
 | |
|             full_test(dxl, ids)
 | |
| 
 | |
|         print('Closing port')
 |