Repository Summary

Description The swerve controller code for the zinger robot
Checkout URI https://github.com/pvandervelde/zinger_swerve_controller.git
VCS Type git
VCS Version master
Last Updated 2024-09-21
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
zinger_swerve_controller 0.1.0

README

zinger_swerve_controller

Provides the swerve controller code for the zinger robot.

Dependencies

The configurations in this repository assume you have the following prerequisites installed on the device on which you want to run this code. That device might be an Ubuntu machine or a physical robot using Raspberry Pi OS.

  1. ROS humble with the robot_state_publisher, the joint_state_broadcaster and the ros_control packages.
  2. A working ROS workspace.

Also the following packages should be present:

  1. zinger_description - Contains the geometric description of the Zinger robot for ROS to work with.

Contents

This repository contains different folders for the different parts of the robot description.

Kinematics

Models

The model describes the inverse and forward kinematics. There are many different algorithms available in the literature. At the moment the following algorithms are implemented:

In the future the aim is to also implement a 3D force based model devised by Neal Seegmiller and described in the following papers:

Simple kinematics model

The simple kinematic model is derived from the 2D geometric relations between the robot rotational centre and the position, angle and velocity of the drive modules. This model makes the following assumptions

  • The drive modules are connected to the robot body in a fixed location and at a fixed angle.
  • There is no suspension in the drive modules.
  • The robot is moving on a flat, horizontal surface.
  • The wheel steering axis for a drive module goes through the centre of the wheel in a vertical direction, so the wheel contact point is always inline with the steering axis.

The following image shows these relationships between the robot body degrees of freedom and the drive module degrees of freedom.

Kinematics diagram for the multi-wheel steering controller
Kinematics diagram for the multi-wheel steering controller

In this image the variables are as follows:

  • V - The linear velocity vector for the robot body, consisting of V_x, the velocity in the x direction, and V_y, the velocity in the y direction.
  • W - The rotational velocity for the robot body. Due to the 2D nature of the model this variable is a scalar not a vector. The rotational velocity is taken as positive going counter clock-wise.
  • r_i - The position vector of the i-th drive module relative to the robot rotational centre.
  • alpha_i - The angle in radians of the i-th drive module as measured in the coordinate system for that drive module. The angle is measured as positive going counter-clock wise from the x-axis of the drive module coordinate system. Note

File truncated at 100 lines see the full file