From a78d7144061894f6ed211bf394ebb4b0e66f9f45 Mon Sep 17 00:00:00 2001 From: nathanmoder <63596741+nathanmoder@users.noreply.github.com> Date: Sat, 17 Apr 2021 19:51:30 -0400 Subject: [PATCH 1/6] Update MINTlisten.py --- mintpatch/MINTlisten.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mintpatch/MINTlisten.py b/mintpatch/MINTlisten.py index a66409c..f8108a4 100644 --- a/mintpatch/MINTlisten.py +++ b/mintpatch/MINTlisten.py @@ -103,8 +103,8 @@ def listen(): # END LOOP - print("Thank you for using MintPatch!") + #rint("Thank you for using MintPatch!") listener.disconnect("tcp://127.0.0.1:4242") if __name__ == '__main__': - listen() \ No newline at end of file + listen() From b8ffc6597a40c2cb16f3359aa7c3079e80892085 Mon Sep 17 00:00:00 2001 From: nathanmoder <63596741+nathanmoder@users.noreply.github.com> Date: Sat, 17 Apr 2021 19:52:40 -0400 Subject: [PATCH 2/6] Update MINTpatchServer.py --- mintpatch/MINTpatchServer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mintpatch/MINTpatchServer.py b/mintpatch/MINTpatchServer.py index ffdb825..adb8150 100644 --- a/mintpatch/MINTpatchServer.py +++ b/mintpatch/MINTpatchServer.py @@ -31,7 +31,7 @@ def print_servo(self): # Prints the info out in one line as a formatted string. # Every element is seperated by a space. - return '{id} {state} {voltage} {temp} {pos} {speed}'.format(id = self.output_name, + return '\"id\": {id}, \"state\": {state}, \"voltage\": {voltage}, \"temp\": {temp}, \"position\": {pos}, \"speed\": {speed}'.format(id = self.output_name, state = state, voltage = idict["voltage"], temp = idict["temperature"], pos = idict["position"], speed = idict["speed"]) @@ -158,9 +158,9 @@ def running_update(self, console_input, input_length): self.update_motor(rmotor) #Returns a string with all motor info - motor_info='' + motor_info=[] for servo_log in self.log_list: - motor_info=motor_info+self.log_list[servo_log].print_servo()+'\n' + motor_info.append(str(self.log_list[servo_log].print_servo())) return motor_info From 1bb5d1d8507ebec9fa1860ea7566d20a069ca26d Mon Sep 17 00:00:00 2001 From: nathanmoder <63596741+nathanmoder@users.noreply.github.com> Date: Sat, 17 Apr 2021 19:57:09 -0400 Subject: [PATCH 3/6] Update startup.py --- mintpatch/startup.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mintpatch/startup.py b/mintpatch/startup.py index 2fca9be..c91c991 100644 --- a/mintpatch/startup.py +++ b/mintpatch/startup.py @@ -1,4 +1,3 @@ - """ The startup code for MintPatch. Nathan Moder & M. Arnett @@ -18,15 +17,18 @@ import zerorpc def main(): - # """ + """ # Setttings for configuring our pinging to the motors. settings_set = {} + # Get the port name through a system call raw_port_command = os.popen("ls /dev/ttyUSB*") raw_ports = raw_port_command.read() port_list_raw = raw_ports.split() port_list = [] + # Real motors, and matches the launch file simple_l_arm_controller_manager.launch + # port_list = {port} settings = { 'baudrate': 1000000, 'minID': 1, @@ -34,19 +36,20 @@ def main(): 'updateRate' : 20, 'diagnosticsRate' : 1 } + # Get Port List without /dev/ for raw_port in port_list_raw: port = raw_port.replace('/dev/', '') settings_set[port] = settings port_list.append(port) - # """ + """ #This seperate code with the emulated servos included in the directory. #Comment it out when using real motors """ DO NOT REMOVE THIS CODE! Our team has members without constant access to real motors. """ - """ + #""" settings_set = {} port_list={'port_1','port_2'} settings={ @@ -58,14 +61,16 @@ def main(): } settings_set['port_1']=settings settings_set['port_2']=settings - """ + #""" # Making robot manager, and basically listening in on the GUI translator manager = RobotManager(port_list, settings_set) - translator = zerorpc.Server(ServerManager(manager)) + SM_Instance=ServerManager(manager) + SM_Instance.scan(1,1) + translator = zerorpc.Server(SM_Instance) translator.bind("tcp://0.0.0.0:4242") translator.run() if __name__ == '__main__': - main() \ No newline at end of file + main() From e182725dfc59cc9f080736cde032f3971097e8c1 Mon Sep 17 00:00:00 2001 From: nathanmoder <63596741+nathanmoder@users.noreply.github.com> Date: Sat, 17 Apr 2021 21:05:29 -0400 Subject: [PATCH 4/6] Update fakeProxy.py --- mintpatch/fakeProxy.py | 105 +++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 30 deletions(-) diff --git a/mintpatch/fakeProxy.py b/mintpatch/fakeProxy.py index ba762be..31a5b33 100644 --- a/mintpatch/fakeProxy.py +++ b/mintpatch/fakeProxy.py @@ -1,31 +1,76 @@ +""" +The startup code for MintPatch. +Nathan Moder & M. Arnett +3/29/2021 +""" -from emulatedMotor import tm1 -from emulatedMotor import tm2 -from emulatedMotor import tm3 - -class DynomixSerialProxy(): - def __init__(self, - port_name='/dev/ttyUSB0', - port_namespace='ttyUSB0', - baud_rate=1000000, - min_motor_id=1, - max_motor_id=25, - update_rate=5, - diagnostics_rate=1, - error_level_temp=75, - warn_level_temp=70, - readback_echo=False, - protocol_version=2.0): - self.motors=[] - if(port_namespace=='port_1'): - #self.motors[0]=tm1 - self.motors.append(1) - #self.motors[1]=tm2 - self.motors.append(5) - if(port_namespace=='port_2'): - self.motors.append(1) - #print("proxy init") - def connect(self): - self.__find_motors() - def __find_motors(self): - a=1 + +# Imports from custom classes +from MINTpatchServer import ServerManager +from robotManager import RobotManager +from emulatedMotor import EmulatedMotor + +# Import standard libraries +import json, sys, os + +#Imports zerorpc to interact with clients +import zerorpc + +def main(): + """ + # Setttings for configuring our pinging to the motors. + settings_set = {} + + # Get the port name through a system call + raw_port_command = os.popen("ls /dev/ttyUSB*") + raw_ports = raw_port_command.read() + port_list_raw = raw_ports.split() + port_list = [] + + # Real motors, and matches the launch file simple_l_arm_controller_manager.launch + # port_list = {port} + settings = { + 'baudrate': 1000000, + 'minID': 1, + 'maxID': 40, + 'updateRate' : 20, + 'diagnosticsRate' : 1 + } + + # Get Port List without /dev/ + for raw_port in port_list_raw: + port = raw_port.replace('/dev/', '') + settings_set[port] = settings + port_list.append(port) + """ + + #This seperate code with the emulated servos included in the directory. + #Comment it out when using real motors + """ + DO NOT REMOVE THIS CODE! Our team has members without constant access to real motors. + """ + #""" + settings_set = {} + port_list={'port_1','port_2'} + settings={ + 'baudrate': 100, + 'minID': 1, + 'maxID': 50, + 'updateRate' : 100, + 'diagnosticsRate' : 100 + } + settings_set['port_1']=settings + settings_set['port_2']=settings + #""" + + # Making robot manager, and basically listening in on the GUI translator + manager = RobotManager(port_list, settings_set) + SM_Instance=ServerManager(manager) + SM_Instance.scan(1,1) + translator = zerorpc.Server(SM_Instance) + translator.bind("tcp://0.0.0.0:4242") + translator.run() + + +if __name__ == '__main__': + main() From c213ad80747493ac248984c20c9a4383e9775c2c Mon Sep 17 00:00:00 2001 From: nathanmoder <63596741+nathanmoder@users.noreply.github.com> Date: Sat, 17 Apr 2021 21:06:00 -0400 Subject: [PATCH 5/6] Update fakeWrapper.py --- mintpatch/fakeWrapper.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mintpatch/fakeWrapper.py b/mintpatch/fakeWrapper.py index 7b28702..c8d0931 100644 --- a/mintpatch/fakeWrapper.py +++ b/mintpatch/fakeWrapper.py @@ -80,3 +80,4 @@ def get_feedback(self,servo_id): return 'no such servo' + From de77497471fb3b51a8e4eaf457e30f352091cae5 Mon Sep 17 00:00:00 2001 From: nathanmoder <63596741+nathanmoder@users.noreply.github.com> Date: Sat, 17 Apr 2021 21:15:47 -0400 Subject: [PATCH 6/6] Update fakeProxy.py --- mintpatch/fakeProxy.py | 164 +++++++++++++++++++++++------------------ 1 file changed, 91 insertions(+), 73 deletions(-) diff --git a/mintpatch/fakeProxy.py b/mintpatch/fakeProxy.py index 31a5b33..88de0eb 100644 --- a/mintpatch/fakeProxy.py +++ b/mintpatch/fakeProxy.py @@ -1,76 +1,94 @@ -""" -The startup code for MintPatch. -Nathan Moder & M. Arnett -3/29/2021 -""" +#Nathan Moder +from emulatedMotor import tm1 +from emulatedMotor import tm2 +from emulatedMotor import tm3 -# Imports from custom classes -from MINTpatchServer import ServerManager -from robotManager import RobotManager -from emulatedMotor import EmulatedMotor +class DynomixSerialProxy(): + def __init__(self, + port_name='/dev/ttyUSB0', + port_namespace='ttyUSB0', + baud_rate=1000000, + min_motor_id=1, + max_motor_id=25, + update_rate=5, + diagnostics_rate=1, + error_level_temp=75, + warn_level_temp=70, + readback_echo=False, + protocol_version=2.0): + self.motors=[] + self.port_name=port_name + if(port_namespace=='port_1'): + #self.motors[0]=tm1 + self.motors.append(1) + #self.motors[1]=tm2 + self.motors.append(15) + if(port_namespace=='port_2'): + self.motors.append(110) + #print("proxy init") + def connect(self): + self.__find_motors() + def __find_motors(self): + a=1 + def set_goal_position(self, servo_id, goal): + #print(self.port) + if self.port_name=="/dev/port_1": + #print(servo_id) + if 1==int(servo_id): + #print("into if") + tm1.set_goal_speed(goal) + elif int(servo_id)==15: + tm2.set_goal_speed(goal) + elif self.port_name=="/dev/port_2": + if int(servo_id)==110: + tm3.set_goal_speed(goal) -# Import standard libraries -import json, sys, os - -#Imports zerorpc to interact with clients -import zerorpc - -def main(): - """ - # Setttings for configuring our pinging to the motors. - settings_set = {} - - # Get the port name through a system call - raw_port_command = os.popen("ls /dev/ttyUSB*") - raw_ports = raw_port_command.read() - port_list_raw = raw_ports.split() - port_list = [] - - # Real motors, and matches the launch file simple_l_arm_controller_manager.launch - # port_list = {port} - settings = { - 'baudrate': 1000000, - 'minID': 1, - 'maxID': 40, - 'updateRate' : 20, - 'diagnosticsRate' : 1 - } - - # Get Port List without /dev/ - for raw_port in port_list_raw: - port = raw_port.replace('/dev/', '') - settings_set[port] = settings - port_list.append(port) - """ - - #This seperate code with the emulated servos included in the directory. - #Comment it out when using real motors - """ - DO NOT REMOVE THIS CODE! Our team has members without constant access to real motors. - """ - #""" - settings_set = {} - port_list={'port_1','port_2'} - settings={ - 'baudrate': 100, - 'minID': 1, - 'maxID': 50, - 'updateRate' : 100, - 'diagnosticsRate' : 100 - } - settings_set['port_1']=settings - settings_set['port_2']=settings - #""" - - # Making robot manager, and basically listening in on the GUI translator - manager = RobotManager(port_list, settings_set) - SM_Instance=ServerManager(manager) - SM_Instance.scan(1,1) - translator = zerorpc.Server(SM_Instance) - translator.bind("tcp://0.0.0.0:4242") - translator.run() - - -if __name__ == '__main__': - main() + def get_feedback(self,servo_id): + if self.port_name=="/dev/port_1": + if int(servo_id)==1: + if tm1.moving: + tm1.check_while_running() + return { + 'id':tm1.id, + 'goal': 0, + 'position': tm1.angle, + 'error' : 0, + 'speed' : tm1.speed, + 'load' : 0, + 'voltage' : tm1.voltage, + 'temperature' : tm1.temperature, + 'moving' : tm1.moving + } + if int(servo_id)==15: + if tm2.moving: + tm2.check_while_running() + return { + 'id':tm2.id, + 'goal': 0, + 'position': tm2.angle, + 'error' : 0, + 'speed' : tm2.speed, + 'load' : 0, + 'voltage' : tm2.voltage, + 'temperature' : tm2.temperature, + 'moving' : tm2.moving + } + if self.port_name=="/dev/port_2": + if int(servo_id)==110: + if tm3.moving: + tm3.check_while_running() + return { + 'id':tm3.id, + 'goal': 0, + 'position': tm3.angle, + 'error' : 0, + 'speed' : tm3.speed, + 'load' : 0, + 'voltage' : tm3.voltage, + 'temperature' : tm3.temperature, + 'moving' : tm3.moving + } + return 'no such servo' + def set_torque_enabled(self, sid, thing): + a=1