I have a data set name Robot_odometery which consist of 3 field namely, Time(s),Forward velocity(m/s) and angular velocity(rad/s). I taken this dataset from http://asrl.utias.utoronto.ca/datasets/mrclam/index.html website. I want to calculate x,y,theta coordinate using this odometer dataset. As per the conversion from rectangular co-ordinate to polar ones I came to know two formula to calculate x and y. x=rcos(theta)
and y=rsin(theta)
. I want to know that is that right approach to find out the Robot coordinate (x,y). or there is any thing else that can be used to find Robot coordinate from odometer data.
1 Answer
Hence the orientation and position are the integrals of the angular ($\dot{\theta}$) and forward velocity ($v$) (in robot frame) respectively. So you have everything you need to calculate your pose.
Now, the problem is that you misinterpret the tree states you have. $x$,$y$ represent the x and y position on a euclidean plane. $\theta$ is the heading of the robot and not the polar angle corresponding to polar coordinates. I.e. it is the angle the robot is turned around the z-axis at the position (x,y).
Therefore, if you integrate the angular velocity over time you get the orientation - i.e. theta - and with the heading you can integrate the forward velocity to determine the coordinates x and y.
Something like that: $$ \theta_k = \dot{\theta}_{k-1} \cdot \Delta t + \theta_{k-1} \\ x_k = v_k \cdot \Delta t \cdot cos(\theta_k) + x_{k-1} \\ y_k = v_k \cdot \Delta t \cdot sin(\theta_k) + y_{k-1} $$
-
$\begingroup$ Thank you. Do you follow the dataset that given by asrl.utias.utoronto.ca/datasets/mrclam/index.html ?? Actually I am working on this data set. This is very kind of you if you take a look on this data set.What is Δt? What is xk−1(is that initial position of a Robot)? $\endgroup$ Jun 7, 2018 at 18:25
-
$\begingroup$ $k$ is an integer number identifying one particular time step. Therefore, $x_{k-1}$ means the $x$ position one time step before.If $k=0$, $x_k$ is the initial position and $x_{k-1}$ is assumed to be 0. However, $\Delta t$ means the time difference between two consecutive, discrete time steps. E.g. $\Delta t = t_{k} - t_{k-1} $. $\endgroup$ Jun 9, 2018 at 8:27
-
$\begingroup$ Thank you. I figure it out. After computing this value this value is not same as the Robot Groundtruth value which take using Gps. Is the calculating values from odometer data and groundtruth value will be same for a particular Robot? $\endgroup$ Jun 9, 2018 at 10:36
-
$\begingroup$ robotics.stackexchange.com/questions/15822/… please have look on this question. $\endgroup$ Jun 9, 2018 at 10:48
-
$\begingroup$ Ideally speaking, YES. But it depens how good your estimation is. In order to get an estimate you can measure the root mean square error between your estimation and the ground truth. This gives you an idea about how wrong you are. $\endgroup$ Jun 10, 2018 at 11:04