skywoodsz / qm_control

Quadruped manipulator controller using model predictive control and whole body control based on OCS2
228 stars 36 forks source link

Problems met in demo #1

Closed P1terQ closed 1 year ago

P1terQ commented 1 year ago

Thanks for the opensource. I meet some problems when running the controller.

  1. In MPC-WBC, after i start the qm_controller, the arm first lift up and then begins to jitter. Then the robot trunk roll over and safety check failed.
  2. In MPC, after i set the target for the end effector, robot moves in struggle that has a huge difference with demo and the end effector can't precisely reach the target. Soon RVIZ died after [WARN]:Interactive marker 'Goal' contains unnormalized quaternions. Have you met these problems before? Or maybe i'm missing something in the building process.
P1terQ commented 1 year ago

When building qm_wbc, qpoases gives an error: /usr/bin/ld: /usr/local/lib/libqpOASES.a(QProblem.cpp.o): relocation R_X86_64_PC32 against symbol `_ZNK7qpOASES8QProblem5getNZEv' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: bad value. I don't know how to solve it, so i add a qpoases_catkin folder like https://github.com/qiayuanliao/legged_control. Does it make a difference?

skywoodsz commented 1 year ago

When building qm_wbc, qpoases gives an error: /usr/bin/ld: /usr/local/lib/libqpOASES.a(QProblem.cpp.o): relocation R_X86_64_PC32 against symbol `_ZNK7qpOASES8QProblem5getNZEv' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: bad value. I don't know how to solve it, so i add a qpoases_catkin folder like https://github.com/qiayuanliao/legged_control. Does it make a difference?

Thanks for your watching! The building problem can be solved by reinstalling qpoases. You need to modify CMakeLists of qpoases to generate shared library (.so) instead of static library (.a) to install qpoases. Details are as follows: You can switch the option BUILD_SHARED_LIBS from OFF to ON. You can specify the installation path of qpoases by modifying CMakeLists of qm_wbc. Also you can use qpoases_catkin, there is no difference.

skywoodsz commented 1 year ago

Thanks for the opensource. I meet some problems when running the controller.

  1. In MPC-WBC, after i start the qm_controller, the arm first lift up and then begins to jitter. Then the robot trunk roll over and safety check failed.
  2. In MPC, after i set the target for the end effector, robot moves in struggle that has a huge difference with demo and the end effector can't precisely reach the target. Soon RVIZ died after [WARN]:Interactive marker 'Goal' contains unnormalized quaternions. Have you met these problems before? Or maybe i'm missing something in the building process.

The first problem is because wbc also has some numerical problems. Specifically, it is the failure of the qp solver caused by the unsmooth joint6 velocity of the manipulator in the mpc-wbc transition. At present, it can only be guaranteed that this problem will not occur in most cases. We will fix it as soon as possible.

skywoodsz commented 1 year ago

Thanks for the opensource. I meet some problems when running the controller.

  1. In MPC-WBC, after i start the qm_controller, the arm first lift up and then begins to jitter. Then the robot trunk roll over and safety check failed.
  2. In MPC, after i set the target for the end effector, robot moves in struggle that has a huge difference with demo and the end effector can't precisely reach the target. Soon RVIZ died after [WARN]:Interactive marker 'Goal' contains unnormalized quaternions. Have you met these problems before? Or maybe i'm missing something in the building process.

Regarding the second question, the goal in RVIZ provides the expected pose of the end effector. You can rotate the goal 90 degrees around the y-axis so that the end effector can approach the goal smoothly. If you want to achieve a more complex coordinated movement or desired pose, you can adjust the mpc parameters to achieve it.

Regarding the problem of RVIZ, can you provide a more detailed explanation?

P1terQ commented 1 year ago

Thanks, your answer solved my problems(and sorry for the late response). The robot motion gets a lot smoother after i rotate the goal around y-axis and the problem that rviz died hasn't show up after roatation. However, it stills occurs in some cases, i am not able to conclude the essential trigger of its occurrence. Here is the info it gives out:

[ WARN] [1680398105.952915350, 27.532000000]: Interactive marker 'Goal' contains unnormalized quaternions. This warning will only be output once but may be true for others; enable DEBUG messages for ros.rviz.quaternions to see more details.
[rviz-1] process has died [pid 36611, exit code -11, cmd /opt/ros/noetic/lib/rviz/rviz -d /home/icr/peterq/ros/controller_3_ws/src/qm_control/qm_controllers/config/qm.rviz __name:=rviz __log:=/home/icr/.ros/log/b3b02388-d0f3-11ed-9234-edcacc249752/rviz-1.log].
log file: /home/icr/.ros/log/b3b02388-d0f3-11ed-9234-edcacc249752/rviz-1*.log