Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 8b162ddd rédigé par Lionel GENEVE's avatar Lionel GENEVE
Parcourir les fichiers

Suppression of mc_node

parent 1180e07e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -32,7 +32,6 @@ ament_python_install_package(${PROJECT_NAME})
# Install Python executables
install(PROGRAMS
${PROJECT_NAME}/armada_control.py
${PROJECT_NAME}/mc_node.py
DESTINATION lib/${PROJECT_NAME}
)
......
#!/usr/bin/env python3
from ls2n_drone_interfaces.srv import DroneRequest
from ls2n_drone_interfaces.msg import DroneStatus
import rclpy
from rclpy.node import Node
from std_srvs.srv import Empty
from std_msgs.msg import Bool
from rclpy.qos import qos_profile_sensor_data
qos_profile_sensor_data.depth = 1
class MCNode(Node):
def __init__(self):
super().__init__("multi_control_simulation")
self.get_logger().info("Start multi control simulation")
self.create_service(Empty, "StartExperiment", self.start_experimentation)
self.create_service(Empty, "StopExperiment", self.stop_experimentation)
self.create_service(Empty, "SpinMotors", self.spin_motors)
self.create_service(
Empty, "ActivateArmadaControl", self.activate_armada_control
)
self.multi_control_client = self.create_client(DroneRequest, "Request")
self.drone_status = DroneStatus.status
self.status_pub = self.create_publisher(
Bool, "/armada_status", qos_profile_sensor_data
)
def spin_motors(self, request, response):
"""
Callback function of the service spin motors. All drones spin when the service is called.
:return response: The response of the service.
"""
self.get_logger().info("Spin motors request made")
request_out = DroneRequest.Request()
request_out.request = DroneRequest.Request.SPIN_MOTORS
self.multi_control_client.call_async(request_out)
return response
def start_experimentation(self, request, response):
"""
Callback function of the service for start experimentation. All drones take-off when the service is called.
:return: The response of the service.
"""
self.get_logger().info("Start Experiment request made")
request_out = DroneRequest.Request()
request_out.request = DroneRequest.Request.TAKE_OFF
self.multi_control_client.call_async(request_out)
return response
def stop_experimentation(self, request, response):
"""
Callback function of the service stop experimentation. All drones land when the service is called.
:return response: The response of the service.
"""
self.get_logger().info("Stop Experiment request made")
msg = Bool()
msg.data = False
self.active = False
request_out = DroneRequest.Request()
request_out.request = DroneRequest.Request.LAND
self.multi_control_client.call_async(request_out)
return response
def activate_armada_control(self, request, response):
self.get_logger().info("activate armada control request made")
msg = Bool()
msg.data = True
self.status_pub.publish(msg)
request_out = DroneRequest.Request()
request_out.request = DroneRequest.Request.ARMADA_CONTROL
self.multi_control_client.call_async(request_out)
return response
def main(args=None):
rclpy.init(args=args)
multi_control = MCNode()
try:
rclpy.spin(multi_control)
except KeyboardInterrupt:
print("Shutting down Drone Cable procedure")
finally:
multi_control.destroy_node()
rclpy.shutdown()
if __name__ == "__main__":
main()
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter