From 3d374c940734ea8735f68138791f1ff5952fe37a Mon Sep 17 00:00:00 2001 From: BkPankaj Date: Wed, 21 Feb 2024 11:31:51 +0530 Subject: [PATCH] changed '!=' to 'is not'inside MotorDriverROS2 block --- .../components/blocks/collection/control/MotorDriverROS2.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/blocks/collection/control/MotorDriverROS2.json b/frontend/src/components/blocks/collection/control/MotorDriverROS2.json index 71271f66..dd2cef41 100644 --- a/frontend/src/components/blocks/collection/control/MotorDriverROS2.json +++ b/frontend/src/components/blocks/collection/control/MotorDriverROS2.json @@ -1 +1 @@ -{"editor":{"id":"bb24521a-8c41-4f55-8e96-b7aff41c4297","locked":true,"offsetX":35,"offsetY":98,"zoom":100,"gridSize":0,"layers":[{"id":"50937002-f39a-4d49-a9eb-39771635497f","type":"diagram-links","isSvg":true,"transformed":true,"models":{"1e2cd58f-7aae-41e9-bfbb-777e1296b017":{"id":"1e2cd58f-7aae-41e9-bfbb-777e1296b017","type":"default","selected":false,"source":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","sourcePort":"a23d135a-c5ad-4eac-8978-9c8fdae27da3","target":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","targetPort":"85b9140d-79ee-46ae-942e-f103dfe70aae","points":[{"id":"7b0064bc-9032-4093-9745-1b9add0d01ce","type":"point","x":188.5,"y":258.5},{"id":"c7264bba-cc90-4fb5-82e7-270afc776544","type":"point","x":378.5,"y":350.5}],"labels":[],"width":3,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)"},"f13df527-0eea-46a7-ba57-c8967f56a2d6":{"id":"f13df527-0eea-46a7-ba57-c8967f56a2d6","type":"default","selected":false,"source":"78669ed1-e751-4ec8-ae57-b87a640feb4b","sourcePort":"80c09fc1-951c-412b-8395-f298f56faf68","target":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","targetPort":"424fe5f3-8908-46b3-81f2-47e3b7acd14f","points":[{"id":"50a22531-04b5-408c-8805-3d9f8bad3982","type":"point","x":192.5,"y":364.5},{"id":"aa570841-6125-4a9d-97c3-68476d81013e","type":"point","x":378.5,"y":557.5}],"labels":[],"width":3,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)"},"3ff23423-89db-4495-bc80-ec747b014e77":{"id":"3ff23423-89db-4495-bc80-ec747b014e77","type":"default","selected":false,"source":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","sourcePort":"a6d95f72-926d-4334-9737-9b6e9b4206c0","target":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","targetPort":"42dddbf9-3f8e-45b9-8a50-7ba984f72abf","points":[{"id":"e517fdd6-87e8-44b6-80d9-8f6da0b71dbe","type":"point","x":864,"y":37.5},{"id":"70c6e2da-8e29-486a-a19d-25fcfad41f8b","type":"point","x":884.984375,"y":143.5}],"labels":[],"width":3,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)"}}},{"id":"220b70ae-199a-4bc2-8a5d-05e7ec6ae5ca","type":"diagram-nodes","isSvg":false,"transformed":true,"models":{"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba":{"id":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","type":"basic.input","selected":false,"x":95,"y":232,"ports":[{"id":"a23d135a-c5ad-4eac-8978-9c8fdae27da3","type":"port.output","x":181,"y":251,"name":"input-out","alignment":"right","parentNode":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","links":["1e2cd58f-7aae-41e9-bfbb-777e1296b017"],"in":false,"label":"Vels","hideLabel":true}],"data":{"name":"Vels"}},"78669ed1-e751-4ec8-ae57-b87a640feb4b":{"id":"78669ed1-e751-4ec8-ae57-b87a640feb4b","type":"basic.input","selected":false,"x":99,"y":338,"ports":[{"id":"80c09fc1-951c-412b-8395-f298f56faf68","type":"port.output","x":185,"y":357,"name":"input-out","alignment":"right","parentNode":"78669ed1-e751-4ec8-ae57-b87a640feb4b","links":["f13df527-0eea-46a7-ba57-c8967f56a2d6"],"in":false,"label":"Enable","hideLabel":true}],"data":{"name":"Enable"}},"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a":{"id":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","type":"basic.code","selected":true,"x":369,"y":65,"ports":[{"id":"85b9140d-79ee-46ae-942e-f103dfe70aae","type":"port.input","x":371,"y":343,"name":"Vels","alignment":"left","parentNode":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","links":["1e2cd58f-7aae-41e9-bfbb-777e1296b017"],"in":true,"label":"Vels","hideLabel":false},{"id":"424fe5f3-8908-46b3-81f2-47e3b7acd14f","type":"port.input","x":371,"y":550,"name":"Enable","alignment":"left","parentNode":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","links":["f13df527-0eea-46a7-ba57-c8967f56a2d6"],"in":true,"label":"Enable","hideLabel":false},{"id":"42dddbf9-3f8e-45b9-8a50-7ba984f72abf","type":"port.parameter","x":877.484375,"y":136,"name":"ROSTopic","alignment":"top","parentNode":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","links":["3ff23423-89db-4495-bc80-ec747b014e77"],"in":true,"label":"ROSTopic","hideLabel":false}],"data":{"code":"#!/usr/bin/env python3\n\nimport numpy as np\n\nimport rclpy\nfrom rclpy.node import Node\nfrom cv_bridge import CvBridge\nfrom geometry_msgs.msg import Twist\n\nbridge = CvBridge()\nvelocities = 0\n\n# ros2 node class\nclass VelPublisher(Node):\n\n def __init__(self, topic):\n super().__init__('vel_publisher')\n self.publisher_ = self.create_publisher(Twist, topic, 1)\n timer_period = 0.5 # seconds\n self.timer = self.create_timer(timer_period, self.timer_callback)\n\n def timer_callback(self):\n global velocities\n msg = Twist()\n \n try:\n msg.linear.x = float(velocities[0])\n msg.linear.y = float(velocities[1])\n msg.linear.z = float(velocities[2])\n msg.angular.x = float(velocities[3])\n msg.angular.y = float(velocities[4])\n msg.angular.z = float(velocities[5])\n except IndexError:\n print(\"bad length for input array\")\n return\n self.publisher_.publish(msg)\n\n\n\ndef main(inputs, outputs, parameters, synchronise):\n \n global velocities\n\n auto_enable = False\n try:\n enable = inputs.read_number('Enable')\n except Exception:\n auto_enable = True\n\n rclpy.init()\n vel_publisher = VelPublisher(parameters.read_string('ROSTopic'))\n\n try:\n\n while auto_enable or inputs.read_number('Enable'):\n\n velocities = inputs.read_array('Vels')\n if velocities != None:\n rclpy.spin_once(vel_publisher) \n synchronise() \n \n except KeyboardInterrupt:\n\n vel_publisher.destroy_node()\n rclpy.shutdown()\n","frequency":"30","params":[{"name":"ROSTopic"}],"ports":{"in":[{"name":"Vels"},{"name":"Enable"}],"out":[]},"size":{"width":"988px","height":"585px"}}},"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35":{"id":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","type":"basic.constant","selected":false,"x":803,"y":-78,"ports":[{"id":"a6d95f72-926d-4334-9737-9b6e9b4206c0","type":"port.output","x":856.5,"y":30,"name":"constant-out","alignment":"bottom","parentNode":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","links":["3ff23423-89db-4495-bc80-ec747b014e77"],"in":false,"label":"ROSTopic","hideLabel":true}],"data":{"name":"ROSTopic","value":"/cmd_vel","local":true}}}}]},"version":"3.0","package":{"name":"ROS2MotorDriver","version":"1.0.0","description":"Controls Robot's Movement using ROS2.","author":"David Tapiador de Vera","image":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPjx0aXRsZT5NT1RPUiBEQzwvdGl0bGU+PHBhdGggZD0iTTU0LjQ2OSwzNC42MjVINzQuNjNhNy4yOTQsNy4yOTQsMCwwLDEsNy4yOTQsNy4yOTRWNTJhMCwwLDAsMCwxLDAsMEg0Ny4xNzVhMCwwLDAsMCwxLDAsMFY0MS45MTlBNy4yOTQsNy4yOTQsMCwwLDEsNTQuNDY5LDM0LjYyNVoiIHN0eWxlPSJmaWxsOiNiYWRkZmEiLz48cGF0aCBkPSJNODAuNDI1LDUySDQ4LjY3NVY3Mi4xOTFBNC4wNzYsNC4wNzYsMCwwLDAsNTEuMyw3NmgwYTQuMDc2LDQuMDc2LDAsMCwxLDIuNjI1LDMuODA5VjgwLjVoMjEuMjV2LS42OTFBNC4wNzYsNC4wNzYsMCwwLDEsNzcuOCw3NmgwYTQuMDc2LDQuMDc2LDAsMCwwLDIuNjI1LTMuODA5WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxyZWN0IHg9IjYxLjExMiIgeT0iODYuNSIgd2lkdGg9IjYuODc1IiBoZWlnaHQ9IjYuODc1IiBzdHlsZT0iZmlsbDojYmFkZGZhIi8+PHBhdGggZD0iTTc0LjYzLDMzLjUyNUg1NC40NjlhOC40LDguNCwwLDAsMC04LjM5NCw4LjM5NVY1MmExLjEsMS4xLDAsMCwwLDEuMSwxLjFoLjRWNzIuMTkxYTUuMjA2LDUuMjA2LDAsMCwwLDMuMzMzLDQuODM3LDIuOTkxLDIuOTkxLDAsMCwxLDEuOTE2LDIuNzhWODAuNWExLjEsMS4xLDAsMCwwLDEuMSwxLjFINjMuNDV2My44SDYxLjExMmExLjEsMS4xLDAsMCwwLTEuMSwxLjF2Ni44NzVhMS4xLDEuMSwwLDAsMCwxLjEsMS4xaDYuODc1YTEuMSwxLjEsMCwwLDAsMS4xLTEuMVY4Ni41YTEuMSwxLjEsMCwwLDAtMS4xLTEuMUg2NS42NVY4MS42aDkuNTI1YTEuMSwxLjEsMCwwLDAsMS4xLTEuMXYtLjY5MWEyLjk5MSwyLjk5MSwwLDAsMSwxLjkxNi0yLjc4LDUuMjA2LDUuMjA2LDAsMCwwLDMuMzMzLTQuODM3VjUzLjFoLjRhMS4xLDEuMSwwLDAsMCwxLjEtMS4xVjQxLjkyQTguNCw4LjQsMCwwLDAsNzQuNjMsMzMuNTI1Wm0tNy43NDMsNTguNzVINjIuMjEyVjg3LjZoNC42NzVaTTQ4LjI3NSw0MS45MmE2LjIsNi4yLDAsMCwxLDYuMTk0LTYuMkg3NC42M2E2LjIsNi4yLDAsMCwxLDYuMTk0LDYuMlY1MC45SDQ4LjI3NVptMzEuMDUsMzAuMjcyYTIuOTkxLDIuOTkxLDAsMCwxLTEuOTE2LDIuNzhBNS4yMSw1LjIxLDAsMCwwLDc0LjA5MSw3OS40SDU1LjAwOGE1LjIxLDUuMjEsMCwwLDAtMy4zMTctNC40MjksMi45OTEsMi45OTEsMCwwLDEtMS45MTYtMi43OFY1My4xaDI5LjU1WiIgc3R5bGU9ImZpbGw6IzM5NDlhYSIvPjxwYXRoIGQ9Ik01Ny44LDcxLjZhMS4xLDEuMSwwLDAsMCwxLjEtMS4xVjU4Ljc1YTEuMSwxLjEsMCwwLDAtMi4yLDBWNzAuNUExLjEsMS4xLDAsMCwwLDU3LjgsNzEuNloiIHN0eWxlPSJmaWxsOiMzOTQ5YWEiLz48cGF0aCBkPSJNNjQuNTUsNzEuNmExLjEsMS4xLDAsMCwwLDEuMS0xLjFWNTguNzVhMS4xLDEuMSwwLDAsMC0yLjIsMFY3MC41QTEuMSwxLjEsMCwwLDAsNjQuNTUsNzEuNloiIHN0eWxlPSJmaWxsOiMzOTQ5YWEiLz48cGF0aCBkPSJNNzEuMyw3MS42YTEuMSwxLjEsMCwwLDAsMS4xLTEuMVY1OC43NWExLjEsMS4xLDAsMCwwLTIuMiwwVjcwLjVBMS4xLDEuMSwwLDAsMCw3MS4zLDcxLjZaIiBzdHlsZT0iZmlsbDojMzk0OWFhIi8+PC9zdmc+Cg=="},"design":{"board":"Python3-Noetic","graph":{"blocks":[{"id":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","type":"basic.input","data":{"name":"Vels"},"position":{"x":95,"y":232}},{"id":"78669ed1-e751-4ec8-ae57-b87a640feb4b","type":"basic.input","data":{"name":"Enable"},"position":{"x":99,"y":338}},{"id":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","type":"basic.code","data":{"code":"#!/usr/bin/env python3\n\nimport numpy as np\n\nimport rclpy\nfrom rclpy.node import Node\nfrom cv_bridge import CvBridge\nfrom geometry_msgs.msg import Twist\n\nbridge = CvBridge()\nvelocities = 0\n\n# ros2 node class\nclass VelPublisher(Node):\n\n def __init__(self, topic):\n super().__init__('vel_publisher')\n self.publisher_ = self.create_publisher(Twist, topic, 1)\n timer_period = 0.5 # seconds\n self.timer = self.create_timer(timer_period, self.timer_callback)\n\n def timer_callback(self):\n global velocities\n msg = Twist()\n \n try:\n msg.linear.x = float(velocities[0])\n msg.linear.y = float(velocities[1])\n msg.linear.z = float(velocities[2])\n msg.angular.x = float(velocities[3])\n msg.angular.y = float(velocities[4])\n msg.angular.z = float(velocities[5])\n except IndexError:\n print(\"bad length for input array\")\n return\n self.publisher_.publish(msg)\n\n\n\ndef main(inputs, outputs, parameters, synchronise):\n \n global velocities\n\n auto_enable = False\n try:\n enable = inputs.read_number('Enable')\n except Exception:\n auto_enable = True\n\n rclpy.init()\n vel_publisher = VelPublisher(parameters.read_string('ROSTopic'))\n\n try:\n\n while auto_enable or inputs.read_number('Enable'):\n\n velocities = inputs.read_array('Vels')\n if velocities != None:\n rclpy.spin_once(vel_publisher) \n synchronise() \n \n except KeyboardInterrupt:\n\n vel_publisher.destroy_node()\n rclpy.shutdown()\n","frequency":"30","params":[{"name":"ROSTopic"}],"ports":{"in":[{"name":"Vels"},{"name":"Enable"}],"out":[]},"size":{"width":"988px","height":"585px"}},"position":{"x":369,"y":65}},{"id":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","type":"basic.constant","data":{"name":"ROSTopic","value":"/cmd_vel","local":true},"position":{"x":803,"y":-78}}],"wires":[{"source":{"block":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","port":"input-out","name":"Vels"},"target":{"block":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","port":"Vels","name":"Vels"}},{"source":{"block":"78669ed1-e751-4ec8-ae57-b87a640feb4b","port":"input-out","name":"Enable"},"target":{"block":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","port":"Enable","name":"Enable"}},{"source":{"block":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","port":"constant-out","name":"ROSTopic"},"target":{"block":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","port":"ROSTopic","name":"ROSTopic"}}]}},"dependencies":{}} \ No newline at end of file +{"editor":{"id":"bb24521a-8c41-4f55-8e96-b7aff41c4297","locked":true,"offsetX":35,"offsetY":98,"zoom":100,"gridSize":0,"layers":[{"id":"50937002-f39a-4d49-a9eb-39771635497f","type":"diagram-links","isSvg":true,"transformed":true,"models":{"1e2cd58f-7aae-41e9-bfbb-777e1296b017":{"id":"1e2cd58f-7aae-41e9-bfbb-777e1296b017","type":"default","selected":false,"source":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","sourcePort":"a23d135a-c5ad-4eac-8978-9c8fdae27da3","target":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","targetPort":"85b9140d-79ee-46ae-942e-f103dfe70aae","points":[{"id":"7b0064bc-9032-4093-9745-1b9add0d01ce","type":"point","x":188.5,"y":258.5},{"id":"c7264bba-cc90-4fb5-82e7-270afc776544","type":"point","x":378.5,"y":350.5}],"labels":[],"width":3,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)"},"f13df527-0eea-46a7-ba57-c8967f56a2d6":{"id":"f13df527-0eea-46a7-ba57-c8967f56a2d6","type":"default","selected":false,"source":"78669ed1-e751-4ec8-ae57-b87a640feb4b","sourcePort":"80c09fc1-951c-412b-8395-f298f56faf68","target":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","targetPort":"424fe5f3-8908-46b3-81f2-47e3b7acd14f","points":[{"id":"50a22531-04b5-408c-8805-3d9f8bad3982","type":"point","x":192.5,"y":364.5},{"id":"aa570841-6125-4a9d-97c3-68476d81013e","type":"point","x":378.5,"y":557.5}],"labels":[],"width":3,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)"},"3ff23423-89db-4495-bc80-ec747b014e77":{"id":"3ff23423-89db-4495-bc80-ec747b014e77","type":"default","selected":false,"source":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","sourcePort":"a6d95f72-926d-4334-9737-9b6e9b4206c0","target":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","targetPort":"42dddbf9-3f8e-45b9-8a50-7ba984f72abf","points":[{"id":"e517fdd6-87e8-44b6-80d9-8f6da0b71dbe","type":"point","x":864,"y":37.5},{"id":"70c6e2da-8e29-486a-a19d-25fcfad41f8b","type":"point","x":884.984375,"y":143.5}],"labels":[],"width":3,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)"}}},{"id":"220b70ae-199a-4bc2-8a5d-05e7ec6ae5ca","type":"diagram-nodes","isSvg":false,"transformed":true,"models":{"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba":{"id":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","type":"basic.input","selected":false,"x":95,"y":232,"ports":[{"id":"a23d135a-c5ad-4eac-8978-9c8fdae27da3","type":"port.output","x":181,"y":251,"name":"input-out","alignment":"right","parentNode":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","links":["1e2cd58f-7aae-41e9-bfbb-777e1296b017"],"in":false,"label":"Vels","hideLabel":true}],"data":{"name":"Vels"}},"78669ed1-e751-4ec8-ae57-b87a640feb4b":{"id":"78669ed1-e751-4ec8-ae57-b87a640feb4b","type":"basic.input","selected":false,"x":99,"y":338,"ports":[{"id":"80c09fc1-951c-412b-8395-f298f56faf68","type":"port.output","x":185,"y":357,"name":"input-out","alignment":"right","parentNode":"78669ed1-e751-4ec8-ae57-b87a640feb4b","links":["f13df527-0eea-46a7-ba57-c8967f56a2d6"],"in":false,"label":"Enable","hideLabel":true}],"data":{"name":"Enable"}},"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a":{"id":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","type":"basic.code","selected":true,"x":369,"y":65,"ports":[{"id":"85b9140d-79ee-46ae-942e-f103dfe70aae","type":"port.input","x":371,"y":343,"name":"Vels","alignment":"left","parentNode":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","links":["1e2cd58f-7aae-41e9-bfbb-777e1296b017"],"in":true,"label":"Vels","hideLabel":false},{"id":"424fe5f3-8908-46b3-81f2-47e3b7acd14f","type":"port.input","x":371,"y":550,"name":"Enable","alignment":"left","parentNode":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","links":["f13df527-0eea-46a7-ba57-c8967f56a2d6"],"in":true,"label":"Enable","hideLabel":false},{"id":"42dddbf9-3f8e-45b9-8a50-7ba984f72abf","type":"port.parameter","x":877.484375,"y":136,"name":"ROSTopic","alignment":"top","parentNode":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","links":["3ff23423-89db-4495-bc80-ec747b014e77"],"in":true,"label":"ROSTopic","hideLabel":false}],"data":{"code":"#!/usr/bin/env python3\n\nimport numpy as np\n\nimport rclpy\nfrom rclpy.node import Node\nfrom cv_bridge import CvBridge\nfrom geometry_msgs.msg import Twist\n\nbridge = CvBridge()\nvelocities = 0\n\n# ros2 node class\nclass VelPublisher(Node):\n\n def __init__(self, topic):\n super().__init__('vel_publisher')\n self.publisher_ = self.create_publisher(Twist, topic, 1)\n timer_period = 0.5 # seconds\n self.timer = self.create_timer(timer_period, self.timer_callback)\n\n def timer_callback(self):\n global velocities\n msg = Twist()\n \n try:\n msg.linear.x = float(velocities[0])\n msg.linear.y = float(velocities[1])\n msg.linear.z = float(velocities[2])\n msg.angular.x = float(velocities[3])\n msg.angular.y = float(velocities[4])\n msg.angular.z = float(velocities[5])\n except IndexError:\n print(\"bad length for input array\")\n return\n self.publisher_.publish(msg)\n\n\n\ndef main(inputs, outputs, parameters, synchronise):\n \n global velocities\n\n auto_enable = False\n try:\n enable = inputs.read_number('Enable')\n except Exception:\n auto_enable = True\n\n rclpy.init()\n vel_publisher = VelPublisher(parameters.read_string('ROSTopic'))\n\n try:\n\n while auto_enable or inputs.read_number('Enable'):\n\n velocities = inputs.read_array('Vels')\n if velocities is not None:\n rclpy.spin_once(vel_publisher) \n synchronise() \n \n except KeyboardInterrupt:\n\n vel_publisher.destroy_node()\n rclpy.shutdown()\n","frequency":"30","params":[{"name":"ROSTopic"}],"ports":{"in":[{"name":"Vels"},{"name":"Enable"}],"out":[]},"size":{"width":"988px","height":"585px"}}},"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35":{"id":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","type":"basic.constant","selected":false,"x":803,"y":-78,"ports":[{"id":"a6d95f72-926d-4334-9737-9b6e9b4206c0","type":"port.output","x":856.5,"y":30,"name":"constant-out","alignment":"bottom","parentNode":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","links":["3ff23423-89db-4495-bc80-ec747b014e77"],"in":false,"label":"ROSTopic","hideLabel":true}],"data":{"name":"ROSTopic","value":"/cmd_vel","local":true}}}}]},"version":"3.0","package":{"name":"ROS2MotorDriver","version":"1.0.0","description":"Controls Robot's Movement using ROS2.","author":"David Tapiador de Vera","image":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPjx0aXRsZT5NT1RPUiBEQzwvdGl0bGU+PHBhdGggZD0iTTU0LjQ2OSwzNC42MjVINzQuNjNhNy4yOTQsNy4yOTQsMCwwLDEsNy4yOTQsNy4yOTRWNTJhMCwwLDAsMCwxLDAsMEg0Ny4xNzVhMCwwLDAsMCwxLDAsMFY0MS45MTlBNy4yOTQsNy4yOTQsMCwwLDEsNTQuNDY5LDM0LjYyNVoiIHN0eWxlPSJmaWxsOiNiYWRkZmEiLz48cGF0aCBkPSJNODAuNDI1LDUySDQ4LjY3NVY3Mi4xOTFBNC4wNzYsNC4wNzYsMCwwLDAsNTEuMyw3NmgwYTQuMDc2LDQuMDc2LDAsMCwxLDIuNjI1LDMuODA5VjgwLjVoMjEuMjV2LS42OTFBNC4wNzYsNC4wNzYsMCwwLDEsNzcuOCw3NmgwYTQuMDc2LDQuMDc2LDAsMCwwLDIuNjI1LTMuODA5WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxyZWN0IHg9IjYxLjExMiIgeT0iODYuNSIgd2lkdGg9IjYuODc1IiBoZWlnaHQ9IjYuODc1IiBzdHlsZT0iZmlsbDojYmFkZGZhIi8+PHBhdGggZD0iTTc0LjYzLDMzLjUyNUg1NC40NjlhOC40LDguNCwwLDAsMC04LjM5NCw4LjM5NVY1MmExLjEsMS4xLDAsMCwwLDEuMSwxLjFoLjRWNzIuMTkxYTUuMjA2LDUuMjA2LDAsMCwwLDMuMzMzLDQuODM3LDIuOTkxLDIuOTkxLDAsMCwxLDEuOTE2LDIuNzhWODAuNWExLjEsMS4xLDAsMCwwLDEuMSwxLjFINjMuNDV2My44SDYxLjExMmExLjEsMS4xLDAsMCwwLTEuMSwxLjF2Ni44NzVhMS4xLDEuMSwwLDAsMCwxLjEsMS4xaDYuODc1YTEuMSwxLjEsMCwwLDAsMS4xLTEuMVY4Ni41YTEuMSwxLjEsMCwwLDAtMS4xLTEuMUg2NS42NVY4MS42aDkuNTI1YTEuMSwxLjEsMCwwLDAsMS4xLTEuMXYtLjY5MWEyLjk5MSwyLjk5MSwwLDAsMSwxLjkxNi0yLjc4LDUuMjA2LDUuMjA2LDAsMCwwLDMuMzMzLTQuODM3VjUzLjFoLjRhMS4xLDEuMSwwLDAsMCwxLjEtMS4xVjQxLjkyQTguNCw4LjQsMCwwLDAsNzQuNjMsMzMuNTI1Wm0tNy43NDMsNTguNzVINjIuMjEyVjg3LjZoNC42NzVaTTQ4LjI3NSw0MS45MmE2LjIsNi4yLDAsMCwxLDYuMTk0LTYuMkg3NC42M2E2LjIsNi4yLDAsMCwxLDYuMTk0LDYuMlY1MC45SDQ4LjI3NVptMzEuMDUsMzAuMjcyYTIuOTkxLDIuOTkxLDAsMCwxLTEuOTE2LDIuNzhBNS4yMSw1LjIxLDAsMCwwLDc0LjA5MSw3OS40SDU1LjAwOGE1LjIxLDUuMjEsMCwwLDAtMy4zMTctNC40MjksMi45OTEsMi45OTEsMCwwLDEtMS45MTYtMi43OFY1My4xaDI5LjU1WiIgc3R5bGU9ImZpbGw6IzM5NDlhYSIvPjxwYXRoIGQ9Ik01Ny44LDcxLjZhMS4xLDEuMSwwLDAsMCwxLjEtMS4xVjU4Ljc1YTEuMSwxLjEsMCwwLDAtMi4yLDBWNzAuNUExLjEsMS4xLDAsMCwwLDU3LjgsNzEuNloiIHN0eWxlPSJmaWxsOiMzOTQ5YWEiLz48cGF0aCBkPSJNNjQuNTUsNzEuNmExLjEsMS4xLDAsMCwwLDEuMS0xLjFWNTguNzVhMS4xLDEuMSwwLDAsMC0yLjIsMFY3MC41QTEuMSwxLjEsMCwwLDAsNjQuNTUsNzEuNloiIHN0eWxlPSJmaWxsOiMzOTQ5YWEiLz48cGF0aCBkPSJNNzEuMyw3MS42YTEuMSwxLjEsMCwwLDAsMS4xLTEuMVY1OC43NWExLjEsMS4xLDAsMCwwLTIuMiwwVjcwLjVBMS4xLDEuMSwwLDAsMCw3MS4zLDcxLjZaIiBzdHlsZT0iZmlsbDojMzk0OWFhIi8+PC9zdmc+Cg=="},"design":{"board":"Python3-Noetic","graph":{"blocks":[{"id":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","type":"basic.input","data":{"name":"Vels"},"position":{"x":95,"y":232}},{"id":"78669ed1-e751-4ec8-ae57-b87a640feb4b","type":"basic.input","data":{"name":"Enable"},"position":{"x":99,"y":338}},{"id":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","type":"basic.code","data":{"code":"#!/usr/bin/env python3\n\nimport numpy as np\n\nimport rclpy\nfrom rclpy.node import Node\nfrom cv_bridge import CvBridge\nfrom geometry_msgs.msg import Twist\n\nbridge = CvBridge()\nvelocities = 0\n\n# ros2 node class\nclass VelPublisher(Node):\n\n def __init__(self, topic):\n super().__init__('vel_publisher')\n self.publisher_ = self.create_publisher(Twist, topic, 1)\n timer_period = 0.5 # seconds\n self.timer = self.create_timer(timer_period, self.timer_callback)\n\n def timer_callback(self):\n global velocities\n msg = Twist()\n \n try:\n msg.linear.x = float(velocities[0])\n msg.linear.y = float(velocities[1])\n msg.linear.z = float(velocities[2])\n msg.angular.x = float(velocities[3])\n msg.angular.y = float(velocities[4])\n msg.angular.z = float(velocities[5])\n except IndexError:\n print(\"bad length for input array\")\n return\n self.publisher_.publish(msg)\n\n\n\ndef main(inputs, outputs, parameters, synchronise):\n \n global velocities\n\n auto_enable = False\n try:\n enable = inputs.read_number('Enable')\n except Exception:\n auto_enable = True\n\n rclpy.init()\n vel_publisher = VelPublisher(parameters.read_string('ROSTopic'))\n\n try:\n\n while auto_enable or inputs.read_number('Enable'):\n\n velocities = inputs.read_array('Vels')\n if velocities is not None:\n rclpy.spin_once(vel_publisher) \n synchronise() \n \n except KeyboardInterrupt:\n\n vel_publisher.destroy_node()\n rclpy.shutdown()\n","frequency":"30","params":[{"name":"ROSTopic"}],"ports":{"in":[{"name":"Vels"},{"name":"Enable"}],"out":[]},"size":{"width":"988px","height":"585px"}},"position":{"x":369,"y":65}},{"id":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","type":"basic.constant","data":{"name":"ROSTopic","value":"/cmd_vel","local":true},"position":{"x":803,"y":-78}}],"wires":[{"source":{"block":"a0f07e9e-bd5e-4295-a3a2-5690fa4568ba","port":"input-out","name":"Vels"},"target":{"block":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","port":"Vels","name":"Vels"}},{"source":{"block":"78669ed1-e751-4ec8-ae57-b87a640feb4b","port":"input-out","name":"Enable"},"target":{"block":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","port":"Enable","name":"Enable"}},{"source":{"block":"0005-ea8b023e-2944-40f6-b0fc-f14196f2db35","port":"constant-out","name":"ROSTopic"},"target":{"block":"c79cef3a-ccd7-46fb-b2a2-d0536cbbe45a","port":"ROSTopic","name":"ROSTopic"}}]}},"dependencies":{}} \ No newline at end of file