解决方法是将rospy.init_node()
方法调用放在程序的入口处,确保只调用一次,而不是多次调用。
以下是一个示例代码:
import rospy
def main():
# 初始化ROS节点
rospy.init_node('my_node', anonymous=True)
# 执行其他操作
# ...
if __name__ == '__main__':
main()
在这个示例中,rospy.init_node()
方法只在main()
函数中被调用一次。这样做可以确保在程序运行过程中只有一个ROS节点被初始化。
注意,将rospy.init_node()
放在if __name__ == '__main__':
判断条件内是为了确保该代码块只在当前脚本作为主程序运行时才会被执行,而不是在其他模块导入时执行。这可以避免在模块导入时多次初始化ROS节点。
另外,通过设置anonymous=True
参数,可以确保每次运行节点时都会在节点名称后面添加一个唯一的数字,避免节点名称重复的问题。