unitreerobotics / unitree_legged_sdk

SDK tools for control robots.
BSD 3-Clause "New" or "Revised" License
270 stars 156 forks source link

I have a question about odometry technology. #114

Open OhsureBoy opened 10 months ago

OhsureBoy commented 10 months ago

std::array<float, 3> position; // (unit: m), from own odometry in inertial frame, usually using the drift variable.

  1. The odometry seems to start at about (0,0) coordinates when the robot dog is first turned on, is that correct?

  2. The value changes every time it moves in x,y coordinates. Is the principle of change determined by the motor sensor?

  3. The x,y values are changing, how can I know the direction in which the values are changing? I am currently checking with the value of imu.rpy[2], is that correct?

  4. As the error accumulates, the first coordinate (0,0) continues to change to another point. How can I correct this ?

Oh and one more question.

If it is correct that the position value of std::array<float, 3> becomes (0,0) when the robot dog is turned on, errors accumulate or the value changes when walking around.

Is there a way to change this back to (0,0)?

xyq1223 commented 9 months ago

Hello, first question: Yes, you are right. Second question: The motor sensor is only one of the inputs, and other information is needed. Third question: The changes in the x and y directions are based on the dog's The fourth problem of moving direction change: Sorry, we can't solve it at the moment. The fifth problem: It can't be solved at the moment, but we suggest that you try the slam method on your own.