shmpwk / jsk_2020_04_carry_dish

0 stars 0 forks source link

data_collection_server.pyで複数のトピックを保存しようとすると,msgが受け取れずエラーが出る.  #11

Closed shmpwk closed 2 years ago

shmpwk commented 4 years ago
[ERROR] [1603893108.861688]: Error processing request: '/kinect_head_remote/rgb/image_rect_color'
['Traceback (most recent call last):\n', '  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 632, in _handle_request\n    response = convert_return_to_response(self.handler(request), self.response_class)\n', '  File "/opt/ros/melodic/lib/jsk_data/data_collection_server.py", line 292, in sync_service_cb\n    result, msg = self._sync_save()\n', '  File "/opt/ros/melodic/lib/jsk_data/data_collection_server.py", line 224, in _sync_save\n    stamp = self.msg[self.topics[0][\'name\']][\'stamp\']\n', "KeyError: '/kinect_head_remote/rgb/image_rect_color'\n"]

ということで, /opt/ros/melodic/lib/jsk_data/data_collection_server.pyのL224は, stamp = self.msg[self.topics[0]['name']]['stamp']なのですが,

print(self.msg)  #{}
print("b", self.topics[0]['name']) #/heightmap_morphological_filtering/output
print(self.msg)  #{}
print("b", self.topics[1]['name']) #/kinect_head_remote/rgb/image_rect_color

となり,self.msgが空であることが原因であることがわかりました. 複数のトピックではなく,単一のトピックに絞ると,self.msgは例えば {{[58, 63,........ 0, 0, 128, 63]}} というように出力されました.

また, opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.pyresponse = convert_return_to_response(self.handler(request), self.response_class)/opt/ros/melodic/lib/jsk_data/data_collection_server.p line 292, in sync_service_cbはどのような原理で呼ばれているのかがよくわかりませんでした.

とにかく,syncではなく,approximateに処理できれば,self.msgが空になるのを防げるのかなと思いました.

shmpwk commented 4 years ago

rosparamは以下のように設定している message_filters: true approximate_sync: true queue_size: 100

shmpwk commented 4 years ago

queue_sizeを10000にすればいけた.重すぎる......

shmpwk commented 4 years ago

それでも,立ち上がって数分間は,同期がとれらないらしくエラーがでてしまう. しかも,うまく保存できたときも,その後のプログラムが走らなくなる.なぜだろうか.