From 7ae080f6de60616c91d9f3dbb00bdbea7d9cd1c4 Mon Sep 17 00:00:00 2001
From: Anton Tetov <anton@tetov.se>
Date: Thu, 11 Nov 2021 19:50:02 +0100
Subject: [PATCH] update

---
 abb_egm_client/egm_client.py   |  9 ++++++---
 environment.yml                |  1 +
 examples/send_configuration.py | 15 ++++++++++-----
 pyproject.toml                 |  8 ++++----
 4 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/abb_egm_client/egm_client.py b/abb_egm_client/egm_client.py
index 1dc36ff..e8a0878 100644
--- a/abb_egm_client/egm_client.py
+++ b/abb_egm_client/egm_client.py
@@ -1,11 +1,13 @@
 import socket
 import logging
-from typing import Any, Sequence, Tuple
+from typing import Any, Tuple
 
 from abb_egm_client.atomic_counter import AtomicCounter
 
 from abb_egm_client.egm_pb2 import EgmRobot, EgmSensor, EgmHeader
 
+import numpy as np
+import numpy.typing as npt
 
 log = logging.getLogger(__name__)
 
@@ -109,7 +111,7 @@ class EGMClient:
 
         return msg
 
-    def send_planned_configuration(self, configuration: Sequence[float]) -> None:
+    def send_planned_configuration(self, configuration: npt.ArrayLike[float]) -> None:
         """Send target configuration to robot controller.
 
         configuration
@@ -118,7 +120,8 @@ class EGMClient:
         """
         msg = self._create_sensor_msg()
 
-        msg.planned.joints.joints.extend(configuration)
+        conf_as_list = np.asarray(configuration).tolist()
+        msg.planned.joints.joints.extend(conf_as_list)
 
         self.send_msg(msg)
 
diff --git a/environment.yml b/environment.yml
index b776b14..0d84b95 100644
--- a/environment.yml
+++ b/environment.yml
@@ -4,3 +4,4 @@ channels:
 dependencies:
   - python >=3.7, <3.10
   - protobuf
+  - numpy
diff --git a/examples/send_configuration.py b/examples/send_configuration.py
index 1feddc0..73a405f 100644
--- a/examples/send_configuration.py
+++ b/examples/send_configuration.py
@@ -3,6 +3,8 @@ import sys
 from typing import Sequence
 import time
 
+import numpy as np
+import numpy.typing as npt
 
 try:
     from abb_egm_client import EGMClient
@@ -28,13 +30,14 @@ def send_configuration(target_conf: Sequence[float], joint_vel=1.0) -> None:
     egm_client = EGMClient(port=UDP_PORT)
 
     pb_robot_msg = egm_client.receive_msg()
-    start_conf = pb_robot_msg.feedBack.joints.joints
+    start_conf: Sequence[float] = pb_robot_msg.feedBack.joints.joints
 
-    deltas = [
-        target_pos - start_pos for start_pos, target_pos in zip(start_conf, target_conf)
-    ]
+    start_conf_arr = np.array(start_conf)
+    target_conf_arr = np.array(target_conf)
 
-    max_delta = max([abs(d) for d in deltas])
+    deltas: npt.ArrayLike[float] = target_conf_arr - start_conf_arr
+
+    max_delta: float = np.fabs(deltas).max()
 
     num_msgs = round(max_delta / joint_vel * rate)
 
@@ -43,6 +46,8 @@ def send_configuration(target_conf: Sequence[float], joint_vel=1.0) -> None:
         cur_configuration: Sequence[float] = pb_robot_msg.feedBack.joints.joints
 
         print(f"Current configuration {cur_configuration}")
+        
+        new_conf = start_conf_arr
 
         conf = []
         for start_pos, delta in zip(start_conf, deltas):
diff --git a/pyproject.toml b/pyproject.toml
index a8df0f8..4d7a504 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,9 +1,9 @@
 [build-system]
-requires = [
-  "setuptools >= 40.9.0",
-  "wheel",
-]
+requires = ["setuptools >= 40.9.0", "wheel"]
 build-backend = "setuptools.build_meta"
 
 [tool.isort]
 profile = "black"
+
+[tool.mypy]
+plugins = "numpy.typing.mypy_plugin"
-- 
GitLab