저는 ROS Kinetic와 연결된 프로젝트에서 작업하고 있습니다. 파이썬 3을 사용하여 노드를 작성하고 ros-service를 사용하여 노드간에 정보를 전송하려고했습니다. 이 정보는 일반 ROS 유형으로 쉽게 포맷 할 수없는 거대한 객체를 나타냅니다. 따라서 pickle.dumps(object, 0).decode()
을 사용하여 string처럼 보냅니다. 서버 측에서는 피클을 사용할 수 없어서 예외적으로 만났습니다. No module named search
. 서버 측의 코드 :rothon kinetic에서 python3 라이브러리 사용
#!/usr/bin/env python3
from visualization.srv import *
import rospy
import pickle
megafoo = []
def handle_nodes(req):
global megafoo
print(type(req.nodes))
megafoo.extend(pickle.loads(req.nodes.encode()))
print(len(megafoo))
a=1
print("A request type: {0}".format(type(req)))
return ListNodesResponse(a)
def nodes_creater_server():
rospy.init_node('nodes_server')
s = rospy.Service('draw_some_nodes', ListNodes, handle_nodes)
print('ready to draw nodes')
rospy.spin()
if __name__ == "__main__":
nodes_creater_server()
내가, 내가 어떻게 든