Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing Documentation On IMU stream #45

Open
paulijosey opened this issue Oct 5, 2023 · 1 comment
Open

Missing Documentation On IMU stream #45

paulijosey opened this issue Oct 5, 2023 · 1 comment

Comments

@paulijosey
Copy link

Since version 1.1.2 imu data streaming should be possible. The thing missing is documentation on how to achive this task.
I have noticed though that the function receive_imu_data is now available and tried implementing that in a simmilar way to the video stream in the "match gaze and video" async example:

  1. create queues and processes
        restart_on_disconnect = True
        queue_cam_outward = asyncio.Queue()
        queue_gaze = asyncio.Queue()
        queue_imu = asyncio.Queue()
        
        process_cam_outward = asyncio.create_task(
            self.enqueue_sensor_data(
                receive_video_frames(self.cam_outward.url, run_loop=restart_on_disconnect),
                queue_cam_outward,
            )
        )
        process_imu = asyncio.create_task(
            self.enqueue_sensor_data(
                receive_imu_data(self.cam_outward.url, run_loop=restart_on_disconnect),
                queue_imu,
            )
        )
        process_gaze = asyncio.create_task(
            self.enqueue_sensor_data(
                receive_gaze_data(self.gaze.url, run_loop=restart_on_disconnect),
                queue_gaze,
            )
        )
  1. Loop and match
      try:
            # match queues
            while True:
                video_datetime, frame = await self.get_most_recent_item(queue_cam_outward)
                _, gaze = await self.get_closest_item(queue_gaze, video_datetime)
                _, imu  = await self.get_closest_item(queue_imu,  video_datetime)

Now though I get following error when running this:

