Coder Social home page Coder Social logo

Comments (5)

YuXianYuan avatar YuXianYuan commented on June 28, 2024

Hello, I also met the first question, waiting for an answer here.
On the second question, you should combine Quadruped.cpp File to study, especially the buildmodel function
I think there is something wrong with the annotation of "join axis" of addbody function.I think this axis is not in the parent coordinate system.
I've built my own robot model based on "minicheetah.h" although I'm still confused in the original version

from cheetah-software.

Abedcoder avatar Abedcoder commented on June 28, 2024

Hello, I also met the first question, waiting for an answer here.
On the second question, you should combine Quadruped.cpp File to study, especially the buildmodel function
I think there is something wrong with the annotation of "join axis" of addbody function.I think this axis is not in the parent coordinate system.
I've built my own robot model based on "minicheetah.h" although I'm still confused in the original version

Thank you,but I have read Quadruped.cpp many times,the coordinate issue still puzzeled me.

In xTreeAbad/Hip/Knee, the way they built coordinates is different from model.addGroundContactPoint ,you can refer MiniCheetah.h,which means the two methods they set the orgins of knee joints are differnt ,actually apart from knee joint,the hip joint has the same issue.

In my opinion,the orgin of knee coordinate must coincidence with knee joint, the axis of BIG PULLEY--to be more precise.Because in forwardKinematics function ,the foot postions in word/absoulate coordinate are calcuated by the GroundContactPoint.

I was wondering how you built your own robot ,could you post a picture to illustrate your process?Thank you.

from cheetah-software.

YuXianYuan avatar YuXianYuan commented on June 28, 2024

I don't know much about forward kinematics and adding the contact point function.
Moreover, I am not sure what the _kneeLinkY_offset of Cheetah Mini is for, which causes the contact point between the foot and the ground is not on the symmetry axis of the thigh.
However, cheetah3's _kneeLinkY_offset is 0, so I think there may be some engineering issues with the Cheetah Mini, so don't worry about the 4mm.

The coordinate system in the program is different from that in the paper "Highly Dynamic Quadruped via Whole-body Impulse Control and Model Predictive Control".All the hip and knee joints are in the opposite direction.

My robot parameters are as follows:
abadLength:0.088
hipLength:0.27
kneeLength:0.27

by the way, are you Chinese?
image

from cheetah-software.

Abedcoder avatar Abedcoder commented on June 28, 2024

I don't know much about forward kinematics and adding the contact point function.
Moreover, I am not sure what the _kneeLinkY_offset of Cheetah Mini is for, which causes the contact point between the foot and the ground is not on the symmetry axis of the thigh.
However, cheetah3's _kneeLinkY_offset is 0, so I think there may be some engineering issues with the Cheetah Mini, so don't worry about the 4mm.

The coordinate system in the program is different from that in the paper "Highly Dynamic Quadruped via Whole-body Impulse Control and Model Predictive Control".All the hip and knee joints are in the opposite direction.

My robot parameters are as follows:
abadLength:0.088
hipLength:0.27
kneeLength:0.27

by the way, are you Chinese?
image

I don't know much about forward kinematics and adding the contact point function.
Moreover, I am not sure what the _kneeLinkY_offset of Cheetah Mini is for, which causes the contact point between the foot and the ground is not on the symmetry axis of the thigh.
However, cheetah3's _kneeLinkY_offset is 0, so I think there may be some engineering issues with the Cheetah Mini, so don't worry about the 4mm.

The coordinate system in the program is different from that in the paper "Highly Dynamic Quadruped via Whole-body Impulse Control and Model Predictive Control".All the hip and knee joints are in the opposite direction.

My robot parameters are as follows:
abadLength:0.088
hipLength:0.27
kneeLength:0.27

by the way, are you Chinese?
image

是的哈哈,我也早注意到你是北航的了,可以加qq联系吗,2993213321

from cheetah-software.

allenwang-git avatar allenwang-git commented on June 28, 2024

Hello, I also met the first question, waiting for an answer here.
On the second question, you should combine Quadruped.cpp File to study, especially the buildmodel function
I think there is something wrong with the annotation of "join axis" of addbody function.I think this axis is not in the parent coordinate system.
I've built my own robot model based on "minicheetah.h" although I'm still confused in the original version

Thank you,but I have read Quadruped.cpp many times,the coordinate issue still puzzeled me.

In xTreeAbad/Hip/Knee, the way they built coordinates is different from model.addGroundContactPoint ,you can refer MiniCheetah.h,which means the two methods they set the orgins of knee joints are differnt ,actually apart from knee joint,the hip joint has the same issue.

In my opinion,the orgin of knee coordinate must coincidence with knee joint, the axis of BIG PULLEY--to be more precise.Because in forwardKinematics function ,the foot postions in word/absoulate coordinate are calcuated by the GroundContactPoint.

I was wondering how you built your own robot ,could you post a picture to illustrate your process?Thank you.

Hi there, I met the same problem about the hip and knee coordinate, and I tried to change it to the coordinate they defined in their papers. However, I found that will make cheetah terrible performance in locomotion mode. I mainly change Quadeuped.cpp, Drawlist.cpp and some joint angular settings. Have you ever tried to modify it before? Hope your advice!

  // upper
  upper.setToIdentity();
  upper.rotate(-90, 0, 1, 0);
  lower.rotate(180, 0, 0, 1);
  // lower
  lower.setToIdentity();
  lower.rotate(180, 0, 1, 0);
  lower.rotate(180, 0, 0,1);
// Hip Joint
          bodyID++;
          Mat6<T> xtreeHip = createSXform(I3,withLegSigns<T>(_hipLocation, legID));
          Mat6<T> xtreeHipRotor = createSXform(I3,withLegSigns<T>(_hipRotorLocation, legID));
          if (sideSign < 0) {
              model.addBody(_hipInertia.flipAlongAxis(CoordinateAxis::Y),
                            _hipRotorInertia.flipAlongAxis(CoordinateAxis::Y),
                            _hipGearRatio, bodyID - 1, JointType::Revolute,
                            CoordinateAxis::Y, xtreeHip, xtreeHipRotor);
          } else {
              model.addBody(_hipInertia, _hipRotorInertia, _hipGearRatio, bodyID - 1,
                            JointType::Revolute, CoordinateAxis::Y, xtreeHip,
                            xtreeHipRotor);
          }

          model.addGroundContactPoint(bodyID, Vec3<T>(0., 0., -_hipLinkLength));

          // Knee Joint
          bodyID++;
          Mat6<T> xtreeKnee = createSXform(I3, _kneeLocation);
          Mat6<T> xtreeKneeRotor = createSXform(I3, _kneeRotorLocation);
          if (sideSign < 0) {
              model.addBody(_kneeInertia.flipAlongAxis(CoordinateAxis::Y),
                            _kneeRotorInertia.flipAlongAxis(CoordinateAxis::Y),
                            _kneeGearRatio, bodyID - 1, JointType::Revolute,
                            CoordinateAxis::Y, xtreeKnee, xtreeKneeRotor);
              // add foot ground contact point
              model.addGroundContactPoint(bodyID, Vec3<T>(0.,0., -_kneeLinkLength), true);
          } else {
              model.addBody(_kneeInertia, _kneeRotorInertia, _kneeGearRatio, bodyID - 1,
                            JointType::Revolute, CoordinateAxis::Y, xtreeKnee,
                            xtreeKneeRotor);
              // add foot ground contact point
              model.addGroundContactPoint(bodyID, Vec3<T>(0., 0., -_kneeLinkLength ), true);
          }

from cheetah-software.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.