From 3866ed1e1fa4a92fc18446d268a38aa6e6ab57e2 Mon Sep 17 00:00:00 2001 From: VLatyshev Date: Mon, 21 Oct 2024 23:15:21 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9D=D0=BE=D0=B4=D0=B0=20scythe=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B1=D1=83=D0=B6=D0=B4=D0=B0=D0=B5=D1=82=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BF=D0=B0=D1=88=D0=BA=D1=83=20=D0=BA=20=D0=B0?= =?UTF-8?q?=D0=B3=D0=B8=D1=82=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_04/scythe.py | 70 +++++++++++++++++++++++++++++ lesson_04/{mover.py => square_1.py} | 7 ++- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 lesson_04/scythe.py rename lesson_04/{mover.py => square_1.py} (89%) diff --git a/lesson_04/scythe.py b/lesson_04/scythe.py new file mode 100644 index 0000000..860d238 --- /dev/null +++ b/lesson_04/scythe.py @@ -0,0 +1,70 @@ +import rclpy +from rclpy.node import Node +from rclpy.duration import Duration + +from geometry_msgs.msg import Twist +import math + + +class RurMover(Node): + def __init__(self): + super().__init__('minimal_publisher') + self.publisher_twist = self.create_publisher(Twist, 'turtle1/cmd_vel', 10) + self.main() + + def publish_twist(self, linear, angular): + self.get_logger().info('Linear: "%d", angular: "%d"' % (linear, angular)) + msg = Twist() + msg.linear.x = 3*float(linear) + msg.angular.z = math.radians(float(angular)) + self.publisher_twist.publish(msg) + self.get_clock().sleep_for(Duration(seconds=1.0)) + + def main(self): + + self.publish_twist(0, 135.0) + self.publish_twist(0.42650548, 0.0) + self.publish_twist(0, -90) + self.publish_twist(0.21, 0.0) + self.publish_twist(0, 124.316696) + self.publish_twist(0.20564764, 0) + self.publish_twist(0, 55.683304) + self.publish_twist(0.35, 0.0) + self.publish_twist(0, 90) + self.publish_twist(0.17281243, 0.0) + self.publish_twist(0, 90.0) + self.publish_twist(0.15, 0.0) + self.publish_twist(0, -90.0) + self.publish_twist(0.41, 0.0) + self.publish_twist(0, -90.0) + self.publish_twist(0.34557519, -90.0) + self.publish_twist(0, 90.0) + self.publish_twist(0.45180456, 0.0) + self.publish_twist(0, 90.0) + self.publish_twist(0.06890828, 0.0) + self.publish_twist(0, 90.0) + self.publish_twist(0.35125432, 0.0) + self.publish_twist(0, -90.0) + self.publish_twist(0.47971564, 80.46666667) + self.publish_twist(0, -85.0) + self.publish_twist(0.2388776, 0.0) + self.publish_twist(0, 90.0) + self.publish_twist(0.10161725, 0.0) + self.publish_twist(0, 90.0) + self.publish_twist(0.22566679, 0.0) + self.publish_twist(0, -75.0) + self.publish_twist(0.84445198, 100.0) + self.publish_twist(0, 180.0) + self.publish_twist(0.70389819, -110.0) + pass + + +def main(args=None): + rclpy.init(args=args) + mover = RurMover() + rclpy.spin(mover) + mover.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/lesson_04/mover.py b/lesson_04/square_1.py similarity index 89% rename from lesson_04/mover.py rename to lesson_04/square_1.py index a61bebe..65a37dc 100644 --- a/lesson_04/mover.py +++ b/lesson_04/square_1.py @@ -21,13 +21,18 @@ class RurMover(Node): self.get_clock().sleep_for(Duration(seconds=1.0)) def main(self): - pass + while True: + self.publish_twist(0, 90.0) + self.publish_twist(0, 0.0) def main(args=None): rclpy.init(args=args) + mover = RurMover() + rclpy.spin(mover) + mover.destroy_node() rclpy.shutdown() -- GitLab From 9588e64f8e6f0876324dce29cefdf3e62db09432 Mon Sep 17 00:00:00 2001 From: VLatyshev Date: Mon, 21 Oct 2024 23:16:28 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9D=D0=BE=D0=B4=D0=B0=20scythe=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B1=D1=83=D0=B6=D0=B4=D0=B0=D0=B5=D1=82=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BF=D0=B0=D1=88=D0=BA=D1=83=20=D0=BA=20=D0=B0?= =?UTF-8?q?=D0=B3=D0=B8=D1=82=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_04/square_1.py | 9 +++++---- lesson_04/step_2.py | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lesson_04/square_1.py b/lesson_04/square_1.py index 65a37dc..3bb992c 100644 --- a/lesson_04/square_1.py +++ b/lesson_04/square_1.py @@ -4,6 +4,7 @@ from rclpy.duration import Duration from geometry_msgs.msg import Twist import math +from time import sleep class RurMover(Node): @@ -18,12 +19,12 @@ class RurMover(Node): msg.linear.x = float(linear) msg.angular.z = math.radians(float(angular)) self.publisher_twist.publish(msg) - self.get_clock().sleep_for(Duration(seconds=1.0)) + self.get_clock().sleep_for(Duration(seconds=0.99875)) def main(self): while True: - self.publish_twist(0, 90.0) - self.publish_twist(0, 0.0) + self.publish_twist(1, 0) + self.publish_twist(0, 90) def main(args=None): @@ -37,4 +38,4 @@ def main(args=None): rclpy.shutdown() if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/lesson_04/step_2.py b/lesson_04/step_2.py index b62db7a..8647e3f 100644 --- a/lesson_04/step_2.py +++ b/lesson_04/step_2.py @@ -3,7 +3,6 @@ from rclpy.node import Node from geometry_msgs.msg import Twist - class RurMover(Node): def __init__(self): super().__init__('rur_mover') -- GitLab From 59c3fcc0f8bcf5518386cd6801bae3dcde7aa2af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9B?= =?UTF-8?q?=D0=B0=D1=82=D1=8B=D1=88=D0=B5=D0=B2?= Date: Mon, 21 Oct 2024 20:27:05 +0000 Subject: [PATCH 3/4] Update scythe.py --- lesson_04/scythe.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson_04/scythe.py b/lesson_04/scythe.py index 860d238..77d7766 100644 --- a/lesson_04/scythe.py +++ b/lesson_04/scythe.py @@ -56,7 +56,6 @@ class RurMover(Node): self.publish_twist(0.84445198, 100.0) self.publish_twist(0, 180.0) self.publish_twist(0.70389819, -110.0) - pass def main(args=None): -- GitLab From 343e45cc5e7a5dde0a24b7b81dd9fce8881c8cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9B?= =?UTF-8?q?=D0=B0=D1=82=D1=8B=D1=88=D0=B5=D0=B2?= Date: Tue, 22 Oct 2024 03:19:46 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D1=80=D0=B5=D0=B4=D0=BF=D0=BE=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B4=D0=B5=20=D0=BF=D0=BE=D0=B3=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=BF=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=B2=D0=B8=D0=B6=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BF=D0=B0=D1=85=D0=B8=20=D0=BF=D0=BE=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=BD=D0=BE=D0=B9=20=D1=82=D1=80=D0=B0=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\273\320\276\320\266\320\265\320\275\320\270\320\265.txt" | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 "\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\320\265.txt" diff --git "a/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\320\265.txt" "b/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\320\265.txt" new file mode 100644 index 0000000..9f16007 --- /dev/null +++ "b/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\320\265.txt" @@ -0,0 +1,5 @@ +Погрешность, судя по всему, связана с отсчётом времени. +В документации к turtlesim указано, что действие выполняется в течение 1 секунды +с заданной линейной и угловой скоростью, однако фактически это время несколько больше, +что приводит к соответственно большим значениям линейных и угловых перемещений. +На мой взгляд, решение проблемы продано заключаться в добавлении обратной связи между нодами -- GitLab