mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-18 01:33:34 +08:00
microRTPS_bridge: structural change to make possible to generate pub/sub code for multi-topics/aliased msgs
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
################################################################################
|
||||
#
|
||||
# Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
||||
# 2018 PX4 Pro Development Team. All rights reserved.
|
||||
# 2018-2019 PX4 Development Team. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
@@ -62,61 +62,66 @@ def check_rtps_id_uniqueness(classifier):
|
||||
|
||||
repeated_ids = dict()
|
||||
|
||||
full_send_list = dict(list(msg for msg in classifier.msgs_to_send.items()) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_send))
|
||||
full_receive_list = dict(list(msg for msg in classifier.msgs_to_receive.items()) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_receive))
|
||||
full_ignore_list = dict(list(msg for msg in classifier.msgs_to_ignore.items()) + list(msg[0].items()[0] for msg in classifier.alias_msgs_to_ignore))
|
||||
|
||||
# check if there are repeated ID's on the messages to send
|
||||
for key, value in classifier.msgs_to_send.items():
|
||||
for key, value in full_send_list.items():
|
||||
if sys.version_info[0] < 3:
|
||||
if classifier.msgs_to_send.values().count(value) > 1:
|
||||
if full_send_list.values().count(value) > 1:
|
||||
repeated_ids.update({key: value})
|
||||
else:
|
||||
if list(classifier.msgs_to_send.values()).count(value) > 1:
|
||||
if list(full_send_list.values()).count(value) > 1:
|
||||
repeated_ids.update({key: value})
|
||||
|
||||
# check if there are repeated ID's on the messages to receive
|
||||
for key, value in classifier.msgs_to_receive.items():
|
||||
for key, value in full_receive_list.items():
|
||||
if sys.version_info[0] < 3:
|
||||
if classifier.msgs_to_receive.values().count(value) > 1:
|
||||
if full_receive_list.values().count(value) > 1:
|
||||
repeated_ids.update({key: value})
|
||||
else:
|
||||
if list(classifier.msgs_to_receive.values()).count(value) > 1:
|
||||
if list(full_receive_list.values()).count(value) > 1:
|
||||
repeated_ids.update({key: value})
|
||||
|
||||
# check if there are repeated ID's on the messages to ignore
|
||||
for key, value in classifier.msgs_to_ignore.items():
|
||||
for key, value in full_ignore_list.items():
|
||||
if sys.version_info[0] < 3:
|
||||
if classifier.msgs_to_ignore.values().count(value) > 1:
|
||||
if full_ignore_list.values().count(value) > 1:
|
||||
repeated_ids.update({key: value})
|
||||
else:
|
||||
if list(classifier.msgs_to_ignore.values()).count(value) > 1:
|
||||
if list(full_ignore_list.values()).count(value) > 1:
|
||||
repeated_ids.update({key: value})
|
||||
|
||||
# check if there are repeated IDs between classified and unclassified msgs
|
||||
# check send and ignore lists
|
||||
send_ignore_common_ids = list(set(classifier.msgs_to_ignore.values(
|
||||
)).intersection(classifier.msgs_to_send.values()))
|
||||
for item in zip(classifier.msgs_to_send.items(), classifier.msgs_to_ignore.items()):
|
||||
send_ignore_common_ids = list(set(full_ignore_list.values(
|
||||
)).intersection(full_send_list.values()))
|
||||
for item in full_send_list.items():
|
||||
for repeated in send_ignore_common_ids:
|
||||
if item[1] == repeated:
|
||||
repeated_ids.update({item[0]: item[1]})
|
||||
for item in classifier.msgs_to_ignore.items():
|
||||
for item in full_ignore_list.items():
|
||||
for repeated in send_ignore_common_ids:
|
||||
if item[1] == repeated:
|
||||
repeated_ids.update({item[0]: item[1]})
|
||||
|
||||
# check receive and ignore lists
|
||||
receive_ignore_common_ids = list(set(classifier.msgs_to_ignore.values(
|
||||
)).intersection(classifier.msgs_to_receive.values()))
|
||||
for item in classifier.msgs_to_receive.items():
|
||||
receive_ignore_common_ids = list(set(full_ignore_list.values(
|
||||
)).intersection(full_receive_list.values()))
|
||||
for item in full_receive_list.items():
|
||||
for repeated in receive_ignore_common_ids:
|
||||
if item[1] == repeated:
|
||||
repeated_ids.update({item[0]: item[1]})
|
||||
for item in classifier.msgs_to_ignore.items():
|
||||
for item in full_ignore_list.items():
|
||||
for repeated in receive_ignore_common_ids:
|
||||
if item[1] == repeated:
|
||||
repeated_ids.update({item[0]: item[1]})
|
||||
|
||||
all_msgs = classifier.msgs_to_send
|
||||
all_msgs.update(classifier.msgs_to_receive)
|
||||
all_msgs.update(classifier.msgs_to_ignore)
|
||||
all_msgs = {}
|
||||
all_msgs.update(full_send_list)
|
||||
all_msgs.update(full_receive_list)
|
||||
all_msgs.update(full_ignore_list)
|
||||
all_ids = list()
|
||||
if sys.version_info[0] < 3:
|
||||
all_ids = all_msgs.values()
|
||||
@@ -277,44 +282,76 @@ uRTPS_SUBSCRIBER_H_TEMPL_FILE = 'Subscriber.h.em'
|
||||
|
||||
|
||||
def generate_agent(out_dir):
|
||||
|
||||
if classifier.msg_files_send:
|
||||
for msg_file in classifier.msg_files_send:
|
||||
# raise Exception(classifier.msgs_to_receive)
|
||||
if classifier.msgs_to_send:
|
||||
for msg_file in classifier.msgs_to_send:
|
||||
if gen_idl:
|
||||
if out_dir != agent_out_dir:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, os.path.join(out_dir, "/idl"), urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, msg_dir, "", os.path.join(out_dir, "/idl"), urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
else:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, idl_dir, urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, msg_dir, "", idl_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, out_dir, urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, msg_dir, "", out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_PUBLISHER_SRC_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, out_dir, urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, msg_dir, "", out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_PUBLISHER_H_TEMPL_FILE)
|
||||
|
||||
if classifier.msg_files_receive:
|
||||
for msg_file in classifier.msg_files_receive:
|
||||
if classifier.alias_msgs_to_send:
|
||||
for msg_file in classifier.alias_msgs_to_send:
|
||||
msg_alias = msg_file[0].keys()[0]
|
||||
msg_name = msg_file[1]
|
||||
if gen_idl:
|
||||
if out_dir != agent_out_dir:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, os.path.join(out_dir, "/idl"), urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_name, msg_dir, msg_alias, os.path.join(out_dir, "/idl"), urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
else:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, idl_dir, urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_name, msg_dir, msg_alias, idl_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, out_dir, urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_name, msg_dir, msg_alias, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_PUBLISHER_SRC_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_name, msg_dir, msg_alias, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_PUBLISHER_H_TEMPL_FILE)
|
||||
|
||||
if classifier.msgs_to_receive:
|
||||
for msg_file in classifier.msgs_to_receive:
|
||||
if gen_idl:
|
||||
if out_dir != agent_out_dir:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, msg_dir, "", os.path.join(out_dir, "/idl"), urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
else:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_file, msg_dir, "", idl_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, msg_dir, "", out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_SUBSCRIBER_SRC_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, out_dir, urtps_templates_dir,
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_file, msg_dir, "", out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_SUBSCRIBER_H_TEMPL_FILE)
|
||||
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msg_files_send, classifier.msg_files_receive, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msg_files_send, classifier.msg_files_receive, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_TOPICS_H_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msg_files_send, classifier.msg_files_receive, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_TOPICS_SRC_TEMPL_FILE)
|
||||
if classifier.alias_msgs_to_receive:
|
||||
for msg_file in classifier.alias_msgs_to_receive:
|
||||
msg_alias = msg_file[0].keys()[0]
|
||||
msg_name = msg_file[1]
|
||||
if gen_idl:
|
||||
if out_dir != agent_out_dir:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_name, msg_dir, msg_alias, os.path.join(out_dir, "/idl"), urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
else:
|
||||
px_generate_uorb_topic_files.generate_idl_file(msg_name, msg_dir, msg_alias, idl_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_name, msg_dir, msg_alias, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_SUBSCRIBER_SRC_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_topic_file(msg_name, msg_dir, msg_alias, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_SUBSCRIBER_H_TEMPL_FILE)
|
||||
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msgs_to_send, classifier.alias_msgs_to_send, classifier.msgs_to_receive, classifier.alias_msgs_to_receive, msg_dir, out_dir,
|
||||
urtps_templates_dir, package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msgs_to_send, classifier.alias_msgs_to_send, classifier.msgs_to_receive, classifier.alias_msgs_to_receive, msg_dir, out_dir,
|
||||
urtps_templates_dir, package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_TOPICS_H_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msgs_to_send, classifier.alias_msgs_to_send, classifier.msgs_to_receive, classifier.alias_msgs_to_receive, msg_dir, out_dir,
|
||||
urtps_templates_dir, package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_TOPICS_SRC_TEMPL_FILE)
|
||||
if cmakelists:
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msg_files_send, classifier.msg_files_receive, out_dir, urtps_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_CMAKELISTS_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msgs_to_send, classifier.alias_msgs_to_send, classifier.msgs_to_receive, classifier.alias_msgs_to_receive, msg_dir, out_dir,
|
||||
urtps_templates_dir, package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_AGENT_CMAKELISTS_TEMPL_FILE)
|
||||
|
||||
# Final steps to install agent
|
||||
mkdir_p(os.path.join(out_dir, "fastrtpsgen"))
|
||||
@@ -387,8 +424,8 @@ def generate_client(out_dir):
|
||||
if os.path.isfile(def_file):
|
||||
os.rename(def_file, def_file.replace(".h", ".h_"))
|
||||
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msg_files_send, classifier.msg_files_receive, out_dir, uorb_templates_dir,
|
||||
package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_CLIENT_TEMPL_FILE)
|
||||
px_generate_uorb_topic_files.generate_uRTPS_general(classifier.msgs_to_send, classifier.alias_msgs_to_send, classifier.msgs_to_receive, classifier.alias_msgs_to_receive, msg_dir,
|
||||
out_dir, uorb_templates_dir, package, px_generate_uorb_topic_files.INCL_DEFAULT, classifier.msg_id_map, uRTPS_CLIENT_TEMPL_FILE)
|
||||
|
||||
# Final steps to install client
|
||||
cp_wildcard(os.path.join(urtps_templates_dir,
|
||||
|
||||
@@ -170,13 +170,24 @@ def generate_output_from_file(format_idx, filename, outputdir, package, template
|
||||
return generate_by_template(output_file, template_file, em_globals)
|
||||
|
||||
|
||||
def generate_idl_file(filename_msg, outputdir, templatedir, package, includepath, ids):
|
||||
def generate_idl_file(filename_msg, msg_dir, alias, outputdir, templatedir, package, includepath, ids):
|
||||
"""
|
||||
Generates an .idl from .msg file
|
||||
"""
|
||||
em_globals = get_em_globals(
|
||||
filename_msg, package, includepath, ids, MsgScope.NONE)
|
||||
spec_short_name = em_globals["spec"].short_name
|
||||
# Make sure input msg directory exists:
|
||||
if not os.path.isdir(msg_dir):
|
||||
os.makedirs(msg_dir)
|
||||
|
||||
msg = os.path.join(msg_dir, filename_msg + ".msg")
|
||||
|
||||
if (alias != ""):
|
||||
em_globals = get_em_globals(
|
||||
msg, alias , package, includepath, ids, MsgScope.NONE)
|
||||
spec_short_name = alias
|
||||
else:
|
||||
em_globals = get_em_globals(
|
||||
msg, "", package, includepath, ids, MsgScope.NONE)
|
||||
spec_short_name = em_globals["spec"].short_name
|
||||
|
||||
# Make sure output directory exists:
|
||||
if not os.path.isdir(outputdir):
|
||||
@@ -189,21 +200,39 @@ def generate_idl_file(filename_msg, outputdir, templatedir, package, includepath
|
||||
return generate_by_template(output_file, template_file, em_globals)
|
||||
|
||||
|
||||
def generate_uRTPS_general(filename_send_msgs, filename_received_msgs,
|
||||
outputdir, templatedir, package, includepath, ids, template_name):
|
||||
def generate_uRTPS_general(filename_send_msgs, filename_alias_send_msgs, filename_receive_msgs, filename_alias_receive_msgs,
|
||||
msg_dir, outputdir, templatedir, package, includepath, ids, template_name):
|
||||
"""
|
||||
Generates source file by msg content
|
||||
"""
|
||||
em_globals_list = []
|
||||
if filename_send_msgs:
|
||||
em_globals_list.extend([get_em_globals(
|
||||
f, package, includepath, ids, MsgScope.SEND) for f in filename_send_msgs])
|
||||
# Make sure input msg directory exists:
|
||||
if not os.path.isdir(msg_dir):
|
||||
os.makedirs(msg_dir)
|
||||
|
||||
if filename_received_msgs:
|
||||
send_msgs = list(os.path.join(msg_dir, msg + ".msg") for msg in filename_send_msgs)
|
||||
alias_send_msgs = list([os.path.join(msg_dir, msg[1] + ".msg"), msg[0].keys()[0]] for msg in filename_alias_send_msgs)
|
||||
receive_msgs = list(os.path.join(msg_dir, msg + ".msg") for msg in filename_receive_msgs)
|
||||
alias_receive_msgs = list([os.path.join(msg_dir, msg[1] + ".msg"), msg[0].keys()[0]] for msg in filename_alias_receive_msgs)
|
||||
|
||||
em_globals_list = []
|
||||
if send_msgs:
|
||||
em_globals_list.extend([get_em_globals(
|
||||
f, package, includepath, ids, MsgScope.RECEIVE) for f in filename_received_msgs])
|
||||
f, "", package, includepath, ids, MsgScope.SEND) for f in send_msgs])
|
||||
|
||||
if alias_send_msgs:
|
||||
em_globals_list.extend([get_em_globals(
|
||||
f[0], f[1], package, includepath, ids, MsgScope.SEND) for f in alias_send_msgs])
|
||||
|
||||
if receive_msgs:
|
||||
em_globals_list.extend([get_em_globals(
|
||||
f, "", package, includepath, ids, MsgScope.RECEIVE) for f in receive_msgs])
|
||||
|
||||
if alias_receive_msgs:
|
||||
em_globals_list.extend([get_em_globals(
|
||||
f[0], f[1], package, includepath, ids, MsgScope.RECEIVE) for f in alias_receive_msgs])
|
||||
|
||||
merged_em_globals = merge_em_globals_list(em_globals_list)
|
||||
|
||||
# Make sure output directory exists:
|
||||
if not os.path.isdir(outputdir):
|
||||
os.makedirs(outputdir)
|
||||
@@ -215,13 +244,24 @@ def generate_uRTPS_general(filename_send_msgs, filename_received_msgs,
|
||||
return generate_by_template(output_file, template_file, merged_em_globals)
|
||||
|
||||
|
||||
def generate_topic_file(filename_msg, outputdir, templatedir, package, includepath, ids, template_name):
|
||||
def generate_topic_file(filename_msg, msg_dir, alias, outputdir, templatedir, package, includepath, ids, template_name):
|
||||
"""
|
||||
Generates an .idl from .msg file
|
||||
Generates a sources and headers from .msg file
|
||||
"""
|
||||
em_globals = get_em_globals(
|
||||
filename_msg, package, includepath, ids, MsgScope.NONE)
|
||||
spec_short_name = em_globals["spec"].short_name
|
||||
# Make sure input msg directory exists:
|
||||
if not os.path.isdir(msg_dir):
|
||||
os.makedirs(msg_dir)
|
||||
|
||||
msg = os.path.join(msg_dir, filename_msg + ".msg")
|
||||
|
||||
if (alias):
|
||||
em_globals = get_em_globals(
|
||||
msg, alias, package, includepath, ids, MsgScope.NONE)
|
||||
spec_short_name = alias
|
||||
else:
|
||||
em_globals = get_em_globals(
|
||||
msg, "", package, includepath, ids, MsgScope.NONE)
|
||||
spec_short_name = em_globals["spec"].short_name
|
||||
|
||||
# Make sure output directory exists:
|
||||
if not os.path.isdir(outputdir):
|
||||
@@ -234,7 +274,7 @@ def generate_topic_file(filename_msg, outputdir, templatedir, package, includepa
|
||||
return generate_by_template(output_file, template_file, em_globals)
|
||||
|
||||
|
||||
def get_em_globals(filename_msg, package, includepath, ids, scope):
|
||||
def get_em_globals(filename_msg, alias, package, includepath, ids, scope):
|
||||
"""
|
||||
Generates em globals dictionary
|
||||
"""
|
||||
@@ -261,7 +301,8 @@ def get_em_globals(filename_msg, package, includepath, ids, scope):
|
||||
"topics": topics,
|
||||
"ids": ids,
|
||||
"scope": scope,
|
||||
"package": package
|
||||
"package": package,
|
||||
"alias": alias
|
||||
}
|
||||
|
||||
return em_globals
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
#############################################################################
|
||||
#
|
||||
# Copyright (C) 2013-2018 PX4 Pro Development Team. All rights reserved.
|
||||
# Copyright (C) 2013-2019 PX4 Pro Development Team. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
|
||||
@@ -50,9 +50,9 @@ class Classifier():
|
||||
self.msg_id_map = self.parse_yaml_msg_id_file(yaml_file)
|
||||
self.check_if_listed(yaml_file)
|
||||
|
||||
self.msgs_to_send = self.set_msgs_to_send()
|
||||
self.msgs_to_receive = self.set_msgs_to_receive()
|
||||
self.msgs_to_ignore = self.set_msgs_to_ignore()
|
||||
self.msgs_to_send, self.alias_msgs_to_send = self.set_msgs_to_send()
|
||||
self.msgs_to_receive, self.alias_msgs_to_receive = self.set_msgs_to_receive()
|
||||
self.msgs_to_ignore, self.alias_msgs_to_ignore = self.set_msgs_to_ignore()
|
||||
self.msg_files_send = self.set_msg_files_send()
|
||||
self.msg_files_receive = self.set_msg_files_receive()
|
||||
self.msg_files_ignore = self.set_msg_files_ignore()
|
||||
@@ -67,24 +67,36 @@ class Classifier():
|
||||
|
||||
def set_msgs_to_send(self):
|
||||
send = {}
|
||||
send_alias = []
|
||||
for dict in self.msg_id_map['rtps']:
|
||||
if 'send' in dict.keys():
|
||||
send.update({dict['msg']: dict['id']})
|
||||
return send
|
||||
if 'alias' in dict.keys():
|
||||
send_alias.append(({dict['msg']: dict['id']}, dict['alias']))
|
||||
else:
|
||||
send.update({dict['msg']: dict['id']})
|
||||
return send, send_alias
|
||||
|
||||
def set_msgs_to_receive(self):
|
||||
receive = {}
|
||||
receive_alias = []
|
||||
for dict in self.msg_id_map['rtps']:
|
||||
if 'receive' in dict.keys():
|
||||
receive.update({dict['msg']: dict['id']})
|
||||
return receive
|
||||
if 'alias' in dict.keys():
|
||||
receive_alias.append(({dict['msg']: dict['id']}, dict['alias']))
|
||||
else:
|
||||
receive.update({dict['msg']: dict['id']})
|
||||
return receive, receive_alias
|
||||
|
||||
def set_msgs_to_ignore(self):
|
||||
ignore = {}
|
||||
ignore_alias = []
|
||||
for dict in self.msg_id_map['rtps']:
|
||||
if ('send' not in dict.keys()) and ('receive' not in dict.keys()):
|
||||
ignore.update({dict['msg']: dict['id']})
|
||||
return ignore
|
||||
if (('send' not in dict.keys()) and ('receive' not in dict.keys())):
|
||||
if 'alias' in dict.keys():
|
||||
ignore_alias.append(({dict['msg']: dict['id']}, dict['alias']))
|
||||
else:
|
||||
ignore.update({dict['msg']: dict['id']})
|
||||
return ignore, ignore_alias
|
||||
|
||||
def set_msg_files_send(self):
|
||||
return [os.path.join(self.msg_folder, msg + ".msg")
|
||||
@@ -141,7 +153,9 @@ if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument("-s", "--send", dest='send',
|
||||
action="store_true", help="Get topics to be sended")
|
||||
action="store_true", help="Get topics to be sent")
|
||||
parser.add_argument("-a", "--alias", dest='alias',
|
||||
action="store_true", help="Get alias topics")
|
||||
parser.add_argument("-r", "--receive", dest='receive',
|
||||
action="store_true", help="Get topics to be received")
|
||||
parser.add_argument("-i", "--ignore", dest='ignore',
|
||||
@@ -170,19 +184,34 @@ if __name__ == "__main__":
|
||||
print ('send files: ' + ', '.join(str(msg_file)
|
||||
for msg_file in classifier.msgs_files_send) + '\n')
|
||||
else:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_send.keys()) + '\n')
|
||||
if args.alias:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_send.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0])
|
||||
for msg in classifier.alias_msgs_to_send) if len(classifier.alias_msgs_to_send) > 0 else '') + '\n')
|
||||
else:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_send.keys()))
|
||||
if args.receive:
|
||||
if args.path:
|
||||
print ('receive files: ' + ', '.join(str(msg_file)
|
||||
for msg_file in classifier.msgs_files_receive) + '\n')
|
||||
else:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_receive.keys()) + '\n')
|
||||
if args.alias:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_receive.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0])
|
||||
for msg in classifier.alias_msgs_to_receive) if len(classifier.alias_msgs_to_receive) > 0 else '') + '\n')
|
||||
else:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_receive.keys()))
|
||||
if args.ignore:
|
||||
if args.path:
|
||||
print ('ignore files: ' + ', '.join(str(msg_file)
|
||||
for msg_file in classifier.msgs_files_ignore) + '\n')
|
||||
else:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_ignore.keys()) + '\n')
|
||||
if args.alias:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_ignore.keys()) + (' alias ' + ', '.join(str(msg[0].keys()[0])
|
||||
for msg in classifier.alias_msgs_to_ignore) if len(classifier.alias_msgs_to_ignore) > 0 else '') + '\n')
|
||||
else:
|
||||
print (', '.join(str(msg)
|
||||
for msg in classifier.msgs_to_ignore.keys()))
|
||||
|
||||
@@ -98,7 +98,7 @@ rtps:
|
||||
id: 40
|
||||
- msg: mount_orientation
|
||||
id: 41
|
||||
- msg: multirotor_motor_limit
|
||||
- msg: multirotor_motor_limits
|
||||
id: 42
|
||||
- msg: obstacle_distance
|
||||
id: 43
|
||||
@@ -207,7 +207,7 @@ rtps:
|
||||
id: 89
|
||||
- msg: vehicle_command_ack
|
||||
id: 90
|
||||
- msg: vehicle_constraint
|
||||
- msg: vehicle_constraints
|
||||
id: 91
|
||||
- msg: vehicle_control_mode
|
||||
id: 92
|
||||
@@ -246,46 +246,54 @@ rtps:
|
||||
- msg: collision_constraints
|
||||
id: 107
|
||||
send: true
|
||||
- msg: multirotor_motor_limits
|
||||
id: 108
|
||||
- msg: vehicle_constraints
|
||||
id: 109
|
||||
- msg: orbit_status
|
||||
id: 110
|
||||
id: 108
|
||||
- msg: power_monitor
|
||||
id: 111
|
||||
id: 109
|
||||
- msg: landing_gear
|
||||
id: 112
|
||||
id: 110
|
||||
# multi topics
|
||||
- msg: actuator_controls_0
|
||||
id: 120
|
||||
alias: actuactor_controls
|
||||
- msg: actuator_controls_1
|
||||
id: 121
|
||||
alias: actuactor_controls
|
||||
- msg: actuator_controls_2
|
||||
id: 122
|
||||
alias: actuactor_controls
|
||||
- msg: actuator_controls_3
|
||||
id: 123
|
||||
alias: actuactor_controls
|
||||
- msg: actuator_controls_virtual_fw
|
||||
id: 124
|
||||
alias: actuactor_controls
|
||||
- msg: actuator_controls_virtual_mc
|
||||
id: 125
|
||||
alias: actuactor_controls
|
||||
- msg: mc_virtual_attitude_setpoint
|
||||
id: 126
|
||||
alias: vehicle_attitude_setpoint
|
||||
- msg: fw_virtual_attitude_setpoint
|
||||
id: 127
|
||||
alias: vehicle_attitude_setpoint
|
||||
- msg: vehicle_attitude_groundtruth
|
||||
id: 128
|
||||
alias: vehicle_attitude
|
||||
- msg: vehicle_global_position_groundtruth
|
||||
id: 129
|
||||
alias: vehicle_global_position
|
||||
- msg: vehicle_local_position_groundtruth
|
||||
id: 130
|
||||
alias: vehicle_local_position
|
||||
- msg: vehicle_mocap_odometry
|
||||
alias: vehicle_odometry
|
||||
id: 131
|
||||
receive: true
|
||||
- msg: vehicle_visual_odometry
|
||||
id: 132
|
||||
- msg: mc_virtual_rates_setpoint
|
||||
id: 133
|
||||
- msg: fw_virtual_rates_setpoint
|
||||
id: 134
|
||||
alias: vehicle_odometry
|
||||
receive: true
|
||||
- msg: vehicle_trajectory_waypoint_desired
|
||||
id: 135
|
||||
id: 133
|
||||
alias: vehicle_trajectory_waypoint
|
||||
|
||||
Reference in New Issue
Block a user