This topic has 1 reply, 2 voices, and was last updated 3 months, 3 weeks ago by SuperDroid.

  • Author
  • #8423


    I am developing a 3DoF robotic arm. I am using an arduino uno, cnc shield and 3 stepper motors (nema 17). I would like to control the arm initially via a joystick (ps4 controller), but later on I would like to code inverse kinematics in arduino IDE to implement automation. Do you know how is the best way to do it? I was thinking of using grbl and universal g code sender, but then I can’t implement the inverse kinematics. Could I code joystick controller in arduino IDE and then add the inverse kinematics code?



    I’m not familiar with this pipeline for controlling robot arms but it sounds like you can use grbl regardless since you’re on Arduino and you need to generate a pulsetrain for the stepper motors. I haven’t worked with Universal G Code Sender either but I think you’re right that this will be too restrictive for what you’re trying to do. The first stage of the project should be figuring out how to give speed commands for each stepper motor to grbl and figuring out the conversion factors to turn the pulse count and pulse rate into real angles and rotation rates in e.g. rad and rad/s and vice versa. Reading joystick axes, turning them into individual joint speeds, and passing them to grbl is a good start.

    Ultimately with inverse kinematics, you are trying to place the correct acceleration/velocity on each joint to get a desired acceleration/velocity at the end effector. The necessary acceleration and velocity at each joint is a function of the current joint positions, so you will need to track the angle of each joint to accomplish this. You can track the number of pulses sent to the stepper motors but you will need some type of homing routine on boot so the joints are starting from a known position.

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.

Login Register

©2021 | All rights reserved.

Log in with your credentials


Forgot your details?

Create Account