I am trying to build an simulation environment for the Seekur Jr. robot, and am currently trying to set up the navigation stack for it. This model, along with e.g. Pioneer 3-AT, uses skid steering (in-place rotation) which slips the wheels. I was wondering if any work has been done to implement a controller for this, or if anyone have any insight as to how such a controller should be set up wrt. odometry.
My current attempt has been to modify the erratic_gazebo_plugins/libdiffdrive_plugin to use 4 wheels, i.e. assigning 4 joints to the controller and activate the motor for two wheels at the same time (The actual robot wheels are connected by rubber chain). This obviously makes the odometry readings so wrong that they go out of bonds for the amcl approximations. I tried modelling it as a "2 wheel" differential drive with a wheel in the exact center of the 4 wheels, but am unsure if this is the right approach.
The strange thing is, that when I simulate the robot and activate Odometry readings in rviz, they seem very right, even if they should not be. It's basically the exact same code as for the 2wheel differential. Driving it around with manual cmd_vel messages seems okay, and Odometry readings are well, but trying to give move_base a goal sends the robot in a circle that does not even come close to the goal (which leads me to believe that odometry/localization is off).
My question boils down to this: Are there any skid controllers implemented for Gazebo as plugins or as stand-alone nodes, inwhich odometry calculations are stable? Is there anyone out there that have experience in the making of such a controller?
Post score: 3