Simscape Multibody Contact Forces Mecanum Wheels

Hi.
I' m trying to develop a simulation model of a 4-wheel omnidirectional vehicle.
I'm using the torque actuation in the revolute joints connecting the wheels with the chassis. A feedback loop with a PI controller in each joint keeps the angular velocity constant. The control works fine with the wheels in the air (no contact with the floor).
But when I let the wheels get in contact with the floor, the angular velocity neasured in the revolute joints shows a lot of 'noise':
The movent of the vehicle on the floor is correct. it moves forward-backward, left-right and CW-CCW as expected but the mesured angular velocity of the wheels is awfull. I'm sure that these disturbances are due to the spatial contact forces. I've tried changing the contact and friction parameters but I can not get rid of the noise.
Find attached the file solids and the simulation model if you want to try it.
Any help will be very appreciated.
Best regards

2 Comments

Good question. may I ask the problem solved?
Generally, the motor output shaft is with a reducer before the wheel
Dear Casanova,
My name is Le Dinh Thieu. I am student at da nang sciense and technology university at Vietnam. During this semester, i have a PBL about Mecanum robot but I have many difficulties in the process of building model simulations in simscape modeling even though I have read your article about this issue. Maybe my understanding of simscape is not enough, so from the dynamic equation you stated in the document, I hope you can send me more detailed documents about simscape modeling mecanum robot.
Thank you very much

Sign in to comment.

 Accepted Answer

Hi there
When look at the wheels, it looks like they are made of transversal cylinders on the perimeter. Rolling would be disrupted and discontinuous on the floor. But i can have a quick look if any correction can be made.
Br Juan

8 Comments

