mje-nz / natnet_ros

NatNet 3 ROS driver
BSD 3-Clause "New" or "Revised" License
19 stars 9 forks source link

Skeleton support #4

Open jsampat2 opened 5 years ago

jsampat2 commented 5 years ago

Hello,

I was trying to use your package to run a skeleton tracking with 37 markers (default on Motive). But I kept getting the following decode error:

Traceback (most recent call last): File "/home/radlab/catkin_omar/src/natnet_ros/natnet_ros/scripts/client", line 217, in node.run() File "/home/radlab/catkin_omar/src/natnet_ros/natnet_ros/scripts/client", line 207, in run client = natnet.Client.connect(server, logger=self.log) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 415, in connect return cls._simple_connect(server, logger, timeout) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 398, in _simple_connect return cls._setup_client(conn, server_info, logger) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 351, in _setup_client model_definitionsmessage, = conn.wait_for_message_with_id(protocol.MessageId.ModelDef) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 154, in wait_for_message_with_id return protocol.deserialize_payload(message_id, payload), received_time File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 281, in deserialize_payload return _registry.deserialize_payload(*args, **kwargs) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 231, in deserialize_payload message = message_type.deserialize(payload_data, version) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 196, in deserialize models.append(MarkersetDescription.deserialize(data, version)) File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 53, in deserialize marker_names = [data.unpack_cstr() for i in range(marker_count)] File "/home/radlab/catkin_omar/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 125, in unpack_cstr return value.decode('utf-8') File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xf5 in position 0: invalid start byte

Could you help figure out what the error could be? This error wasn't showing up when I tried to stream a rigid body with 3 markers. Your help would be most appreciated!

Thank you, Jigisha

mje-nz commented 5 years ago

Hi Jigisha, are you working with Omar? Is this the same setup he's been working with?

jsampat2 commented 5 years ago

Hello,

Yes, I am working with Omar. We are facing new errors with the version update. We were able to track 3 markers on a rigid body but ran into the error above when we tried to stream a skeleton. The skeleton is streaming successfully to a NatNet SDK program, so we are fairly certain the settings on Motive are not incorrect.

If you could guide us through this error, we would be most obliged.

Thank you, Jigisha

mje-nz commented 5 years ago

Ok, which version of Motive are you using now and which branch and commit of natnet_ros are you on?

Could you please show me the command you run and its full output, not just the error? Could you please also capture the network traffic for me (as Omar did here), first with the natnet_ros client and then with the Natnet SDK SampleClient.exe?

mje-nz commented 5 years ago

Oh, and if you aren't on the latest commit in the dev branch then please change to that first!

jsampat2 commented 5 years ago

Hi Matthew, we are using motive 2.1.1. We are also in dev and our commit is 8cadd00f99539259eb5b0ec9aa6a5bf3c5a0a966. I believe that is the latest commit.

