Back to the main page.
Bug 3318 - implement support for the 16-channel OpenBCI cyton board
Status | CLOSED FIXED |
Reported | 2017-06-27 13:44:00 +0200 |
Modified | 2019-08-10 12:40:33 +0200 |
Product: | FieldTrip |
Component: | realtime |
Version: | unspecified |
Hardware: | PC |
Operating System: | Mac OS |
Importance: | P5 normal |
Assigned to: | Robert Oostenveld |
URL: | |
Tags: | |
Depends on: | |
Blocks: | |
See also: |
Robert Oostenveld - 2017-06-27 13:44:27 +0200
Robert Oostenveld - 2017-06-27 13:51:46 +0200
Cristiano was able to borrow me a 16-channel board. I compiled the 8-channel version with verbose=2 to see the packet content: openbci2ft: sample count = 920 openbci2ft: clientrequest returned 0 a0 98 80 00 00 f7 07 7f 92 66 db 94 14 6b 88 0f 78 8a 03 09 89 58 32 84 74 82 00 00 00 00 00 00 c0 a0 99 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 a0 ff b0 1e f0 c0 a0 9a 80 00 00 f7 07 e1 92 68 7e 94 15 fa 88 0f ff 8a 03 88 89 58 b9 84 75 0c 00 00 00 00 00 00 c0 a0 9b 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 9c 80 00 00 f7 07 96 92 69 73 94 16 ed 88 0f df 8a 03 5e 89 58 99 84 74 e8 00 00 00 00 00 00 c0 a0 9d 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 9e 80 00 00 f7 07 1a 92 6a 39 94 17 a8 88 0f 8b 8a 03 05 89 58 47 84 74 91 00 00 00 00 00 00 c0 a0 9f 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 a0 80 00 00 f7 07 6c 92 6b cc 94 19 31 88 10 0a 8a 03 78 89 58 c4 84 75 0b 00 00 00 00 00 00 c0 a0 a1 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 openbci2ft: sample count = 930 openbci2ft: clientrequest returned 0 a0 a2 80 00 00 f7 07 3e 92 6c e1 94 1a 3e 88 10 08 8a 03 70 89 58 bf 84 75 03 00 00 00 00 00 00 c0 a0 a3 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 c0 ff c0 1f 00 c0 a0 a4 80 00 00 f7 07 41 92 6e 21 94 1b 72 88 10 2f 8a 03 92 89 58 e7 84 75 2f 00 00 00 00 00 00 c0 a0 a5 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 a6 80 00 00 f7 07 1f 92 6f 45 94 1c 98 88 10 44 8a 03 9e 89 58 fd 84 75 39 00 00 00 00 00 00 c0 a0 a7 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 a8 80 00 00 f7 06 da 92 70 3b 94 1d 87 88 10 1f 8a 03 75 89 58 db 84 75 14 00 00 00 00 00 00 c0 a0 a9 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 aa 80 00 00 f7 06 7d 92 71 1f 94 1e 5c 88 0f f3 8a 03 3d 89 58 a8 84 74 e2 00 00 00 00 00 00 c0 a0 ab 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 openbci2ft: sample count = 940 openbci2ft: clientrequest returned 0 a0 ac 80 00 00 f7 06 24 92 72 08 94 1f 47 88 0f c9 8a 03 0b 89 58 81 84 74 b4 00 00 00 00 00 00 c0 a0 ad 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 c0 ff c0 1f 30 c0 a0 ae 80 00 00 f7 06 3c 92 73 5a 94 20 8d 88 0f ff 8a 03 3f 89 58 b8 84 74 f0 00 00 00 00 00 00 c0 a0 af 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 b0 80 00 00 f7 05 ec 92 74 4f 94 21 7b 88 0f e3 8a 03 1d 89 58 9b 84 74 cb 00 00 00 00 00 00 c0 a0 b1 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 b2 80 00 00 f7 06 2f 92 75 d0 94 22 f5 88 10 54 8a 03 82 89 59 04 84 75 32 00 00 00 00 00 00 c0 a0 b3 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 b4 80 00 00 f7 05 f5 92 76 d9 94 23 f3 88 10 43 8a 03 6d 89 58 f7 84 75 23 00 00 00 00 00 00 c0 a0 b5 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 openbci2ft: sample count = 950 openbci2ft: clientrequest returned 0 a0 b6 80 00 00 f7 06 22 92 78 4a 94 25 5e 88 10 a0 8a 03 c2 89 59 50 84 75 79 00 00 00 00 00 00 c0 a0 b7 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 e0 ff c0 1f 50 c0 a0 b8 80 00 00 f7 06 3e 92 79 a3 94 26 a6 88 10 dd 8a 03 f6 89 59 8e 84 75 b8 00 00 00 00 00 00 c0 a0 b9 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 ba 80 00 00 f7 06 0e 92 7a b9 94 27 bc 88 10 e3 8a 03 f4 89 59 93 84 75 b8 00 00 00 00 00 00 c0 a0 bb 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 bc 80 00 00 f7 05 e3 92 7b d2 94 28 c6 88 10 e0 8a 03 ec 89 59 92 84 75 b2 00 00 00 00 00 00 c0 a0 bd 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 be 80 00 00 f7 05 b7 92 7c e3 94 29 ce 88 10 db 8a 03 db 89 59 8b 84 75 b0 00 00 00 00 00 00 c0 a0 bf 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0
Robert Oostenveld - 2017-06-27 13:54:06 +0200
according to the 8-channel code it is /* * Header * Byte 1: 0xA0 * Byte 2: Sample Number * * EEG Data * Note: values are 24-bit signed, MSB first * Bytes 3-5: Data value for EEG channel 1 * Bytes 6-8: Data value for EEG channel 2 * Bytes 9-11: Data value for EEG channel 3 * Bytes 12-14: Data value for EEG channel 4 * Bytes 15-17: Data value for EEG channel 5 * Bytes 18-20: Data value for EEG channel 6 * Bytes 21-23: Data value for EEG channel 6 * Bytes 24-26: Data value for EEG channel 8 * * Accelerometer Data * Note: values are 16-bit signed, MSB first * Bytes 27-28: Data value for accelerometer channel X * Bytes 29-30: Data value for accelerometer channel Y * Bytes 31-32: Data value for accelerometer channel Z * * Footer * Byte 33: 0xC0 */ the header and footer are both in place. I remember (but don't know the pointer to the details now) that for 16 channels the board is sending the data at 125 Hz, i.e. every 2 samples correspond to 1 sample, with the lower and higher 8 channels.
Robert Oostenveld - 2017-06-27 13:56:14 +0200
for reference, here are some packets from the 8-channel configuration, i.e. with the daisy board not being plugged in openbci2ft: sample count = 5490 openbci2ft: clientrequest returned 0 a0 72 eb 49 a0 24 c0 67 1c 2b cf 1c 94 ac 1e 62 fa 1c 96 3d e6 9e 15 69 69 e2 00 00 00 00 00 00 c0 a0 73 eb 4a b5 24 c1 f5 1c 2c 10 1c 95 0b 1e 63 43 1c 96 a6 e6 9d 9e 69 69 f1 00 00 00 00 00 00 c0 a0 74 eb 4b 04 24 c3 5f 1c 2c 32 1c 95 46 1e 63 6e 1c 96 ec e6 9d 37 69 69 d9 00 00 00 00 00 00 c0 a0 75 eb 48 7c 24 c5 21 1c 2c a9 1c 95 da 1e 63 ef 1c 97 87 e6 9c 31 69 6a 23 00 00 00 00 00 00 c0 a0 76 eb 44 99 24 c7 7b 1c 2d b2 1c 96 ff 1e 65 01 1c 98 b8 e6 9a 81 69 6b 01 00 00 00 00 00 00 c0 a0 77 eb 43 36 24 c9 73 1c 2e 5e 1c 97 c8 1e 65 b6 1c 99 8a e6 99 63 69 6b 81 00 50 01 50 1f 10 c0 a0 78 eb 44 c5 24 ca b2 1c 2e 56 1c 97 d8 1e 65 b4 1c 99 a5 e6 99 3b 69 6b 48 00 00 00 00 00 00 c0 a0 79 eb 45 92 24 cc 08 1c 2e 66 1c 98 03 1e 65 ca 1c 99 d5 e6 98 ed 69 6b 1b 00 00 00 00 00 00 c0 a0 7a eb 43 19 24 cd e9 1c 2e fd 1c 98 b8 1e 66 66 1c 9a 8d e6 97 cf 69 6b 82 00 00 00 00 00 00 c0 a0 7b eb 3f 35 24 d0 01 1c 2f c6 1c 99 9d 1e 67 36 1c 9b 78 e6 96 5f 69 6c 23 00 00 00 00 00 00 c0 openbci2ft: sample count = 5500 openbci2ft: clientrequest returned 0 a0 7c eb 3d 52 24 d1 71 1c 2f ea 1c 99 db 1e 67 60 1c 9b c1 e6 95 c7 69 6c 17 00 00 00 00 00 00 c0 a0 7d eb 3e 8a 24 d2 d5 1c 30 03 1c 9a 0e 1e 67 83 1c 9c 02 e6 95 78 69 6b fe 00 00 00 00 00 00 c0 a0 7e eb 3f 5e 24 d4 6e 1c 30 50 1c 9a 7a 1e 67 d8 1c 9c 74 e6 94 e7 69 6c 15 00 00 00 00 00 00 c0 a0 7f eb 3d 1a 24 d5 e3 1c 30 7e 1c 9a c4 1e 68 0e 1c 9c c4 e6 94 34 69 6c 14 00 00 00 00 00 00 c0 a0 80 eb 39 a1 24 d7 cc 1c 31 1c 1c 9b 78 1e 68 b1 1c 9d 85 e6 92 f8 69 6c 87 00 60 01 50 1e f0 c0 a0 81 eb 38 3f 24 d9 78 1c 31 7a 1c 9b f2 1e 69 18 1c 9e 04 e6 92 28 69 6c b4 00 00 00 00 00 00 c0 a0 82 eb 39 72 24 da dc 1c 31 95 1c 9c 28 1e 69 3a 1c 9e 44 e6 91 da 69 6c 9e 00 00 00 00 00 00 c0 a0 83 eb 3a 0e 24 dc 3f 1c 31 b0 1c 9c 61 1e 69 59 1c 9e 85 e6 91 82 69 6c 82 00 00 00 00 00 00 c0 a0 84 eb 37 5f 24 dd da 1c 31 f5 1c 9c c6 1e 69 a9 1c 9e f1 e6 90 a5 69 6c 99 00 00 00 00 00 00 c0 a0 85 eb 33 75 24 e0 18 1c 32 e9 1c 9d d1 1e 6a 9d 1c a0 05 e6 8f 0c 69 6d 60 00 00 00 00 00 00 c0 openbci2ft: sample count = 5510 openbci2ft: clientrequest returned 0 a0 86 eb 31 ff 24 e1 bc 1c 33 44 1c 9e 46 1e 6b 02 1c a0 82 e6 8e 3c 69 6d 91 00 00 00 00 00 00 c0 a0 87 eb 33 63 24 e3 89 1c 33 c7 1c 9e e4 1e 6b 8d 1c a1 29 e6 8d 8b 69 6d e1 00 00 00 00 00 00 c0 a0 88 eb 34 5b 24 e5 0d 1c 34 03 1c 9f 3d 1e 6b cd 1c a1 8c e6 8d 14 69 6d e4 00 00 00 00 00 00 c0 a0 89 eb 32 00 24 e6 9f 1c 34 4a 1c 9f a2 1e 6c 1e 1c a1 f5 e6 8c 43 69 6d fc 00 00 00 00 00 00 c0 a0 8a eb 2e 28 24 e8 92 1c 34 f6 1c a0 64 1e 6c d0 1c a2 c4 e6 8a ef 69 6e 7e 00 60 01 80 1f 00 c0 a0 8b eb 2c 8a 24 ea 3a 1c 35 4e 1c a0 d4 1e 6d 2e 1c a3 3d e6 8a 22 69 6e ab 00 00 00 00 00 00 c0 a0 8c eb 2d 8e 24 eb b5 1c 35 7a 1c a1 20 1e 6d 63 1c a3 8f e6 89 be 69 6e a5 00 00 00 00 00 00 c0 a0 8d eb 2e 3d 24 ed 6f 1c 35 ee 1c a1 ac 1e 6d da 1c a4 25 e6 89 0a 69 6e e0 00 00 00 00 00 00 c0 a0 8e eb 2b bd 24 ef 5f 1c 36 98 1c a2 72 1e 6e 88 1c a4 ed e6 87 d9 69 6f 58 00 00 00 00 00 00 c0 a0 8f eb 27 e7 24 f1 13 1c 37 03 1c a2 fc 1e 6e fa 1c a5 82 e6 86 c6 69 6f 98 00 00 00 00 00 00 c0 openbci2ft: sample count = 5520 openbci2ft: clientrequest returned 0 a0 90 eb 26 a1 24 f2 99 1c 37 40 1c a3 50 1e 6f 41 1c a5 e4 e6 86 1a 69 6f ac 00 00 00 00 00 00 c0 a0 91 eb 27 e7 24 f4 10 1c 37 6f 1c a3 95 1e 6f 7a 1c a6 37 e6 85 ba 69 6f a5 00 00 00 00 00 00 c0 a0 92 eb 28 97 24 f5 e6 1c 37 fb 1c a4 3d 1e 70 0b 1c a6 ea e6 84 ea 69 6f fc 00 00 00 00 00 00 c0 a0 93 eb 26 2b 24 f7 ab 1c 38 77 1c a4 d6 1e 70 8d 1c a7 85 e6 83 ea 69 70 48 00 00 00 00 00 00 c0 a0 94 eb 22 0c 24 f9 44 1c 38 c3 1c a5 3d 1e 70 e0 1c a7 f6 e6 82 ef 69 70 6a 00 70 01 80 1f 10 c0 a0 95 eb 20 5d 24 fa e8 1c 39 18 1c a5 af 1e 71 3d 1c a8 6e e6 82 24 69 70 90 00 00 00 00 00 00 c0 a0 96 eb 21 89 24 fc a5 1c 39 93 1c a6 43 1e 71 bc 1c a9 08 e6 81 7c 69 70 d1 00 00 00 00 00 00 c0 a0 97 eb 22 39 24 fd ea 1c 39 8b 1c a6 5c 1e 71 bd 1c a9 2b e6 81 46 69 70 95 00 00 00 00 00 00 c0 a0 98 eb 20 14 24 ff c3 1c 3a 1e 1c a7 09 1e 72 55 1c a9 e4 e6 80 32 69 70 f6 00 00 00 00 00 00 c0 a0 99 eb 1c 47 25 01 81 1c 3a 94 1c a7 97 1e 72 d1 1c aa 7b e6 7f 12 69 71 3f 00 00 00 00 00 00 c0
Robert Oostenveld - 2017-06-27 14:08:19 +0200
here is another one with the daisy board plugged in. Now I ensured that it starts with the first data that is captured. Furthermore, I was touching the electrode connectors in this recording, which means that they should not all be railed but rather show high amplitude random noise. a0 75 70 64 61 74 69 6e 67 20 63 68 61 6e 6e 65 6c 20 73 65 74 74 69 6e 67 73 0d 0a c0 a0 00 bf fc a0 01 eb 48 ce eb 44 50 eb 3b 44 eb 41 a9 eb 3d 11 eb 3b 80 eb 3e 01 08 4a 13 00 00 00 00 00 00 c0 a0 02 fa c8 01 fa c9 68 fa c3 90 fa c3 5d fa c7 a1 35 94 40 3b 5d 78 4b 6b 10 00 00 00 00 00 00 c0 a0 03 b3 dc ca b3 d0 e6 b3 c0 61 b3 c9 28 b3 c1 dc b3 c7 08 b3 c1 cc ce 4c 64 00 00 00 00 00 00 c0 a0 04 e8 84 33 e8 86 42 e8 78 db e8 7b 6c e8 81 78 46 fb 6f 6f 20 2c 75 6c f5 00 00 00 00 00 00 c0 a0 05 a5 2a f2 a5 1d 35 a5 0c 0e a5 14 93 a5 0d 1b a5 14 a1 a5 0c ba a5 04 a9 00 00 00 00 00 00 c0 a0 06 d4 9f be d4 a2 76 d4 8f 9c d4 95 0c d4 9b b6 47 8e 5d 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 07 a0 87 9b a0 79 5e a0 67 d8 a0 70 4d a0 68 d5 a0 71 20 a0 67 d7 a0 5f 18 01 10 0e 00 1c 30 c0 a0 08 bf 6f f3 bf 73 52 bf 5a 99 bf 63 09 bf 6a fb 30 89 82 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 09 87 b9 72 87 a8 2e 87 95 29 87 9d 56 87 95 bf 87 a1 f8 87 93 41 87 8b 15 00 00 00 00 00 00 c0 openbci2ft: sample count = 10 openbci2ft: clientrequest returned 0 a0 0a ad 2c 07 ad 2f ec ad 12 18 ad 1d 22 ad 26 2f b8 01 9d 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 0b 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 00 00 00 00 00 00 c0 a0 0c 9e 98 47 9e 9c 94 9e 7a ad 9e 87 c3 9e 91 be 9e 80 a3 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 0d 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 dc 0d 93 00 00 00 00 00 00 c0 a0 0e 93 c6 ae 93 cb 48 93 a6 4e 93 b4 e4 93 bf e9 93 ad ff 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 0f 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 55 48 65 00 00 00 00 00 00 c0 a0 10 8b 94 ab 8b 99 7d 8b 72 2f 8b 81 ec 8b 8d b4 8b 7b 2d 7f ff ff 7f ff ff 00 f0 0f 20 1b 30 c0 a0 11 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 4c 5e 3b 00 00 00 00 00 00 c0 a0 12 85 73 77 85 78 75 85 4f 73 85 60 07 85 6c 59 85 59 68 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 13 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 44 04 e3 00 00 00 00 00 00 c0 openbci2ft: sample count = 20 openbci2ft: clientrequest returned 0 a0 14 80 e2 0f 80 e4 9c 80 cf 98 80 d8 22 80 de 76 80 d4 e0 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 15 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 41 2a 3c 00 00 00 00 00 00 c0 a0 16 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 17 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 3f e1 6e 00 00 00 00 00 00 c0 a0 18 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 7f ff ff 7f ff ff 00 00 00 00 00 00 c0 a0 19 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 3e 15 79 00 00 00 00 00 00 c0 a0 1a 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 7f ff ff 7f ff ff 00 b0 0f a0 1a d0 c0 a0 1b 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 2d 82 fe 00 00 00 00 00 00 c0 a0 1c 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 72 ae a1 7f ff ff 00 00 00 00 00 00 c0 a0 1d 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 d9 37 9d 33 df 60 00 00 00 00 00 00 c0 openbci2ft: sample count = 30 openbci2ft: clientrequest returned 0 The very first row is not correct, it starts with a0 but does not end with c0. At the second row the synchronization is correct, that is sample 1.
Robert Oostenveld - 2017-06-28 14:29:31 +0200
there are some commits, including mac011> git commit . [bug3318-cyton 36d5a19] use two functions from openbci.com to convert 3-byte and 2-byte arrays to int32 1 file changed, 46 insertions(+), 19 deletions(-) which include the implementation to support the 16 channel daisy board. I used the system from Cristiano. With a noisy signal, it now seems to work. In 8-channel mode it seems that it has a different strategy for sending the accelerometer channels than my own (older) board. This is something that needs further investigation. See also http://docs.openbci.com/Hardware/03-Cyton_Data_Format#cyton-data-format-binary-format and http://docs.openbci.com/OpenBCI%20Software/04-OpenBCI_Cyton_SDK.
Robert Oostenveld - 2017-06-29 13:25:39 +0200
the accelerometer channels on the board of Cris seem to send the data differently. But the 16-channel part works and the code seems clean enough. So I have merged https://github.com/fieldtrip/fieldtrip/pull/473
Robert Oostenveld - 2019-08-10 12:34:23 +0200
This closes a whole series of bugs that have been resolved (either FIXED/WONTFIX/INVALID) for quite some time. If you disagree, please file a new issue on https://github.com/fieldtrip/fieldtrip/issues.