Turtlebot 3: PID on wheels

asked 2020-07-21 11:35:04 -0500

goupil35000 gravatar image

updated 2020-07-21 13:52:20 -0500

Hello,

I have a waffle and was able to control it with Twist message in /cmd_vel topic. I only used this command to launch ROS and basic nodes: roslaunch turtlebot3_bringup turtlebot3_robot.launch

But when asking to to straight with only linear speed on x axis and no rotation (value 0 on rotation around z), my robot doesn't go straight.

I'm familiar with the concept of PID, I build different robots using DC motor and was able to implement the feedback control on the wheels.

On turtlebot 3 (waffle), when launching a Twist command with zero rotation, my waffle doesn't go straight. It seems that no feedback control is implemented and I don't find where is the best solution to implement it. The PID may be on 3 places: - in firmware on OpenCR1.0; - in software on the Raspberry Pi; - inside wheels because we can implement control on torque or speed or distance.

If not, is there any other package which allows to use control directly in the wheels ?

Maybe I didn't understand well how it works.

Hope someone has a solution. Thanks.

edit retag flag offensive close merge delete

Comments

In this case you should focus on the feedback the system provides. If the system uses encoder feedback but doesn't go straight it more likely to be ODOM slip than PID issue. The control loop is probably doing it's job but some non-symmetry in the robot or environment causes robot to turn. One wheel bigger than other? Wheels are not aligned and not pointing straight ahead? Lot's of weight on one wheel and not on the other.

If after a long move both wheels report the same number of encoder counts, and if those counts matched closely during the move, then you don't need to look at PID.

billy gravatar image billy  ( 2020-07-22 20:34:23 -0500 )edit