PolarRobotics / PolarRobotics/PR-ESPIDFCodebase

Characterize Motor RPM

Open
#17 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
9
Forks
1
Avg merge
14m
Merged PRs (30d)
3

Description

Background

The Sabretooth motor controller doesn't have a linear motor percent (pwm value being sent)/RPM relationship, the curve is more exponential. There are a few methods of solving this issue:

  1. Completely ignore it and assume 100% power in either direction is the maximum rpm of the motor accounting for the gear ratio.
  2. Another method (which has been performed) is to test by sending a series of motor power commands to the sabretooth and record the rpm (after the motor has reached speed) and plotting this to create a curve and use the curve fit function in excel, using the equation of the curve to be able to convert from a motor percent to an expected RPM value and vice versa

Goal:

there really isn't a goal here, because either method is going to produce similar results, but having a better estimate of what the motors are doing in code will help the turning algorithms and potential closed loop control, which has been deemed as "not worth it"


Subtasks:
  • Create a new function to handle the conversion from rpm to motor power in motorControl. Needs to handle different motor characteristic curves based on motor type
  • Get encoders on Runningback
  • do power sweeping text on falcon 500 motors
  • graph and generate curve fit for falcon 500
  • add curve fit for falcon 500 to percent2prm and rpm2percent
  • add encoders to a bot with small motors
  • do power sweeping test on small motors
  • graph and generate curve fit for small motors
  • add curve fit for small motors to percent2prm and rpm2percent
  • input of rpm, output of power percentage

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating motorControl and the existing percent2prm and rpm2percent functions. Review the encoder and motor hardware setup for Runningback, Falcon 500 motors, and the small motors, then determine which power sweeps and measurements are available. Done means measured curves are fit and the conversions support the relevant motor types, including RPM-to-power input.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
embedded-iot, robotics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.