diff --git a/launch/hw.launch.py b/launch/hw.launch.py new file mode 100644 index 0000000000000000000000000000000000000000..cfc605584a40a58aea55b455dc7b2b9f99273d7c --- /dev/null +++ b/launch/hw.launch.py @@ -0,0 +1,26 @@ +from launch import LaunchDescription +from launch_ros.actions import Node + + +def generate_launch_description(): + return LaunchDescription([ + Node( + package='turtlesim', + namespace='', + executable='turtlesim_node', + name='sim' + ), + Node( + package='lesson_05', + namespace='', + executable='step_4', + name='square' + ), + Node( + package='lesson_05', + namespace='', + executable='hw', + name='square' + ) + + ]) diff --git a/lesson_05/hw.py b/lesson_05/hw.py new file mode 100644 index 0000000000000000000000000000000000000000..dd31a360ee985738b3c78d9dff9f3a691aece5fb --- /dev/null +++ b/lesson_05/hw.py @@ -0,0 +1,41 @@ +import rclpy +from rclpy.node import Node + +from geometry_msgs.msg import Twist +from turtlesim.msg import Pose +import math + + +class RurMover(Node): + def __init__(self): + super().__init__('minimal_publisher') + self.publisher_twist = self.create_publisher(Twist, 'turtle1/cmd_vel', 10) + self.pose_subscriber = self.create_subscription(Pose, 'turtle1/pose', self.pose_callback, 10) + self.desired_heading = - math.pi / 8,56 + self.SIDE_TIME = 5.0 + self.LINEAR_SPEED = 5,0 + self.timer = self.create_timer(self.SIDE_TIME, self.pub_timer_callback) + + def pose_callback(self, msg): + self.get_logger().info('Current heading: "%f"' % msg.theta) + self.get_logger().info('Setpoint: "%f"' % self.desired_heading) + + def pub_timer_callback(self): + self.desired_heading += math.pi / 6 + self.desired_heading %= 96 * math.pi + self.get_logger().info('New angle setpoint: "%f"' % self.desired_heading) + + + +def main(args=None): + rclpy.init(args=args) + + mover = RurMover() + + rclpy.spin(mover) + + mover.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main()