Also below is the wireshark output when running SampleClient.exe. We weren't able to capture any data from natnet since it produced an error, which is the following: radlab@DESKTOP-TSTVI8U:~$ cd catkin_jigisha/ radlab@DESKTOP-TSTVI8U:~/catkin_jigisha$ source devel/setup.bash radlab@DESKTOP-TSTVI8U:~/catkin_jigisha$ cd src/natnet_ros/ radlab@DESKTOP-TSTVI8U:~/catkin_jigisha/src/natnet_ros$ rosrun natnet_ros client _server:=127.0.0.1 [INFO] [1556761985.181307]: Connecting to 127.0.0.1 Traceback (most recent call last): File "/home/radlab/catkin_jigisha/src/natnet_ros/natnet_ros/scripts/client", line 273, in <module> node.run() File "/home/radlab/catkin_jigisha/src/natnet_ros/natnet_ros/scripts/client", line 263, in run client = natnet.Client.connect(server, logger=self.log) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 415, in connect return cls._simple_connect(server, logger, timeout) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 398, in _simple_connect return cls._setup_client(conn, server_info, logger) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 351, in _setup_client model_definitions_message, _ = conn.wait_for_message_with_id(protocol.MessageId.ModelDef) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 154, in wait_for_message_with_id return protocol.deserialize_payload(message_id, payload), received_time File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 271, in deserialize_payload return _registry.deserialize_payload(*args, **kwargs) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 221, in deserialize_payload message = message_type.deserialize(payload_data, version) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 190, in deserialize models.append(MarkersetDescription.deserialize(data, version)) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 49, in deserialize marker_names = [data.unpack_cstr() for i in range(marker_count)] File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 115, in unpack_cstr return value.decode('utf-8') File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa2 in position 2: invalid start byte radlab@DESKTOP-TSTVI8U:~/catkin_jigisha/src/natnet_ros$ rosrun natnet_ros client _server:=127.0.0.1 [INFO] [1556762027.704857]: Connecting to 127.0.0.1 Traceback (most recent call last): File "/home/radlab/catkin_jigisha/src/natnet_ros/natnet_ros/scripts/client", line 273, in <module> node.run() File "/home/radlab/catkin_jigisha/src/natnet_ros/natnet_ros/scripts/client", line 263, in run client = natnet.Client.connect(server, logger=self.log) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 415, in connect return cls._simple_connect(server, logger, timeout) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 398, in _simple_connect return cls._setup_client(conn, server_info, logger) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 351, in _setup_client model_definitions_message, _ = conn.wait_for_message_with_id(protocol.MessageId.ModelDef) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 154, in wait_for_message_with_id return protocol.deserialize_payload(message_id, payload), received_time File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 271, in deserialize_payload return _registry.deserialize_payload(*args, **kwargs) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 221, in deserialize_payload message = message_type.deserialize(payload_data, version) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 190, in deserialize models.append(MarkersetDescription.deserialize(data, version)) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 49, in deserialize marker_names = [data.unpack_cstr() for i in range(marker_count)] File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 115, in unpack_cstr return value.decode('utf-8') File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa2 in position 2: invalid start byte radlab@DESKTOP-TSTVI8U:~/catkin_jigisha/src/natnet_ros$ rosrun natnet_ros client _server:=127.0.0.1 [INFO] [1556762040.926537]: Connecting to 127.0.0.1 Traceback (most recent call last): File "/home/radlab/catkin_jigisha/src/natnet_ros/natnet_ros/scripts/client", line 273, in <module> node.run() File "/home/radlab/catkin_jigisha/src/natnet_ros/natnet_ros/scripts/client", line 263, in run client = natnet.Client.connect(server, logger=self.log) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 415, in connect return cls._simple_connect(server, logger, timeout) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 398, in _simple_connect return cls._setup_client(conn, server_info, logger) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 351, in _setup_client model_definitions_message, _ = conn.wait_for_message_with_id(protocol.MessageId.ModelDef) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/comms.py", line 154, in wait_for_message_with_id return protocol.deserialize_payload(message_id, payload), received_time File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 271, in deserialize_payload return _registry.deserialize_payload(*args, **kwargs) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 221, in deserialize_payload message = message_type.deserialize(payload_data, version) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 190, in deserialize models.append(MarkersetDescription.deserialize(data, version)) File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/ModelDefinitionsMessage.py", line 49, in deserialize marker_names = [data.unpack_cstr() for i in range(marker_count)] File "/home/radlab/catkin_jigisha/src/natnet_ros/python_natnet/python_natnet/src/natnet/protocol/common.py", line 115, in unpack_cstr return value.decode('utf-8') File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa2 in position 2: invalid start byte

WireShark-05-1-2019.zip

mje-nz commented 5 years ago

Great, thanks. The Wireshark file is missing most of the data though, did you follow my instructions to Omar exactly?

Open a command prompt in the NatNet SDK samples folder. Start the capture with the filter "port 1510 or port 1511" so you only include NatNet traffic. Run SampleClient.exe in the command prompt, press 1 to connect, wait a few seconds while data flashes past, then press q to quit. Select all the output (Ctrl-A), copy it (Enter), and attach it here along with the capture file.

jsampat2 commented 5 years ago

Hi Matthew,

Please see attached the zip file with both capture WireShark data and command prompt data.

Regards, Omar WireShark_05-5-2019.zip

mje-nz commented 5 years ago

Thanks Omar, could you please do the same for the natnet_ros client?

jsampat2 commented 5 years ago

Hi Matthew,

Please see attached. I'm not quite sure if WireShark is able to catch any data since "rosrun natnet_ros client _server:=(Motive IP)" errors out very quickly. I have attached anything caught by WireShark in addition to what we entered in Ubuntu.

Regards WireShark_05-06-2019.zip

mje-nz commented 5 years ago

Thanks! That one has the one packet I needed to reproduce your error and it should be fixed now, please update and try again.

jsampat2 commented 5 years ago

Hi Matthew,

Great news, it is able to track a rigid body now and is showing us data. We tried it with a skeleton and it didn't return any data. Is there a reason for that? Please advice

Regards

mje-nz commented 5 years ago

Oh good! Can you show me your Data Streaming settings in Motive? I think I probably need "Skeletons as Rigid Bodies" turned off.

mje-nz commented 5 years ago

Is it working for you now?