Hi, I have read the threads on Homing and the use of calibration bars. I am just testing the jumping gait on the test rig and want to initialise to a certain pose. is the homing module a good idea to use to initialise to the desired position?
Yes, this is exactly what the homing is meant for.
I would use the methods of the BlmcJointModules class, though (note the plural “s” at the end) which runs the homing for all joints in one function call.
There are two methods you can use, depending on your needs:
BlmcJointModules::execute_homing: Moves the joints to search for the next encoder index tick and use that position as home position.
If the position doesn’t need to be super exact for your application, you could, for example, implement a procedure where you manually move the joints to the intended zero position (e.g. pointing straight down) before you run you code and then call execute_homing_at_current_position() in the beginning of your code.
For more accurate results you can do the same but use execute_homing(). This will search for next encoder ticks from the start position so it is more accurate. However, you will need to calibrate the home offset (in this case the distance between the desired zero position and the position of the encoder index.
If all your joints have end stops, you can implement a more automated procedure where you don’t need to manually bring the joints to a certain position before starting. In this case, you would first move the joints until they hit the endstop and then home there. In this case, you will again need to calibrate the home offset.
For reference: The driver in the robot_fingers package contains an implementation that supports a number of different homing methods (with or without end stops, using encoder index or not). Or, depending on your application, you could directly use the robot_fingers setup (it also contains implementations of one-joint, two-joint and single finger (aka three-joint) robots).