Closed Hotsburp closed 3 months ago
@Hotsburp Thanks for your follow!
Firstly, you need to replace the robot urdf in qm_description
, and joint names in qm_interface. task.info
in qm_controllers also needs to be modified to adapt your robot, including eeFrame
and initialState
. In this way, you can build mpc with your robot.
Secondly, you need to modify joint names in publishJointTransforms and empty_world.launch in qm_gazebo
to visualize.
Finally, joint names in setHybridJointHardware need to be altered.
The weights in MPC and WBC may need to be tuned to adapt your robot.
Hi @skywoodsz, thanks for the quick reply! I will try it out first and also close this issue. Thanks again!
Hi @skywoodsz, the integration works pretty well but is abit slow and delayed which i think could be due to my mpc tuning.
Could i clarify with you on the following questions:
1) You mentioned that after editing the task.info, i can "build mpc", how do i achieve this?
2) Where should i adjust/tune the weights of the MPC and WBC?
3) Is it possible to give a target position to the end-effector via command line instead of using the rviz? How do i achieve this?
4) Currently i am using Z1 without the gripper first as it causes many complications. However, from the images below, the end-effector never seems to reach the targeted position (seems to be always below the targeted point). Do you suspect any potential causes?
5) I am also testing out with just the mpc only configuration but my model "disintegrates" when turning on qm_controller_arm and i get the error:
ERROR: Maximum number of working set recalculations performed ERROR: Premature homotopy termination because QP is infeasible ->ERROR: Initial QP could not be solved due to infeasibility!
Do you think this would be caused by the weights / pid values of the mpc or the urdf model?
6) What would be the procedure to add additional joints, for example joint 7 and joint 8 and more? Is it the same procedure that you mentioned above or more changes need to be done?
Thank you very much once again!
@Hotsburp
task.info
includes the MPC weight. In the file, you can adjust the standard state weight matrix Q and the control weight matrix R. For WBC weight, you can start the dynamic_reconfigure via rosrun rqt_reconfigure rqt_reconfigure.
For the target of the end-effector, you can send the command via the topic \ee_cmd_vel
, or you can send it through the joy as I mentioned in the readme.
For the end-effector position error, you can tune the MPC and WBC weight to reduce it.
For the QP problem, it seems that your initial state and target are not suitable, you can adjust them in task.info
and reference.info
.
For the additional joints, adaptation is more complicated. This is because I didn't consider this application when I built this program. So if you want to change the manipulator's DoF, you may need to rebuild this program.
Sure, thank you very much once again! I will try it out~
@Hotsburp Hi! I am also trying to modify the arm to unitree z1 but met some technical issues. Could you please share what changes did you make to change the manipulator? Thank you very much for your help!
@nanyangnuan Hi! I just uploaded a repository with the project implementing the AlienGo with the Z1 manipulator, maybe its useful to you!
@danisotelo Thanks for the repo!
Hi @skywoodsz, impressive work and congrats on the IROS accpetance!
I was wondering which parts i should modify in order to change the current / Kinova arm that you are originally using to a Z1 arm (I will still be using Aliengo) and enabling the controller to work? (Similar to what was done by @danisotelo and asked by @OceansDepp in https://github.com/skywoodsz/qm_control/issues/12)
This is because the urdf and xacro of Z1 from the official Unitree documentation defers quite abit from your format.
Thank you very much in advance!