Unable to parse imu data RTSPData(raw=b"\\\x81\xfc\x06\x7fM\xfe8\xf5\xd7\xa5\xd7!\x9f\xbe'\xbe\xfb\xcf\\\x87\xee^\xc6S\xd7~\xfeN\x97\xcb\xa7?\xf2\xe9~^\xd5q\x12\xaaj\x9f\xda\xf0O\xdaV\xb3\xe3}\xf44?.\\\xb4\xbb\xef\xf7\xe9y\xbd\xd7g\xb5\x89\xe8\xecW%xK\x90gg\xe6\xb0t\x0e^A\xa3+_\xf7~\x1b\xe45\x1eNp\x9a\xff@/0K\xb7\xec\xdb\x7f1\xeb\xbe\xad7GdGV\xbe\xc6t\x0f\xdct\xd3\xf5\xde\xff\x93\xda\xf1\xf6*\x8d\x9f\xb3\xd7\xda\xae\x13\x91\x99X\xb5\xfcV\x89\xeb\xa2\\\xdd\x14O \xde\xef\x94b]<r\x8e\xe4\xf6\x81/f\xa5\xae\x10\x1b\xaa\xd7\xde\xba\xbf\xcd\xaf\xe5:\xeb\xe4\xeb6.A\x88\xcf\xc8\x94\xf99\x8f\xbd\x08T\x8b\xc82\x97\xe4\xdf\xf7\xd3\xf9=/\x1dnc\x1e\xd5\x97|\x94\xbf\x9b}\xf2\xf7\x9fD\xba\xf5S>\xf1\x9c\xdc\xcfa\x02\x8c\xff8e\x7f\xa0\x12\xec$\xbdtw\xfa\xda~_K\xc1'\xbfW6\xba\xea\xdfV\xb1\n!\x84B\xb8\xbeA\x9a\xd5\xc6_\xb1mJo6\xd5\xf8\xc9\xa9\xfaU$\xbd\x97\xe1\x0fOk\xa5\xf1^\x87D\xda\xf8\x9a\xcf\x0f\x8e\xd7\xe3\xe5\x9f\xd2!.g\x93\x88\xa0\xbfMm\xec\xf3\xd6\x0by\x0f\x7f\xa2\x9a~\x9c\x17\x9c2\xbf\xd0\x08\xe2\x10\xca\xc7+}Z\xb9;\xfc_\xbe\xf7\xc4W\xf5\\\xbdV7\x0fy\xa4\x10\xac\xcb\xcbK\xa1\x0b'$\x86\xd9\xfeA\x8d\x7f$2\x9e\xaf\xf8O4\xbb_\x8b\xda\xe6\x87\xe2gA\xe3-\xf3\xfc!@\xec\x1d\xaf\x9a_\x15\x9c\xe5\xad\x15\xf1}\xae5y\x91/)\xf2\xe4@\x99\xe0\xa7_a.\x9f\xa0\x9d}o\x1d\xc9U\xd7W\xbeK\xf0\x95\xc8jz\xe42+}~&d\x80\xa3-\x91\x8d\x1b*/-\x17'1\x9a\xfeS\xb5\xfc\x86\xe6D\xbb?H\x11\xf2\xeb\x8a\xe6\xd7{1\xb8\xfao\x87\x02u\xdd\xfe\x80O\x9b]\xf2W\xfa\xd7\xd6\xbe\xb7\xae\xb5(\x9e\x86\xf7\xf9*\xb8\xae\xaf\\\x95\xe4\xea\xe4Oc7\xaen\xcf\xe4\xc5\xaf\xdd\x05\xfd\x1b\xab\xb0\x9b\\\x11\xf42\xa5\xe4:\xf3u\xef\x98\xda_&\xf5\xec^Q\xba\xfd[\xe6\xdf\\\x9b\xe4\xe6\xaf\\\x12Uz\xf8#\xbb\xf5/{\xef\xbe\xaa\xa1\xe0\xfcWW\xc4/\x9a\xf9\xbaS\x8d\xef\xf3\x0c\xa5\x85\x86\xc6\xfd\xe8\xdd*\xaf\xca3J\xb9=\xcb\xcb\xd89.\xe69\xfcT\xb9\xe9J\xc7\x89\xf4{_\x1d\x9a\x1eR;^g \x846\xb0\xb6!q\x0b\\\xc6\x95N\xf5\xf5\x7f\xa3\xf5\n%}r\xbe\xbd\xf5\xea\xe0\xa3\xbb\xef\xef\xab\xfc\xdd~\xfb\xd77_\xbe\xee\x84)\xa8nZ\xf5\xc9\xaf\xef}uxC\xb1\x89\xf0\x88\x98\xd9&\xc9\xca2\x8b|FV\xe8\x19T\xfe#\xd9\xd1~C%J\xfb<\xe4\xb467\xfb\x9eCO\x98\x8eY\xf3\xc4#\xdf\x13\xd2\x9f:\xee\xff\x9e\xf9F\x19\x06\x89\x87\xe57w\xca7_\x94\xfd}{\xeb\xdf^\xfb\xbb\xe6\xe6\xeb\x13\xd5\xfe\xaf\t\x0c_\xe1\x0ect\xb5\xbe\xcdk'}\xaa\xe5\xcc\xa7\x11\xccz\xe1!3\xc9\xca3O\xe65\t\n\xf9\xb6Z\xee\x97\xf0B\x13\xbe\xf2ui\xba\xbf\xcb\xae\xf9\xb7\xc8\xf0\xff\xea\xd5\xd6\xa1\xaeok\xccm\x99\xad\xdf\xadqF\xce\x93\xd9\x97\xb1\xab\xdf0\xce\xa5\xee\xc2\xe1\x8ea\xaf\x7f\xbe\xb5\xce5\x7f\xa0\x12\xe4\x0fr\xca\xec\xecH\xd0\xe3\xa7j\xac\xdd\x7f\xc5\x1b^\x9f\xcb\xeaH<\xfd\rbA9q\x89\xc9#s{:\x83\xf2Lm\xf9\xa57iqch\xfe\xe6\xe5\x19O\nf\xf94\x17\x9771\xf6\x7f\tx\xef\x8eA\xfeC\xef\xf2o\x93\x98e\x7f,\xcc\xff!\xef\x89\xe8\xed\xf5hDb\xb4\xd7\xd8K\xb1\xf8\xad\xfa\xfe8\xfc}\xf1\xa0\xff1\xba\xd8F\x88\x88v\xfd\x8f)\xd8\xd3\xf8\x9d\x8b\xd5\xf1n\xd7Y\xdena\x9d\xa5z\x96M\x9f\xe4\xa2\xe6\xe5\x1b\xd2\xf3v\x92\n\r\xf5|\xc3:\x063\x9a\xc4\xf7\x0c\xf3\r\xe9\x1f\x9cj\xff@%\xd8a\xb9X\xf8\xafc\xae\xc5\x10j^\xb5\xf5\xaf\xab\xfd^\xf9u\xcd\xcc3\\\xbe\t\xc2\x9e\x9f\xc2[\xfd|\x9eS'\xe0\x8bG\xc5\x0c\t\x8d\xf9\x86'\xfb6\xc7\xed\x13\xd9\x89\x13\x1b\x89\xe5\xeb\xe49\xbf\x84BV\xfd\x07\xe7c\xcb\xb2n\xa9\x8c=\xfc\x8f\xed\xf5\x88\xaf\xcd\xda\xf8#\x1b\xa5t\x9c\xdd'\xf2\x84\xbaZ\xbdfc\xc5\x9fj\xbc\xbc\x94\xb9\xb8O\xd2O\x89\xae67\xf8\xc1\xbf\xf5\xc83*\x98\xdem\xbf\xcav\xf8\x7f\x8b\x199\x1f\xb6\xb9O\\W.6\x18\x08e\x7f\xcc\x82\xd4\xdc\xdeix\xcfk\x96E\x94l\x96\xd7\xbe\x08F\xedR\xa1W\xeeA\x85$\xda\x07\xf3\x19\xff\x94n\x01F\xea\x9ena\x8d\xf5\xa8\xa10\x9c!\xdd?\xe6\xeb\x0e\x0e$\xd9\xd5\xc2\x01&\xbd\x1d\xa4?\xe4\x1a\xff\xc7\x9bM\xbd\xbe\xcbb\x025=\xcd\xee\xb8\xcf\xa1\x11\x98\xd8\xa7\xae!\xb5\xe77\xfe3\xcc\xde\xd6t\xa4\xc8M\xfd?\x08\xd0=\x03\xce1\xd9\xb3Ayy\xc5~S?\\q\xfa#\x9f\xa1\xfbK]\xe9\xeb", timestamp_unix_seconds=1696504982.2927241)
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/pupil_labs/realtime_api/streaming/imu.py", line 71, in receive
    imu_packet.ParseFromString(data.raw)
  File "/home/vscode/.local/lib/python3.10/site-packages/google/protobuf/message.py", line 199, in ParseFromString
    return self.MergeFromString(serialized)
  File "/home/vscode/.local/lib/python3.10/site-packages/google/protobuf/internal/python_message.py", line 1131, in MergeFromString
    raise message_mod.DecodeError('Unexpected end-group tag.')
google.protobuf.message.DecodeError: Unexpected end-group tag.

The error seems to be in the parsing function from pupil_labs/realtime_api/streaming/imu.py though I might have also initialized the imu wrong (I am using the same url as for the camera since the function "receive_imu_data" is also located under the "video" section).

Any help achiving this task would be apreciated!

@paulijosey
Copy link
Author

I fixed the bugs (was related to #47 ). Still I think some documentation would be nice :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant