-
|
I'm using Pinocchio (with ROS2) for kinematics on my quadrupedal robot, and I think I must be misunderstanding something. Specifically, when I get the velocity of the feet (regardless of frame alignment) using With different body velocities, the discrepancy will be different (both in magnitude and direction), though I have not been able to see much of a pattern. This poses a problem, because to estimate the speed the robot is walking at, I need to use the foot speeds relative to the body and the body's angular velocity with a no-slip condition. The kinematic tree of the robot looks like this for each of the four legs: Body --[Hip Revolute Joint]--> Thigh --[IKnee Revolute Joint]--> Shin --[Fixed Joint]--> Foot and the whole robot is configured as a floating-base system. The floating base orientation and angular velocity, along with all leg joint positions and velocities, are loaded into the model before calling If I understand everything correctly, this means that calling Here is the code I'm using if you'd like to reference, there's a lot going on so I'm not sure how useful it may be. The functions are called in this order: read_state_interfaces() --> update_model() --> estimate_orientation() --> pin_kinematics() --> detect_contact() --> estimate_base_position() --> foot_positions() --> update_odometry() |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
|
Beta Was this translation helpful? Give feedback.
getFrameVelocitywith LOCAL_WORLD_ALIGNED will give the velocity of the feet wrt the WORLD frame.If you want to get the relative velocity, you need to do some algebraic operations.