2 from hw_controller
import *
10 parser = argparse.ArgumentParser(description=
"HardwareBridge node")
12 parser.add_argument(
"-a",
"--action", help=
"Action manifest path", nargs=1, type=str)
13 parser.add_argument(
"-p",
"--perception", help=
"Perception manifest path", nargs=1, type=str)
14 parser.add_argument(
"-r",
"--param", help=
"Rosparam .yaml", nargs=1, type=str)
16 args, unknown = parser.parse_known_args()
20 action_controller = args[0]
23 action_status = jason_msgs.msg.ActionStatus()
24 action_status.id = msg.header.seq
26 action_status.result = action_controller.perform_action(msg.action_name, msg.parameters)
28 pub.publish(action_status)
32 print(
"Starting HwBridge node.")
33 rospy.init_node(
'HwBridge')
36 if args[
"param"] !=
None:
39 with open(args[
"param"][0],
'r') as stream: 41 yaml_file = yaml.safe_load(stream)
42 rosparam.upload_params(
"/", yaml_file)
43 except yaml.YAMLError
as exc:
47 if args[
"action"] !=
None:
48 action_controller.read_manifest(args[
"action"][0])
50 action_controller.read_manifest()
52 node_namespace = rospy.get_namespace()
53 jason_actions_status_pub = rospy.Publisher(
54 node_namespace+
'jason/actions_status',
55 jason_msgs.msg.ActionStatus,
59 jason_action_sub = rospy.Subscriber(
60 node_namespace +
'jason/actions',
61 jason_msgs.msg.Action,
62 act, (action_controller,jason_actions_status_pub))
66 if args[
"perception"] !=
None:
67 perception_controller.read_manifest(args[
"perception"][0])
69 perception_controller.read_manifest()
71 perception_controller.start_perceiving()
73 jason_percepts_pub = rospy.Publisher(
74 node_namespace +
'jason/percepts',
75 jason_msgs.msg.Perception,
76 queue_size=(2*perception_controller.comm_len),
79 signal.signal(signal.SIGINT, signal.SIG_DFL)
80 rate = rospy.Rate(perception_controller.rate)
81 while not rospy.is_shutdown():
82 perception_controller.p_lock.acquire()
83 for p
in perception_controller.perceptions.items():
85 jason_percepts_pub.publish(p[1])
86 perception_controller.perceptions[p[0]] =
None 87 perception_controller.p_lock.release()
88 perception_controller.p_event.wait()
89 perception_controller.p_event.clear()
93 if __name__ ==
'__main__':