#python #ros #subscriber
#python #ros #подписчик
Вопрос:
if __name__ == '__main__':
rospy.init_node('grounding_node_temp')
rospy.sleep(1.0)
pub = rospy.Publisher('/task_commands', String, queue_size=10, latch=True)
rospy.sleep(1.0)
d = {"storage_left": ['book', 'eraser', 'soap2'], "storage_right": ['snacks', 'biscuits', 'glue', 'soap'] }
pub.publish(json.dumps(d, encoding='ascii'))
rospy.sleep(1.0)
rospy.spin()
Как я могу подписаться на эту информацию об объекте dict?
Или будет лучше, если я смогу использовать эту информацию в другом коде, чтобы я мог получить список объектов.
Для типичного примера, такого как talker.py и listener.py , есть rospy.loginfo()
в talker.py
и listener.py
имеет функцию обратного вызова с rospy.loginfo(rospy.get_caller_id() .... )
помощью . И rospy.loginfo(rospy.get_caller_id())
подписывается на информацию из talker.py
. Точно так же, я хочу получить информацию из вышеприведенного объекта dict, но я не знаю, как это сделать.
Ответ №1:
вы можете сделать это, например, у меня есть my_script.py со следующим кодом
my_dict = {
'id': 1
}
вы можете получить доступ к dict с помощью import
инструкции
import my_script
print(my_script.my_dict) # { 'id': 1 }
Комментарии:
1. Я сделал аналогично, но в нем написано ‘AttributeError: ‘module’ объект не имеет атрибута ‘my_dict’ ‘ (в моем случае ‘d’).
2. вам нужно поместить их в один и тот же каталог, если нет, вам нужно включить родительский каталог
import <parent-directory>.my_script