# Mobile Manipulator: Is it possible to use the output state of an MPC position controller instead of the optimized control inputs (acceleration)?

Good day, I hope you are all well :) It's been 7 years since I've last been here haha.

I am currently trying to implement this paper: https://www.mdpi.com/2077-0472/12/3/381

Their mobile manipulator uses MPC to control the end effector of the arm to efficiently spray plants in the vineyard with respect to a reference trajectory. The arm operates in the x-z plane. The distance of the robot's base and end-effector is assumed to be in a constant distance away from the vines in the y-axis.

The spray frame πΏπ is defined at a fixed distance from the spray nozzle, and its position is computed using a single static transformation from the last link of the robot manipulator. The goal is to control the global position of the πΏπ frame, which depends on the position of the πΏπ΅ frame with respect to πΏπΊ, and the pose of the robot arm.

ππ,π₯=ππ΅,π₯+ππ΄,π₯ where ππ΄,π₯ is the x coordinate of the position of the πΏπ frame with respect to πΏπ΅, controlled by the robot arm, and ππ΅,π₯ is the x coordinate of the position of πΏπ΅ with respect to πΏπΊ, controlled by the mobile base.

This is their discrete state space model

The output is basically the target x and z coordinates of the end effector.

What confuses me is where the velocity outputs from the MPC controller came from as shown in their diagram. I'm assuming their mobile robot base might be ros based an may need to accept velocity commands as inputs and so does their arm but where did they get the velocity values in their system diagram?

I also plan on doing something similar:

[There's an error in the picture, Forward Kinematics should be Inverse Kinematics]

But what's different with mine is that I have already have a controller for the robot arm that accepts x and z target positions and my partner also already made a controller that takes x positions for the base.

My question is if it is possible for me to directly use the output of the MPC (y matrix) for this or do I have to use the optimize control inputs (u matrix or accelerations). If I have to use the control inputs, can I just integrate them or can I use this equation to get the position inputs needed for my other controllers?

x(k) = 1/2 x_dot_dot(k-1)^2*T + x_dot(k-1)*T+ x(k-1)

My colleague, also said that it was possible the velocities were taken from the optimized state matrix x(k)?

Thank you.

## 1 Answer

My guess is that the paper you try to implement relies on a velocity-based MPC, which is perfectly fine if the dynamics are not too important (small velocities, good low-level controllers).

If your hardware only accepts velocity control you have two choices:

• use velocity at the MPC control inputs, as in the paper
• or use dynamic MPC and integrate the control u to produce a velocity. This is what we have done in this paper:

Since our hardware does not yet allow to directly control the robot in acceleration, in order to test M2 we numerically integrated the acceleration signal produced by the VPC and sent the resulting signal to the low-level velocity controller running on our robot.

The same can be done for pure position control, you need to integrate u twice as you have mentioned. You may also simply track the MPC state output x if you have a good position controller, but then this is more moving horizon planning and less MPC.

• Thank you sir :) Mar 12 at 10:20