Please see the description below and check if you have done, or been doing the Ex.3 correctly or not.
We want the robot base(body)'s center of mass follows the velocity command. Here the velocity command is a vector [vf, vs, w] where vf is forward speed of base (in m/s), vs is sideways speed of base (in m/s), and finally w (in rad/s) is turning rate of the base.
Note that vf, vs are horizontal velocity of the robot in its local frame. If the robot's heading toward certain direction, the forward speed is the speed of the base toward that direction
A trajectory according 0.7 m/s forward speed when the robot's heading angle is non-zero.
Of course, our dogbot can move sideways too (the system is holonomic!). In fact, it can move toward any horizontal direction unlike a car where of the motion is constrained to its heading.
Finally, the turning rate is yaw rate of the robot. It is a entity defined in global frame. Thus, for the velocity command [0, 0, w], the center of the mass of the base should stay in the same position while the heading angle of the base changes over time.
The motion according to 0.4 rad/s turning rate
Here are reference trajectory for [vf=0.2, vs=0, w=-0.3] and [vf=0, vs=0.2, w=-0.3] for your info.
Here're some hints for trajectory planning.
Let's compute the global position and heading angle of the robot at timestep i+1 given the position and heading angle at i. This will be i+1th knot of a reference trajectory. i = 0 is the current timestep.
Let's start from the heading angle.
The heading angle of the robot at timestep i+1 can be expressed as the following:
θi+1 = θi + wh
where h is a size of timestep. So from i=0, you can start numerical integration for computing θ for every timestep over the trajectory's time-horizon.
For global position of the base, don't forget to consider the heading of the robot. You have to convert vf, vs into global frame entities. Then, you can integrate it for global position as we did for the heading angle.
I hope this helps.
Hi all,
Please see the description below and check if you have done, or been doing the Ex.3 correctly or not.
We want the robot base(body)'s center of mass follows the velocity command. Here the velocity command is a vector [vf, vs, w] where vf is forward speed of base (in m/s), vs is sideways speed of base (in m/s), and finally w (in rad/s) is turning rate of the base.
Note that vf, vs are horizontal velocity of the robot in its local frame. If the robot's heading toward certain direction, the forward speed is the speed of the base toward that direction
A trajectory according 0.7 m/s forward speed when the robot's heading angle is non-zero.
Of course, our dogbot can move sideways too (the system is holonomic!). In fact, it can move toward any horizontal direction unlike a car where of the motion is constrained to its heading.
Finally, the turning rate is yaw rate of the robot. It is a entity defined in global frame. Thus, for the velocity command [0, 0, w], the center of the mass of the base should stay in the same position while the heading angle of the base changes over time.
The motion according to 0.4 rad/s turning rate
Here are reference trajectory for [vf=0.2, vs=0, w=-0.3] and [vf=0, vs=0.2, w=-0.3] for your info.
Here're some hints for trajectory planning.
Let's compute the global position and heading angle of the robot at timestep i+1 given the position and heading angle at i. This will be i+1th knot of a reference trajectory. i = 0 is the current timestep.
Let's start from the heading angle. The heading angle of the robot at timestep i+1 can be expressed as the following:
θi+1 = θi + wh
where h is a size of timestep. So from i=0, you can start numerical integration for computing θ for every timestep over the trajectory's time-horizon.
For global position of the base, don't forget to consider the heading of the robot. You have to convert vf, vs into global frame entities. Then, you can integrate it for global position as we did for the heading angle. I hope this helps.