File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python3
2+
3+ import rclpy
4+ from rclpy .node import Node
5+ from geometry_msgs .msg import Twist
6+ import math
7+ import time
8+
9+ class LeaderEvasionNode (Node ):
10+ def __init__ (self ):
11+ super ().__init__ ('leader_evasion_node' )
12+
13+ # Publisher for velocity commands via MAVROS
14+ self .vel_pub = self .create_publisher (
15+ Twist ,
16+ '/iris_1/mavros/setpoint_velocity/cmd_vel_unstamped' ,
17+ 10
18+ )
19+
20+ self .timer = self .create_timer (0.1 , self .timer_callback )
21+ self .start_time = time .time ()
22+ self .get_logger ().info ("Leader Evasion Node started. Executing maneuvers..." )
23+
24+ def timer_callback (self ):
25+ t = time .time () - self .start_time
26+
27+ msg = Twist ()
28+ # Complex figure-eight and altitude changing maneuver
29+ msg .linear .x = 2.0 * math .sin (0.5 * t )
30+ msg .linear .y = 1.5 * math .cos (0.2 * t )
31+ msg .linear .z = 0.5 * math .sin (0.3 * t )
32+ msg .angular .z = 0.5 * math .cos (0.4 * t )
33+
34+ self .vel_pub .publish (msg )
35+
36+ def main (args = None ):
37+ rclpy .init (args = args )
38+ node = LeaderEvasionNode ()
39+ try :
40+ rclpy .spin (node )
41+ except KeyboardInterrupt :
42+ pass
43+ finally :
44+ node .destroy_node ()
45+ rclpy .shutdown ()
46+
47+ if __name__ == '__main__' :
48+ main ()
You can’t perform that action at this time.
0 commit comments