sensor_read.py
Go to the documentation of this file.
1 #!/usr/bin/python
2 import usb.core
3 import rospkg
4 
5 existing_idvendor_list = []
6 existing_idproduct_list = []
7 new_idvendor_list = []
8 new_idproduct_list = []
9 
10 def Diff(list1, list2):
11  return (list(list(set(list1)-set(list2)) + list(set(list2)-set(list1))))
12 
13 def add_leading_zeros(product_id):
14  if(product_id != 0):
15  if(len(product_id)==3):
16  return ('0'+product_id)
17  elif(len(product_id)==2):
18  return ('00'+product_id)
19  elif(len(product_id)==1):
20  return ('000'+product_id)
21  else:
22  return product_id
23 
24 raw_input("Unplug all the USB devices from the system and press 'Enter'" + '\n')
25 dev = usb.core.find(find_all=True)
26 for cfg in dev:
27  existing_idvendor_list.append(str(cfg.idVendor))
28  existing_idproduct_list.append(str(cfg.idProduct))
29 
30 ####################### To read the idproduct and idvendor for MCU #######################
31 raw_input("Plug MCU board and press 'Enter'")
32 dev = usb.core.find(find_all=True)
33 for cfg in dev:
34  new_idvendor_list.append(str(cfg.idVendor))
35  new_idproduct_list.append(str(cfg.idProduct))
36 
37 MCU_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list))
38 existing_idvendor_list.append(MCU_idvendor)
39 if(MCU_idvendor == ""):
40  MCU_idvendor = 0
41 
42 MCU_idvendor = add_leading_zeros(format(int(MCU_idvendor), 'x'))
43 MCU_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list))
44 existing_idproduct_list.append(MCU_idproduct)
45 if(MCU_idproduct == ""):
46  MCU_idproduct = 0
47 
48 MCU_idproduct = add_leading_zeros(format(int(MCU_idproduct), 'x'))
49 if (MCU_idvendor == '0' or MCU_idproduct == '0'):
50  print ("Not binding MCU" + '\n')
51 else:
52  print("MCU_idvendor : " + MCU_idvendor + "," +" MCU_idproduct : " + MCU_idproduct + '\n')
53 
54 ####################### To read the idproduct and idvendor for rplidar #######################
55 raw_input("Plug rplidar and press 'Enter'")
56 dev = usb.core.find(find_all=True)
57 for cfg in dev:
58  new_idvendor_list.append(str(cfg.idVendor))
59  new_idproduct_list.append(str(cfg.idProduct))
60 
61 rplidar_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list))
62 existing_idvendor_list.append(rplidar_idvendor)
63 if(rplidar_idvendor == ""):
64  rplidar_idvendor = 0
65 
66 rplidar_idvendor = add_leading_zeros(format(int(rplidar_idvendor), 'x'))
67 rplidar_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list))
68 existing_idproduct_list.append(rplidar_idproduct)
69 if(rplidar_idproduct == ""):
70  rplidar_idproduct = 0
71 
72 rplidar_idproduct = add_leading_zeros(format(int(rplidar_idproduct), 'x'))
73 if (rplidar_idvendor == '0' or rplidar_idproduct == '0'):
74  print ("Not binding rplidar" + '\n')
75 else:
76  print("rplidar_idvendor : " + rplidar_idvendor + "," + " rplidar_idproduct : " + rplidar_idproduct + '\n')
77 
78 ####################### To read the idproduct and idvendor for IMU sensor #######################
79 raw_input("plug imu sensor and press 'Enter'")
80 dev = usb.core.find(find_all=True)
81 for cfg in dev:
82  new_idvendor_list.append(str(cfg.idVendor))
83  new_idproduct_list.append(str(cfg.idProduct))
84 
85 imu_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list))
86 existing_idvendor_list.append(imu_idvendor)
87 if(imu_idvendor == ""):
88  imu_idvendor = 0
89 
90 imu_idvendor = add_leading_zeros(format(int(imu_idvendor), 'x'))
91 imu_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list))
92 existing_idproduct_list.append(imu_idproduct)
93 if(imu_idproduct == ""):
94  imu_idproduct = 0
95 
96 imu_idproduct = add_leading_zeros(format(int(imu_idproduct), 'x'))
97 if (imu_idvendor == '0' or imu_idproduct == '0'):
98  print ("Not binding IMU" + '\n')
99 else:
100  print("imu_idvendor : " + imu_idvendor + "," + " imu_idproduct : " + imu_idproduct + '\n')
101 
102 ####################### To read the idproduct and idvendor for camera #######################
103 raw_input("plug camera and press 'Enter'")
104 dev = usb.core.find(find_all=True)
105 for cfg in dev:
106  new_idvendor_list.append(str(cfg.idVendor))
107  new_idproduct_list.append(str(cfg.idProduct))
108 
109 camera_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list))
110 existing_idvendor_list.append(camera_idvendor)
111 if(camera_idvendor == ""):
112  camera_idvendor = 0
113 
114 camera_idvendor = add_leading_zeros(format(int(camera_idvendor), 'x'))
115 camera_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list))
116 existing_idproduct_list.append(camera_idproduct)
117 if(camera_idproduct == ""):
118  camera_idproduct = 0
119 
120 camera_idproduct = add_leading_zeros(format(int(camera_idproduct), 'x'))
121 if (camera_idvendor == '0' or camera_idproduct == '0'):
122  print ("Not binding camera" + '\n')
123 else:
124  print("camera_idvendor : " + camera_idvendor + "," + " camera_idproduct : " + camera_idproduct + '\n')
125 
126 ####################### print all the values#######################
127 print("MCU_idvendor : " + MCU_idvendor + "," +" MCU_idproduct : " + MCU_idproduct)
128 print("rplidar_idvendor : " + rplidar_idvendor + "," + " rplidar_idproduct : " + rplidar_idproduct)
129 print("imu_idvendor : " + imu_idvendor + "," + " imu_idproduct : " + imu_idproduct)
130 print("camera_idvendor : " + camera_idvendor + "," + " camera_idproduct : " + camera_idproduct)
131 
132 ###################### copying the data to udev rules
133 rospack = rospkg.RosPack()
134 path = rospack.get_path('volta_rules')
135 f= open(path + "/udev_rules.rules","w+")
136 f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+MCU_idvendor+'", ATTRS{idProduct}=="'+MCU_idproduct+'", MODE:="0777", SYMLINK+="mcu"'+ '\n')
137 
138 # For rplidar
139 f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+rplidar_idvendor+'", ATTRS{idProduct}=="'+rplidar_idproduct+'", MODE:="0777", SYMLINK+="rplidar"'+ '\n')
140 
141 # For imu
142 f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+imu_idvendor+'", ATTRS{idProduct}=="'+imu_idproduct+'", MODE:="0777", SYMLINK+="imu"'+ '\n')
143 
144 # For camera
145 f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+camera_idvendor+'", ATTRS{idProduct}=="'+camera_idproduct+'", MODE:="0777", SYMLINK+="camera"')
146 
147 f.close()
def Diff(list1, list2)
Definition: sensor_read.py:10
def add_leading_zeros(product_id)
Definition: sensor_read.py:13


volta_rules
Author(s): Nikhil Venkatesh , Mahendra L Seervi , Kai Jie
autogenerated on Wed Mar 24 2021 02:08:31