Turtlebot 3: PID on wheels
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.
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.