|
1 | 1 | # coding=utf-8 |
2 | 2 |
|
3 | 3 | import logging |
| 4 | +import math |
4 | 5 |
|
5 | 6 | from .log import setup_logging |
6 | 7 | from .generate import MycobotCommandGenerater |
@@ -156,3 +157,67 @@ def _mesg(self, genre, *args, **kwargs): |
156 | 157 | else: |
157 | 158 | return res |
158 | 159 | return None |
| 160 | + |
| 161 | + def get_radians(self): |
| 162 | + """Get all angle return a list |
| 163 | +
|
| 164 | + Return: |
| 165 | + data_list (list[radian...]): |
| 166 | + """ |
| 167 | + angles = self._mesg(ProtocolCode.GET_ANGLES, has_reply=True) |
| 168 | + return [round(angle * (math.pi / 180), 3) for angle in angles] |
| 169 | + |
| 170 | + def send_radians(self, radians, speed): |
| 171 | + """Send all angles |
| 172 | +
|
| 173 | + Args: |
| 174 | + radians (list): example [0, 0, 0, 0, 0, 0] |
| 175 | + speed (int): 0 ~ 100 |
| 176 | + """ |
| 177 | + calibration_parameters(len6=radians, speed=speed) |
| 178 | + degrees = [self._angle2int(radian * (180 / math.pi)) |
| 179 | + for radian in radians] |
| 180 | + return self._mesg(ProtocolCode.SEND_ANGLES, degrees, speed) |
| 181 | + |
| 182 | + def sync_send_angles(self, degrees, speed, timeout=7): |
| 183 | + t = time.time() |
| 184 | + self.send_angles(degrees, speed) |
| 185 | + while time.time() - t < timeout: |
| 186 | + f = self.is_in_position(degrees, 0) |
| 187 | + if f: |
| 188 | + break |
| 189 | + time.sleep(0.1) |
| 190 | + return self |
| 191 | + |
| 192 | + def sync_send_coords(self, coords, speed, mode, timeout=7): |
| 193 | + t = time.time() |
| 194 | + self.send_coords(coords, speed, mode) |
| 195 | + while time.time() - t < timeout: |
| 196 | + if self.is_in_position(coords, 1): |
| 197 | + break |
| 198 | + time.sleep(0.1) |
| 199 | + return self |
| 200 | + |
| 201 | + # Basic for raspberry pi. |
| 202 | + def gpio_init(self): |
| 203 | + """Init GPIO module. |
| 204 | + Raspberry Pi version need this. |
| 205 | + """ |
| 206 | + import RPi.GPIO as GPIO # type: ignore |
| 207 | + |
| 208 | + GPIO.setmode(GPIO.BCM) |
| 209 | + self.gpio = GPIO |
| 210 | + |
| 211 | + def gpio_output(self, pin, v): |
| 212 | + """Set GPIO output value. |
| 213 | + Args: |
| 214 | + pin: port number(int). |
| 215 | + v: Output value(int), 1 - GPIO.HEIGH, 0 - GPIO.LOW |
| 216 | + """ |
| 217 | + self.gpio.setup(pin, self.gpio.OUT) |
| 218 | + self.gpio.setup(pin, v) |
| 219 | + |
| 220 | + # Other |
| 221 | + def wait(self, t): |
| 222 | + time.sleep(t) |
| 223 | + return self |
0 commit comments