File Exchange

image thumbnail

Robot Arm with Conveyor Belts

version (11.1 MB) by Steve Miller
Robot arm transfers parts between two conveyor belts


Updated 17 Apr 2021

From GitHub

View Version History

View license on GitHub

Models a robot arm with 5 degrees of freedom and a gripper, along with two conveyor belts. The robot transfers parts from one conveyor belt to the other. One conveyor belt brings the parts to the robot arm, and the other belt transports the parts away from the robot arm. The model includes electrical actuation, supervisory logic, and optimization of end effector trajectory.

Please read the file to get started.

Use the "Download from GitHub" button above to get files compatible with the latest release of MATLAB.
Use the links below to get files compatible with earlier releases of MATLAB.

For R2020b:
For R2020a:
For R2019b:
For R2019a:
For R2018b:
For R2018a:
For R2017b:
For R2017a:
For R2016b:

The robot arm model was created in Onshape and imported into Simscape Multibody.
Visit this File Exchange entry to learn more about Onshape

Try this free, hands-on tutorial to learn how to use Simscape:

Find other Simscape examples by searching posts for the keyword "physical modeling"

Learn more about MathWorks Simscape Products:

Cite As

Steve Miller (2021). Robot Arm with Conveyor Belts (, GitHub. Retrieved .

Comments and Ratings (18)

manasagavini d

Francisco Molina

Vicente Casanova

Hello Steve
I'm trying to develop a simulation model of a robot arm, using Torque input in the revolute joints.
In order to understand the motors that you are using in this work (congratulations, by the way, it's a really great job) I have done a simplified model erasing some of the parts, leaving just the two first joints (my apologies for this the complete model is too much for me). It works but I don't understand the role of the Current Source block. When I try to remove it I get this error message:
['Simplificado/Bicep_/Meas P', 'Simplificado/Bicep_/Motor', 'Simplificado/Bicep_/Sensing i']: Each physical network must be connected to exactly one Solver Configuration block. There is no Solver Configuration block connected to Physical Network with the following blocks: 'Simplificado/Bicep_'
I have some experience with Multibody but Electrical is still kind of a mystery to me.
Can you explain why do I need the Current Source or how can I remove it without the Solver error?
Best regards


I'm learning this ,thanks!

Mil Shastri

shalakha Bang

Hey Steve Miller, I am trying to pick the object which is of uneven shape,I have applied contact forces that keeps the object holded,but I need to pick the object up and place it in its mould,whenever i change the position of gripper it does not take object with it and the object is left at the same position.I have also provided "six degrees of freedom"to the object!!!! can you please give me solution to this?

shalakha Bang

please upload R016a version of the model


Hi Steve Miller Do you have some example about the integration of inverse kinematic code into simulink

Kyaw Htet Naing

Steve Miller

Hi Varun - your inverse kinematics model could probably be included in the Simulink model. There are blocks for including MATLAB code in the Simulink block diagram. The outputs of that block could then be used in place of the constant blocks I used in the model.

Varun Kaushik Trivedi

Hello Steve,
Thank you for replying in detail to my query. I had not posted any details of what I was doing. After reading you reply, I understood the logic. Now, I needed to know, I am planning to input co-odinates instead of joint angles. Is there any way to do that?. What I did is, I have a separate inverse kinematic matlab/simulink solver. I solved through that seperately, as (x ,y z ) co-ordinates as input and got joint angles as output. I put those join angles in Qt in 'manual' mode and got successful simulation. Is there any way in this model to combine it?

Steve Miller

Hi Varun - to vary the trajectories, it depends which configuration you are in. In the "Default" configuration, accessed by clicking on the hyperlink at the top of the model, the parameters which are used are in the mask for subsystem "youBot_Arm/Input/Control". If you are testing Box Transfer only, MATLAB workspace variables Qt and t are used. This is so we can optimize those values using Fast Restart, which does not permit variables in MATLAB structures (such as YBT_Par.Waypoints....) to be tuned. I hope that helps. --Steve

Varun Kaushik Trivedi

How do you vary paramters for simulating different trajectories? modifying PARAM file inputs does not give the desired output.

bl k

Xiang Chen

Paul Lambrechts

Vasco Lenzi

Tohru Kikawada

MATLAB Release Compatibility
Created with R2021a
Compatible with R2016b to R2021a
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!