If you send a command to Spot in a reference frame other than body, but only fill out the x and y values, then when spot moves to the new reference frame it will rotate, as seen in the attached gif.

In the gif, the robot is being told to navigate to several points along a line, but the spinning is making it quite inefficient.
I think this is happening because tf2_geometry_msgs.do_transform_pose catches the empty quaternion [0,0,0,0], populates it with something (I'm assuming [0,0,0,1]), and then applies the transform.
I think the functionality of being able to give spot an x and y goal in an arbitrary frame, without needing to specify the goal orientation, and have it navigate there without unnecessary spinning is desirable. I think its also a reasonable assumption that if not otherwise specified, spot should arrive at its goal facing forward.
I would like to solve this issue by adding a line to the function _transform_pose_to_body_frame() which checks to see if the quaternion provided is empty ([0,0,0,0]), and if so, calls a function which will compute the orientation such that if spot is travelling from point a to point b, it will have an orientation facing along the line a->b.
I've already implemented this in a separate script, but let me know if you don't think this would be a desirable addition.
If you send a command to Spot in a reference frame other than
body, but only fill out the x and y values, then when spot moves to the new reference frame it will rotate, as seen in the attached gif.In the gif, the robot is being told to navigate to several points along a line, but the spinning is making it quite inefficient.
I think this is happening because
tf2_geometry_msgs.do_transform_posecatches the empty quaternion [0,0,0,0], populates it with something (I'm assuming [0,0,0,1]), and then applies the transform.I think the functionality of being able to give spot an x and y goal in an arbitrary frame, without needing to specify the goal orientation, and have it navigate there without unnecessary spinning is desirable. I think its also a reasonable assumption that if not otherwise specified, spot should arrive at its goal facing forward.
I would like to solve this issue by adding a line to the function
_transform_pose_to_body_frame()which checks to see if the quaternion provided is empty ([0,0,0,0]), and if so, calls a function which will compute the orientation such that if spot is travelling from point a to point b, it will have an orientation facing along the line a->b.I've already implemented this in a separate script, but let me know if you don't think this would be a desirable addition.