-
Notifications
You must be signed in to change notification settings - Fork 0
/
_drone_follow_object_startup_script.py
88 lines (70 loc) · 2.69 KB
/
_drone_follow_object_startup_script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python
#
# Copyright (c) 2024 Numurus, LLC <https://www.numurus.com>.
#
# This file is part of nepi-engine
# (see https://github.com/nepi-engine).
#
# License: 3-clause BSD, see https://opensource.org/licenses/BSD-3-Clause
#
# Sample Solution Startup Script.
# 1. Launches scripts from list that are not running
# 2. Waits for shutdown
# 3. Stops scripts that were launched by this script
import rospy
import sys
import time
from nepi_edge_sdk_base import nepi_ros
#########################################
# USER SETTINGS - Edit as Necessary
#########################################
SCRIPT_LIST = [ "ai_detector_config_script.py",
"drone_follow_object_mission_script.py"] # Script filenames to start/stop
#########################################
# ROS NAMESPACE SETUP
#########################################
# ROS namespace setup
NEPI_BASE_NAMESPACE = nepi_ros.get_base_namespace()
#########################################
# Node Class
#########################################
class drone_follow_object_startup(object):
#######################
### Node Initialization
def __init__(self):
rospy.loginfo("Starting Initialization Processes")
nepi_ros.startup_script_initialize(self,NEPI_BASE_NAMESPACE)
rospy.loginfo("Initialization Complete")
# Launch scripts from list
nepi_ros.launch_scripts(SCRIPT_LIST,self.launch_script_service,self.get_installed_scripts_service, \
self.get_running_scripts_service)
## Initiation Complete
rospy.loginfo("Initialization Complete")
#######################
### Node Methods
#######################
# Node Cleanup Function
def cleanup_actions(self):
rospy.loginfo("Shutting down: Executing script cleanup actions")
# Stop scripts from list
nepi_ros.stop_scripts(SCRIPT_LIST,self.stop_script_service,self.get_installed_scripts_service, \
self.get_running_scripts_service,self.scripts_running_at_start)
#########################################
# Main
#########################################
if __name__ == '__main__':
current_filename = sys.argv[0].split('/')[-1]
current_filename = current_filename.split('.')[0]
if current_filename[0] == "_":
current_filename = current_filename[1:]
rospy.loginfo(("Starting " + current_filename), disable_signals=True) # Disable signals so we can force a shutdown
rospy.init_node(name=current_filename)
#Launch the node
node_name = current_filename.rpartition("_")[0]
rospy.loginfo("Launching node named: " + node_name)
node_class = eval(node_name)
node = node_class()
#Set up node shutdown
rospy.on_shutdown(node.cleanup_actions)
# Spin forever (until object is detected)
rospy.spin()