9

If you're only using proportional force, then at some point it will be balanced by the force of gravity -- your error will converge on that balance, not zero. To compensate for the mass of the arm, you'll need to add an integral force term. This will increase over time to counterbalance the constant force of gravity. See also: this answer on the integral ...


7

Disclaimer! I will try to solve your problem but it may or may not solve the problem with your code! TL;DR: Two possible mistake in your code. In your pseudo-code, you are using transpose of jacobian instead of pseudo-inverse of jacobian (as suggested in your referenced slide). The other possible mistake is in the calculation of cross product in your ...


7

I would like to use P (proportional) controller for now. Just a proportional controller will never make your error stay at 0. Your system is not damped and a proportional controller acts like an undamped spring. Look at the controller equation that you wrote: τ=−K(θ−θd) and compare it to a spring equation: F=Kx or F=K(x1-x2) Your controller is acting ...


6

Writing the equations by hand and deriving them is certainly the best way to understand what is happening "in the background". Generating the equations and deriving them using a syombolics engine, like @SteveO suggested is essentially the same process but someone else, in this case a symbolic engine, is doing the work for you. There are however different ...


6

Yes, the Jacobian relates the joint velocities to end-effector velocity through this equation: $$ \mathbf{v}_e = \mathbf{J}(\mathbf{q}) \dot{\mathbf{q}} $$ Where $\mathbf{q}$ is the joint angles, $\dot{\mathbf{q}}$ is the joint velocities, and $\mathbf{v}_e$ is the end-effector velocity. As you can see, the Jacobian, $\mathbf{J}$, is configuration ...


4

Welcome to Robotics.SE! This is not exactly my area of expertise, but let me give you a few pointers. A very common approach for controlling manipulators is to first design good joint velocity controllers, in the "multiple SISO" approach you mention. You would then use inverse kinematics to determine at each point in time what the joint velocities should be ...


4

You are tackling two non trivial problem at the same time 1. Inverse kinematics of an overactuated manipulator 2. Obstacle avoidance using the null space By definition of the null-space projection the solution you want will only be able to avoid obstacles which are not on the desired Cartesian trajectory to be followed during the task. Think about sliding ...


4

Controllers type A more mathematical approach to the error. Suppose you have a close loop system like above. The equation is: $\hspace{2.5em}$ $Y(s) = \frac{G(s)C(s)}{1+G(s)C(s)} R(s)$ The error equation is: $\hspace{2.5em}$ $E(s) = R(s) - Y(s)$ $\hspace{2.5em}$ $E(s) = \frac{1}{1+G(s)C(s)} R(s)$ $\hspace{2.5em}[1]$ The final value theorem states ...


4

