OK - as long as the data is not lost, that you don't have a human body in the middle of the waves and you are not sending that too far, yes 6000 can work.
Some things to take into account
sendRoll = map(ToDeg(roll), -180, 180, 0, 360);
sendPitch = map(ToDeg(pitch), -180, 180, 0, 360);
sendYaw = map(ToDeg(yaw), -180, 180, 0, 360);
so you have a value between -180 and 180 and you want that value between 0 and 360, right? you don't need to call the map function for this, just add 180 given there is no scaling factor. that will be much faster.
sendRoll = ToDeg(roll)+180;
sendPitch = ToDeg(pitch)+180;
sendYaw = ToDeg(yaw)+180;
While this seems weird at first, I would not do the vw_wait_tx()
just after vw_send((uint8_t *)pos, sizeof(pos));
but before. The reason is that you have plenty to do to go get your next Roll, Pitch and Yaw values, so why wait without doing anything for the communication to occur while you could already be acquiring the next values. if by the time you come back the transmission is not over, then you'll wait before sending the new values but if it is done, then you send right away. In any case you are faster than the current version.
As the array is not duplicated by the send function, you can't mess with it so I would write
sendRoll = ToDeg(roll)+180;
sendPitch = ToDeg(pitch)+180;
sendYaw = ToDeg(yaw)+180;
vw_wait_tx(); // wait for the previous transmit to possibly terminate
// now load the buffer
pos[0] = sendRoll / 256;
pos[1] = sendRoll % 256;
pos[2] = sendPitch / 256;
pos[3] = sendPitch % 256;
pos[4] = sendYaw / 256;
pos[5] = sendYaw % 256;
vw_send((uint8_t *)pos, sizeof(pos)); // send the info
what do you do with the data on the receiving end? are you using servo.write(angle)
? if so the angle can only be between 0 and 180, so there is no need to send a value between 0 and 360 which needs 2 bytes and then do some math with it on the receiving end to map that between 0 and 180. do the math before sending so that you only send something that you can use with the servo.
if you bring the value between 0 and 180, then only 1 byte is needed and you increased your transmission speed.
On the receiving end, do you test for proper reception? vw_get_message(buf, &buflen))
reads the last received message and the function returns true
if the message was verified correct, or false if a message was received but appears to have been corrupted.
it would be interesting to see if you are at 100% quality, that could create the stuttering you see if some of the values are sent to the servos but are weird numbers.