Dorian Tsai

Dorian Tsai

Hello! I'm Dorian, a PhD Researcher with the Australian Centre for Robotic Vision researching computational imaging and light field cameras for more robust robotic vision with transparent objects.

Location Brisbane, Australia


  • Hi @SimonWhitehead I have not used the Arduino support package myself, but I have heard great things about it. Let us know how it goes!

  • Glad to hear it @WalterMills !

  • Hi @WalterMills for running matlab on pi, you can't run Matlab's desktop version on a pi, but you can interact with the pi through Matlab, and you can use Matlab Coder (which probably isn't included in this course's Matlab license) to run your algorithm on the pi as an application.


  • HI @MarkWilliams, I agree that Matlab is a giant install. Try going through the install process for Matlab of this course, and see if you can get an activation code or license file. If so, you probably don't need to re-download. Otherwise, you might have to do a full re-install for the latest version of Matlab.

  • Hi @RainaireHansford , as mentioned below, these are functions that you'll need to code yourself, as they are specific to your robot. For an explanation on the forward and inverse kinematics, and how to do them for your robot, check out the Move a Robot arm course, Peter's textbook, wiki, or any other robot arm info source. Hope that goes well. Cheers!

  • H i @SACHINGUPTA these are functions that you'll need to code yourself, as they are specific to your robot. For an explanation on the forward and inverse kinematics, and how to do them for your robot, check out the Move a Robot arm course, Peter's textbook, wiki, or any other robot arm info source. Hope that goes well. Cheers!

  • Looking pretty cool @RaulVillaseca ! How close are you to putting the marker on the end effector and drawing paths with it?

  • Hi @MatthewMatin be sure to read some of the comments below. One of the keys to getting smooth operation out of the arm is reducing the friction of the pencil/pen on the paper. Counter balance works well. Soft pencil/marker might also work well, especially if you put a clear plastic sheet on top of your worksheet. This way you can wipe the excess marks away...

  • @MatthewMatin Glad to hear! It's all about trying to remove possible sources of error as you work on/debug a system. As a general approach, it's often useful and instructive to try and build the most basic thing from the ground up, and then add on fancy features, rather than aiming for the most complex design from the get-go. Instead, start with a simple...

  • Welcome @LancelotAllison enjoy the course and feel free to ask away as you progress!

  • @MatthewMatin Liam's working with the NXT because that was this course and these videos were developed back around 2012. EV3 is the next generation of LEGO Mindstorms products, and definitely the preferred hardware for this course, as it has the most support from many other platforms. If you continue to have trouble with the NXT, I would definitely go for...

  • Hi @RaulVillaseca it's always a struggle to get the hardware talking with the software. All of us roboticists know the struggle. :)

  • Hi @SimonWhitehead to manage acceleration and deceleration, check out trapezoidal motion profiles. There's a variety of youtube videos that show how to set this things up. As for getting them to work together, can arduino send signals to both motors at the same time? I think it can.

  • What hardware are you working with/trying to get to move through Matlab? There are a variety of software packages and step-by-step instructions available on many sites on t he internet/Youtube that can show you how to get the Lego Mindstorms NXT/EV3 motors moving.

  • Hi @SujanPandey this Futurelearn course uses/provides the most recent version, which is MATLAB 2019b.

  • Hi @AndresCorredor the intent is for you to write your own code that would control the robot in a correct path to accomplish the task. You can then test the algorithm using the arm simulator that we've provided to make sure that the code works/your theoretical understanding of the problem is correct *before* trying to get the whole thing working in hardware.

  • Hi Matt, just replied to your email. With respect to the error verLessThan(arg1,arg2), it does sound like there are compatibility issues. verLessThan(arg1,arg2) is a function in MATLAB that returns true if the version of the specified toolbox (arg1) is older than the required version specified in the string (arg2). Either you are missing the Control Systems...

  • Hi @Aditya.kumarjha If you're just trying to learn Matlab, consider going to the source, which is They have an e-learning academy as well:

  • Hi @LavishK I'm not certain the Matlab course on Futurelearn is still active; however, if you're just trying to learn Matlab, consider going to the source, which is They have an e-learning academy as well:

  • An alternative might be to reduce the friction of the writing utensil by giving it wheels or ball-bearings. Consider creating a "rig" that fastens to the pen/pencil , but can easily roll about on a flate plane in any direction (eg, omni-directional wheels or ball-bearings). Such a rig would also stabilize the manipulator a bit more, since a single point of...

  • @EricPoole No worries. It's easy to lose track of all the comments and responses.

  • Great to hear! Hope you learned a lot from the course and the other people interested in robotics :)

  • Hi @LalaGadimovaLalaGadimova glad you had a good experience with the feedback and your peers. :)

  • Incidentally, moving slow is a nice way to simplify the robot control problem because you can often ignore a lot of the dynamics of the system. They should be pretty negligible for the low-mass robot systems that most people are developing in this course, but for the big heavy industrial robots, inertia and dynamics must be weighed against the...

  • And you will learn much more, while embracing open-source. :)

  • Hi @BasitJacob it looks like the imread function cannot find the bra_worksheet.png.
    This can occur for a number of reasons, but the most likely are:
    1) the file does not exist on your computer
    2) the code cannot find the file (it has an incorrect file path)
    3) the filepath has the correct folder names, but possibly the wrong folder separator (eg "/" in...

  • @WalterMills Awesome. I love how you are recycling old devices that still have good parts!

  • Feel free to let us know if there are still other errors with the app. Cheers!

  • Hi @ChrisGarrard @ColinLythall we're working with Peter to patch the app, but for now here's what you need to do to make the app work on MATLAB 2019b:

    1) Open up MATLAB 2019b and try to run the simulator. You get an error "Error in SerialLink/plot>create_robot (line 467)
    d = norm( d(4:6)-d(1:3) ) / 72;". You should also be able to click on the "plot" file...

  • Hi @SujanPandey I believe the Matlab scripts are available back in 1.7

  • Hi @MiguelMartinez what is the reason for building a 3DOF robot for the task? Does the robot need 3DOF?

  • Hi @AlanClark if the base is not sturdy enough, any thoughts on how you might improve it and make it more rigid, or perhaps balance the weight a bit better?

  • Hi @LarissaDeck the wires might get in the way. I recommend using tape , velcro wire organisers, or quick ties to secure the wires to the arm.

  • Hi @LarissaDeck just wondering, what's the motivation for using a planetary gear?
    Also, the rack and pinion look pretty good. Hope the print turns out well!

  • Hi @RaulVillaseca it matters for precision, but for the given task, the motors should be sufficiently accurate. Ultimately, it depends on how accurate you want to be. To be more accurate, you would need to account for these effects. You could model these effects and predict what they would be. Or you could have an independent sensor/measurement device (to...

  • @LarissaDeck lego is awesome, until you discover 3D printing. Then it's like you can make your own LEGO!

  • @ChrisGarrard how will you make the arm linkages (ie, the structural components) of the arm?

  • Looks pretty cool @ChrisGarrard ! Will you mount the arm onto your mobile robot platform?

  • Awesome progress so far @LarissaDeck . Time is definitely one of the world's most precious resources. I'm glad to hear you are spending some of it exploring the area of robotics! It also sounds like you're on the right path. Happy tinkering!

  • Hi @LarissaDeck inaccurate gears/joints are a real-world challenge for robots. It often helps to have an independent method of measuring joint angles if your mechanics are slightly unreliable. This gets into the concept of feedback control. If you can measure your joint angles independently, you can move your robot a bit (still generally in the correct...

  • Awesome. Welcome to the course Patrick!

  • Hi @WalterMills what kind of motors are you controlling and how are you controlling them? You can often control the speed of motors based on what voltage/PWM frequency you send the motors without needing a reduction drive/gears. This may simplify your design.

  • Hi @WalterMills it's interesting to see how you have related the robot arm to the relative motions of the human body. From a theoretical point, if we consider motion on a plane (as we are for this exercise), a rotating waist joint and a shoulder joint are both revolute joints. Similarly, a bending elbow joint and a wrist joint are simply revolute joints. So...

  • @AlanClark that's a common situation. Python is an interpretted language (higher-level); whereas, C/C++ is compiled for machine hardware. Thus, C/C++ can run much faster. We still often use C++ when we want robots to run fast. :)

  • Sounds good. I'm keen to see how the robot turns out! :D

  • @AlanClark the MG996R servos come in a 360deg and 180deg versions. So achieving 180deg rotation with the servos shouldn't be a problem. If you are having trouble getting the full rotation when controlling the motor through the Arduino, what units do you need to use to communicate with your specific servo motor?

  • Hi @ColinLythall sounds like a pretty well thought setup. Small motors should suffice for this project. Just bear in mind that the joint resolution of the stepper motors will ultimately affect how fine/coarse your trajectory will be for the robot end effector. Also consider how to attach your pencil/pen/marker, and how to add or subtract mass from the tip to...

  • Hi @WalterMills sounds good. If you have any questions, feel free to post them along the course and we'll do our best to answer them. Cheers!

  • Hi @ChunduruBharath some important considerations would be:
    - make sure that your microcontroller has sufficient input/output pins for controlling the actuators and reading from the sensors.
    - what kind of sensors will you be using? Some actuators have built-in feedback sensors in them.
    - what coding platform and microcontroller will you be using? Certain...

  • Hi @MushfikaAnjum yes, we go through the steps needed to access the Matlab robot arm simulator in section 1.7

  • Hi @FedericaSpadazzi if you have any specific questions, feel free to directly message one of the mentors (Obadiah, Edward, or myself). Brandon Armstrong is also available to answer questions related to Matlab. The key is to have specific questions prepared so that we can answer them. An alternative is to simply learn Matlab directly from the Matlab academy,...

  • Hi folks, there's also Octave, which is an open-source Matlab. I'm not sure what the support is for Raspbian, but if it's open-source, it probably plays very well with Linux and thus Raspbian. Cheers!

  • Hi @LarissaDeck it should be possible. So long as you can control a few motor positions (ie, robot arm joints), any device can work. The Arduino Leonardo has 7 PWM outputs. You'll likely only need at least 2 to control 2 servo motors. Of course, you're free to build a more advanced robot arm. In this course, we're just covering one of the simplest arms. As...

  • Hi @LarissaDeck I've never encountered gcode, but from a quick look on Wiki, my guess is that gcode is more of a framework/programming language for the CNC manipulators and 3D printers. Underneath the framework, you still need to have the theory/math in place. In this course and the related courses on Robotics, we are focusing on the theory and math, and...


  • Hi @ManuelaRaso welcome to the course, this should be a good compliment to your background then. Feel free to ask questions as you go along. Either the mentors or other course-mates will respond to your posts. Cheers!

  • Hi @ChrisGarrard welcome to the course! Sounds pretty exciting!

  • Hi @EricPoole well put. It will also be interesting to see how both genetic algorithms and machine learning (more specifically deep learning) will play a role in robot design and automation. I suspect it will be quite significant.

    Regarding your last point on robot perception, it reminds me of Roy Batty's speech from Blade Runner. :) I do agree! Thanks for...

  • Hi @GuusLöhlefink well put!

  • Many surgery robots need to have tiny/minimally-invasive manipulators. In these cases, there's simply no space for large actuators, so a lot of it is still made with cables. I think at QUT, there's also some fairly novel snake robots being proposed for surgical purposes that rely on cables. :)

  • Hi @EricPoole what is your expression for calculating q1? What error are you receiving?

    Here's part of the MATLAB solution for q1:
    P = mtraj(@tpoly, pA, pB, 50);
    x = squeeze(P(:,1)); y = squeeze(P(:,2));
    q2 = sqrt(x.^2 + y.^2 - (a1+a2)^2);
    q1 = -atan2(x, y) + atan2(q2, a1 + a2);
    qtraj = [q1 q2];

    You should be able to tell whether or not your q1...

  • Hi @JarrodMcCarthy good question. It's very similar to the process we did in 2D last week. q1.. qn are joint variables - they move. a1, an are fixed link lengths - they do not move. a1 will always be the same, regardless of our arm's orientation, so we do not constantly need to update them. q1...qn on the otherhand - they define the position and...

  • Hi @ShreyasAgrawal good question. It's all a question of what frame of reference we are in -- a question of relativity. Without any of the math, let's consider a robot facing forwards and looking at you, 2 meters away. You are not facing the robot. In your frame of reference, or from your perspective, the robot is to your left 2 meters. If you tell the robot...

  • Hi @DaxRosales analytically, we want to follow the same steps we made a few steps ago (see link below). We're simply combining the rotational and prismatic equations now. There are equations for rotational links, and equations for translational links. Since our system is linear, we can simply multiple each of these equations in sequence, providing us with a...

  • Hi @GuusLöhlefink you are correct in the max and min workspace. The arm's workspace (the area where its end-effector can reach) is described by a ring. The point of the exercise is to figure out the kinematics: given a Cartesian coordinate, tell me the joint angles required by the manipulator to get to that spot.