(EDITED TO CLARIFY PARENTHETICAL ABOUT CARTESIAN MANIPULATORS) Your equation is true in general only for those manipulators in which $J_a$ is independent of $\theta$ (such as with Cartesian manipulators). Otherwise, the expression is only true in the small (the region of $\theta$ close to $\theta_{t=0}$. The equation is not true in general because ...


4

Condition number and manipulability are measured at a specific joint configuration, not end-effector location. You already understand it correctly that the values change according to the robot configuration as they are computed from the Jacobian. You may also want to check out Yoshikawa's original paper on manipulability.


4

The original manipulators referred to in that article were through-the-wall pantographs which moved radioactive materials without the human operator having direct contact with those materials. The end effectors of those manipulators did have direct contact with the materials - just not the human. Although the article is not specific about this, it seems ...


3

The way you are describing it, DOM is the number of independent dimensions in $\vec q$. DOF is the number of independent dimensions in $\vec x$. In practice, a robotics engineer will use DOF to represent the number of independent actuators of the robot, which you are calling DOM. Better notation would be to call DOM the mobility of the system, as ...


3

The dynamics of robotic arms are fairly complex, especially when there are more than three joints to consider. The problem is that the movement of each joint moves all the links beyond it, which can induce torques at other joints. You have to consider how the movement of all links affects each individual joint. There is software that can automatically ...


3

I believe kinematic decoupling used to be the standard procedure for 6 DOF arms. (6R with spherical wrist). Where you would solve the 3 DOF position IK first, then 3 DOF orientation IK. If you have a spherical wrist, I don't think there is any reason why you can't decouple your problem like this. However, I assume you now have a 4 DOF arm to reach a 3D ...


3

We find this recent paper by Andrea Del Prete, Nicolas Mansard, Oscar Efrain Ramos Ponce, Olivier Stasse, Francesco Nori quite interesting: Implementing Torque Control with High-Ratio Gear Boxes and without Joint-Torque Sensors The authors presented a framework for implementing joint-torque control on position controlled robots.


3

Hopefully you still have only 4 rows in your DH matrix, not 8 as you said. I think you mean that your Jacobian matrix has 8 $\require{enclose} \enclose{horizontalstrike}{\text{rows}}$ columns. Your approach is close to correct, but it has one flaw. The flaw is when you make the transformation that you are calling the "first joint." Instead of letting ...


3

If you are already using Qt, then Q3 3D would be an obviuos choice for 3D representations. Gaming engines like Unity (C#/JavaScript) or the Unreal Engine (C++) are also a suitable choice for representing robots in 3D. You will find plenty of exmples like this. Using directly OpenGL is also an option, but if you want anything else then just simple 3D ...


3

Actually I wish to implement my own algorithm (like some variation of RRT) without MoveIt!/OMPL hence it is important for me to know all the details. I am really confused about this. Any explanations or links where I can find the details and understand them would be really helpful. OMPL and MoveIt have a ton of features that are already ...


3

The interpretation of error for a robot manipulator pose is subjective in terms of what is the error being used for. A robot manipulator pose is combination of both position (x, y, z) and the orientation (quaternions or euler angles) and thus, designing the error could partially or completely include all terms. Your representation of error is essentially ...


2

I'll just show why heuristics and experience are relevant in this problem by showing that is nearly impossible to solve optimally. Note, genetic algorithms cannot necessarily always solve a problem optimally, they are just another heuristic-based search. Defining the manipulator Let's simplify things. According to Craig 2005, robot manipulators can be ...


2

Worked example $\hspace{2.5em}$ $\vec{q}$ = $[q_{1}\hspace{1em}q_{2}]^{T}$ $\hspace{1.5em}$ [Generalized coordinate] $\hspace{2.5em}$ $\vec{J}$ = $\frac{\partial \vec{r}_{OA}(\vec{q})}{\partial\vec{q}}$ = $\begin{bmatrix} \frac{\partial \vec{r}_{1}}{\partial\vec{q}_{1}} & ... & \frac{\partial \vec{r}_{1}}{\partial\vec{q}_{n}} \\ ... & & .....


2

The Jacobian in that equation is from the joint velocity to the "spatial velocity" of the end effector. The spatial velocity of an object is a somewhat unintuitive concept: it is the velocity of a frame rigidly attached to the end effector but currently coincident with the origin frame. It may help to think of the rigid body as extending to cover the whole ...


2

I think you may be going about this problem wrong. If you find a simulator that reports joint torques, then what? Are you going to iterate through every possible start and end location? You should only need to evaluate the worst-case motion. Worst case static torque would be with the arm straight out carrying maximum load, and worst case dynamic torque ...


2

Page 50 of Hamid D Taghirad's 1997 PhD dissertation from McGill University gives a series of equations for harmonic drive torques, and the top of page 51 gives the following fantastic model for the harmonic drive: WG is the wave generator (input); fs is the flexispline (output); N is the gear ratio, then the springs and dampers are deflection and friction ...


2

If you want to keep orientation constant, the simplest approach is to, well.. do exactly that. Do not solve for the tartget point and let the joint move along a seemingly arbitratry cartesian path (but infact well defined in joint space). Solve the inverse kinematics problem for a number of points (depending on your robots precision maybe every milimeter) ...


2

The pseudoinverse (Moore-Penrose inverse) provides the solution which is minimum in a least-squares sense. It is rather similar to the Simplex method in that sense. You need some type of optimization such as this to coordinate the extra axes of motion while posing the end effector at the desired position and orientation. To also optimize a run-time ...


2

Having 8 rows in the DH parameters table is completely ok. However, this does not lead to 8 rows in your jacobi matrix. The size of the jacobi matrix is always given by number of degrees of freedom in Cartesian space and number of degrees of freedom in joint space. In your case 6 and 7, as I understand. Elements in the Jacobi matrix express to what extent ...


2

In the Robotics Toolbox SerialLink.ikine() can only be used for 6 dof or higher structures. The masking option you have used, can be used fo underactuated robots. There is an example in the documentation, how a 3dof robot could be considered a 6dof underactuated robot. However, it is also stated in the manual, that: For robots with 4 or 5 DOF this ...


2

Singular configurations are configurations at which the Jacobian is rank-deficient. In this case $J$ is a square matrix, you can find conditions for singularity by solving $\det(J) = 0$. The last row of $J$ being all ones means that no matter the configuration, you can always generate some angular velocity. This actually implies that the conditions you get ...


2

From now, I will solely answer your second question about forward kinematics, which is usually easier to solve than inverse kinematics. First you should sketch your robot in a plan using textbook representations for revolute and prismatic joints, this will make it clearer for you and the others. I needed to look at the picture to see that the 4 rotations ...


Only top voted, non community-wiki answers of a minimum length are eligible