Hi Juan
Thnaks for you answer.
The vehicle uses mecanum wheels (http://www.nexusrobot.com/product/4wd-mecanum-wheel-mobile-arduino-robotics-car-10011.html) that allows movement in three degrees of freedom. Each wheel have 9 cylinders with a revolute joint. If the four wheels rotate in the same direction the vehicle moves forward-backward. If front wheels rotate in opposite direction than the back ones, the vehicle moves left-right. If front-right and back-left wheels rotate in opposite direction athan the other two, the vehicle rotates arround its COG. The movement of the vehicle seems to be ok, very realistic. The problem is the reading of the velocity sensors of the revolute joint between the wheels and the chassis.
I think there is some kind of problem in the spatial contact force between the cylinders and the floor. I using Convex Hull since the cylinders are File solids form a CAD design.
Can you give me some advice?. Thank you in advance.
Best regards
PD. As I'm not sure if I can write in spanish, I submit this in english. I'm wrinting from Valencia, Universidad Politécnica. You can answer in spanish if you like.
Hola Vicente
He mirado el modelo y he modificado algunas cosas. Primero, utilizo subsistemas de referencia para las cuatro unidades (rueda + rodillos). De esta manera, se evitan errores que pueden afectar el resultado final. En este caso, he observado un comportamiento asimetrico que invitaba a crear un modulo unico.
He ajustado el valor de Ki a 1.0, y cambiado el PI original con uno de la libreria de Simulink. Esto ofrece posibilidades (ejecucion discreta, anti-windup...). La referencia es ahora una rampa para acelerar y decelerar de forma mas gradual.
El resultado obtenido es el siguiente, bastante estable con el PI control individual. Adjunto el modelo (2021a) con este mensaje.
Suerte / Juan
Se me ha olvidado de mencionar que utilizo ahora un solver de paso variable (ode23t) en lugar del discreto (ode3) en el modelo inicial y que puede inducir inestabilidad numerica.
/Juan
Hola Juan
Muchas gracias por tu ayuda.
He abierto tus ficheros y el problema es que veo que has quitado las Revolute Joint de los rodillos. La rueda mecanum se caracteriza por estos rodillos que hacen que la fuerza de tracción esé girada 45º. Esto permite que se desplace de lado y que gire sobre su eje, a diferencia de un vehículo con ruedas normales. Además las ruedas no son iguales. Hay dos tipos de ruedas que se diferencian en la orientación de los rodillos. Las ruedas delantera-derecha y trasera-izquierda son diferentes de las otras dos. Pero si le quito el grado de libertad de los rodillos no creo que funcione como vehiculo omnidireccional.
Probaré con las sugerencias que me haces acerca del PI, la referencia y el solver. Lo que pasa es que simuylado a paso variable, la simulación se hace lentisima (con las Revolute Joints de los rodillos). La idea que llevamos es que funcione, más o menos a tiempo real para poder moverlo manualmente.
Lo que no acabo de entender es la ventaja de hacer un fichero independiente con la rueda. ¿Por qué es mejor así que ponerlo todo junto?
Un saludo y gracias, otra vez, por la ayuda.
Hola Vicente
Se trata de probar diferentes alternativas y ver si se puede optimizar el comportamiento del vehiculo y el tiempo de ejecucion. El subsistema referenciado tiene ventaja cuando hay multiples instancias en el modelo. Si hay unicamente 2 y el disenho ya esta establecido, entonces no merece la pena.
Suerte
Juan
Hola Vicente
Por simple curiosidad, he probado el modelo Nexus con solver discreto ode1 (Tc = 20ms; Ts = Tc/75) con la configuracion inicial de las ruedas que describes.
El comportamiento es razonablemente estable ( creo q la estrategia de control debe ser mas avanzada seguramente) y el tiempo de ejecucion esta en torno a run/sim ratio = 0.73 (con capacidad de tiempo real).
El modelo de referencia (ode23t) ejecuta con run/sim aprox. 9.5-10.
Saludos / Juan
Hola Juan
Otra vez, gracias por tu ayuda.
He simulado lo que me envias pero no acabo de verlo. En el Nexus05_Discreto.slx va bastante bien pero la lectura de velocidad sigue sin ser como la que se obtiene en el vehiculo real. La velocidad de giro del motor real no puede hacer esos cambios tan bruscos y aunque pudiera el encoder no podria medirlos. Asi que he pensado que lo mejor es filtrar la lectura de los sensores de velocidad y con esto me sale una señal muy parecida a la real. Es un poco hacer trampas pero de lo que se trata es de que el modelo de simulación refleje la realidad. Lo hemos comparado con los resultados reales, y encaja bastante bien. Tanto en la lectura de los encoders que miden la velocidad de las ruedas como en los desplazamientos XY y la orientación. Te adjunto todo el modelo en un .zip por si quieres probarlo.
El Nexus05_Golden_Ref.slx me va muy lento. Queremos hacer un simulador interativo que funcione a tiempo real y la simulación a paso variable no es muy buena para esto. Si le activo el pacing me tarda como un minuto en simular los 8 segundos. Supongo que depende mucho de la máquina.
Por cierto, no he entendido lo de "El modelo de referencia (ode23t) ejecuta con run/sim aprox. 9.5-10. "
En cualquier caso te agradezco mucho tu ayuda.
Para cualquier cosa que necesites mi correo aquí en la Universidad Politécnica de Valencia es vcasanov@isa.upv.es.
Un saludo
Dear Casanova,
My name is Le Dinh Thieu. I am student at da nang sciense and technology university at Vietnam. During this semester, i have a PBL about Mecanum robot but I have many difficulties in the process of building model simulations in simscape modeling even though I have read your article about this issue. Maybe my understanding of simscape is not enough, so from the dynamic equation you stated in the document, I hope you can send me more detailed documents about simscape modeling mecanum robot.
Thank you very much

Sign in to comment.

More Answers (1)

Dear Casanova,
My name is Le Dinh Thieu. I am student at da nang sciense and technology university at Vietnam. During this semester, i have a PBL about Mecanum robot but I have many difficulties in the process of building model simulations in simscape modeling even though I have read your article about this issue. Maybe my understanding of simscape is not enough, so from the dynamic equation you stated in the document, I hope you can send me more detailed documents about simscape modeling mecanum robot.
Thank you very much

Categories

Find more on Simscape Multibody in Help Center and File Exchange

Products

Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!