Как мне подписаться на объект dict из ROS?

#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