-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
921 kinematics pose estimation #1089
Commits on Feb 14, 2023
-
Add tachometer, odometer and kinematics part
- tachometer takes an encoder and returns revolutions - odometer coverts revolutions to distance and velocity - kinematics converts odometry to pose estimates - BicyclePose part implements the pose estimation pipeline for a car-like vehicle (fixed back wheels, turnable front wheels) - UnicyclePose part implements the pose estimation pipeline for differential drive vehicles.
Configuration menu - View commit details
-
Copy full SHA for 1ce5b00 - Browse repository at this point
Copy the full SHA 1ce5b00View commit details -
refactor pose estimation into a single part
- UnicyclePose handles encoder/tachometer/odometer/kinematics for differential drive. - BicyclePose handles encoder/tachometer/odomter/kinematics for car-like vehicle - add a mock encoder that is driven by throttle and steering input. This allows use to simulate the vehicle without a full-on simulator. - Fix the drawing of the path so that it handles the fact that Y increases going north.
Configuration menu - View commit details
-
Copy full SHA for deeb6fc - Browse repository at this point
Copy the full SHA deeb6fcView commit details -
Configuration menu - View commit details
-
Copy full SHA for d31b163 - Browse repository at this point
Copy the full SHA d31b163View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9710c16 - Browse repository at this point
Copy the full SHA 9710c16View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6d66d2c - Browse repository at this point
Copy the full SHA 6d66d2cView commit details -
Configuration menu - View commit details
-
Copy full SHA for ff95fdf - Browse repository at this point
Copy the full SHA ff95fdfView commit details -
Configuration menu - View commit details
-
Copy full SHA for e2a9a54 - Browse repository at this point
Copy the full SHA e2a9a54View commit details -
Add interrupt mode to the mono encoder
- Interrupts mode can handle much higher tick rates, but does a poor job of debouncing. It is appropriate for high resolution optical encoders.
Configuration menu - View commit details
-
Copy full SHA for 325e89b - Browse repository at this point
Copy the full SHA 325e89bView commit details -
Remove spurious unicode beta character
It was at the end of `#define ENCODER_OPTIMIZE_INTERRUPTS` and so could have been causing the #define to be unrecognized.
Configuration menu - View commit details
-
Copy full SHA for a5c6a44 - Browse repository at this point
Copy the full SHA a5c6a44View commit details -
Configuration menu - View commit details
-
Copy full SHA for ae4ab8f - Browse repository at this point
Copy the full SHA ae4ab8fView commit details -
Fix syntax error if only using one channel in int mode
- there was a syntax error if only one pin was defined and it was being used in interrupt mode; that is fixed. - Add more documentation to the mono_encoder.ino sketch
Configuration menu - View commit details
-
Copy full SHA for 8f2f859 - Browse repository at this point
Copy the full SHA 8f2f859View commit details -
Added a quadrature encoder sketch with no libraries
- The sketch counts ticks on a quadrature encoder without using 3rd party libraries. - This is done 1) to make is simpler to compile and download the sketch; the user does not need to figure out what library to use. 2) the library that was in use only worked on AVR hardware and causes compilation errors on other hardware. - if USE_ENCODER_INTERRUPTS is defined when the sketch is compiled, then the interrupt driven tick counting will be used. This has no debounce logic, so it is not suitable for mechanical encoder, but is appropriate for optical or hall effect encoders. - if USE_ENCODER_INTERRUPTS is NOT defined, then this used polling mode with debouncing, which is suitable for mechanical encoders, but may be to slow for high resolution optical or hall effect encoders.
Configuration menu - View commit details
-
Copy full SHA for e6eb5cf - Browse repository at this point
Copy the full SHA e6eb5cfView commit details -
Fix bug in mono encoder sketch
- it had literal 2 for size of encoders array, so when there was only one encoder we got memory overwrites.
Configuration menu - View commit details
-
Copy full SHA for 162ff35 - Browse repository at this point
Copy the full SHA 162ff35View commit details -
Fix bug in quadrature nolib sketch
- I used the wrong symbol for adding the #2 isr
Configuration menu - View commit details
-
Copy full SHA for 5d05b11 - Browse repository at this point
Copy the full SHA 5d05b11View commit details -
minor change to quadrature nolib
- use array rather than pointer in readEncoders() argument.
Configuration menu - View commit details
-
Copy full SHA for a4ede0a - Browse repository at this point
Copy the full SHA a4ede0aView commit details -
Updated quadrature_encoder.ino to not require library
- the library we used was only for AVR microcontrollers, so the code could not work on RPi Pico for instance. - I reimplemented the sketch to have explicit polling mode logic that is suitable for noisy mechanical encoders. - To that I added an interrupt driven mode that works if there is one interrupt capable pin available for each encoder. This is suitable for optical or hall effect encoders that do not need to be debounced.
Configuration menu - View commit details
-
Copy full SHA for 896cc26 - Browse repository at this point
Copy the full SHA 896cc26View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1cf569d - Browse repository at this point
Copy the full SHA 1cf569dView commit details -
Fix RPi_GPIO_Servo part so it does not need GPIO in constructor
- the constructor has a default for pin_scheme based on the GPIO object. The GPIO object will not be defined on a PC. - this change use None as a default and then checks for it and set the GPIO default if it is None. - This fixes a bug in the actuator unit test.
Configuration menu - View commit details
-
Copy full SHA for a90421d - Browse repository at this point
Copy the full SHA a90421dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 92af322 - Browse repository at this point
Copy the full SHA 92af322View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4e6c371 - Browse repository at this point
Copy the full SHA 4e6c371View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6d4f506 - Browse repository at this point
Copy the full SHA 6d4f506View commit details -
Vehicle loop prints out number of iterations and total time
- The vehicle loop now counts frames accurately; prior to this change the counter would be one more than the actual number of executed frames - When the vehicle loop terminates the number of executed iterations and the total time are printed and returned to the caller. - This was used for the kinematics tests because we needed to know how long the vehicle drive loop executed so we could calculate the expected distance that the mock vehicle drove.
Configuration menu - View commit details
-
Copy full SHA for 9f2ab20 - Browse repository at this point
Copy the full SHA 9f2ab20View commit details -
Rewrite of the kinematics unit tests
- We dramatically changed how a mock drivetrain handles odometry. Now is uses a velocity based on encoder ticks per second scaled by throttle. This is a more realistic mock, but it is harder to test. - The tests setup a vehicle with a mock encoder, then run the vehicle loop for a set number of iterations. The vehicle loop now returns how long the loop ran and this is used along with the configuration for ticks_per_second from the mock encoder to calculate how far the vehicle travelled. Then the kinematics model is applied to see if the resulting ending pose matches the expected pose.
Configuration menu - View commit details
-
Copy full SHA for e9cac78 - Browse repository at this point
Copy the full SHA e9cac78View commit details -
Adjust bicycle kinematics to use front wheel reference
- the code now uses the front wheels as the reference point for the calculations - this fixes the unit test, which were using the front wheels while the code used the back wheels.
Configuration menu - View commit details
-
Copy full SHA for 0cda9b0 - Browse repository at this point
Copy the full SHA 0cda9b0View commit details -
Configuration menu - View commit details
-
Copy full SHA for a1d4f78 - Browse repository at this point
Copy the full SHA a1d4f78View commit details -
Configuration menu - View commit details
-
Copy full SHA for 024fc0f - Browse repository at this point
Copy the full SHA 024fc0fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0ae8db9 - Browse repository at this point
Copy the full SHA 0ae8db9View commit details -
Configuration menu - View commit details
-
Copy full SHA for ee22a1b - Browse repository at this point
Copy the full SHA ee22a1bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 78711a7 - Browse repository at this point
Copy the full SHA 78711a7View commit details