Jmeyer1292 / robot_cal_tools

A suite of tools focused on calibration of sensors for robotic workcell development
Apache License 2.0
140 stars 40 forks source link

Initial DH Chain Kinematic Calibration functionality #60

Closed marip8 closed 4 years ago

marip8 commented 4 years ago

Description

This PR implements a number of changes to support a minimum working example of calibration of a kinematic chain based on DH parameters with camera and target

  1. Updates the DH chain class to work well with Ceres auto diff cost functions
    • Template specific methods (getFK and getRelativeTransform) to work easily with auto diff
    • Use Eigen vectors to hold data that needs to be cast between doubles and jets
    • Add the ability to specify DH parameter offsets that will be calibrated by Ceres
    • Added function for getting the DH parameters from a chain in an N x 4 matrix
    • Removed GaussianNoiseDHTransform since virtual class functions cannot be templates
  2. Defined a kinematic calibration observation structure
  3. Created functions for generating kinematic calibration observations
    • Added a function for creating a DH chain with randomly perturbed parameters based on an input chain to replace the GaussianNoiseDHTransform class
  4. Created initial kinematic calibration algorithm
  5. Created unit tests for kinematic calibration algorithm
    • Single kinematic chain with camera transform, target transform, and camera chain to target chain transform

Currently the kinematic calibration converges for the perfect cases represented in the unit test, as well as some perturbed cases that I tried. More development is necessary to finish this algorithm, but that should come in a later PR.

This PR replaces #53

TODO

marip8 commented 4 years ago

@schornakj is this good to go now?

schornakj commented 4 years ago

@marip8 Looks good to me!