仅提供工具的 x、y、z 的编程反向运动学解决方案
Programming inverse kinematic solution provided only x,y,z of tool
我目前正在尝试实现一个反向运动学解决方案,该解决方案能够找到机器人在给定工具位置 x、y、z 的情况下可能具有的所有可能的 Q 状态。
我选择使用最小二乘法来做这件事,但有些事情告诉我它不会提供所有可能的解决方案,而只会提供误差最小的解决方案,在这种情况下,我对所有可能的 Q-满足工具位置的状态。
我的实现看起来是这样的。
Eigen::MatrixXd jq(device_.get()->baseJend(state).e().cols(),device_.get()->baseJend(state).e().rows());
jq = device_.get()->baseJend(state).e(); //Extract J(q) directly from robot
//Least square solver - [AtA]⁻1AtB
Eigen::MatrixXd A (6,6);
A = jq.transpose()*(jq*jq.transpose()).inverse();
Eigen::VectorXd du(6);
du(0) = 0.1 - t_tool_base.P().e()[0];
du(1) = 0 - t_tool_base.P().e()[1];
du(2) = 0 - t_tool_base.P().e()[2];
du(3) = 0; // Should these be set to something if i don't want the tool position to rotate?
du(4) = 0;
du(5) = 0;
ROS_ERROR("What you want!");
Eigen::VectorXd q(6);
q = A*du;
cout << q << endl; // Least square solution - want a vector of solutions.
首先,反向亲属似乎不正确,因为 Q 状态不会将机器人移动到所需位置。我似乎看不出我的实现哪里错了?
用数值解求解运动学逆问题不是最好的选择。你应该选择那个选项,以防你找不到解析解。顺便说一句,设计好的机器人应该有一个清晰的逆运动学模型。
对于您的机器人,这是反向运动学模型:https://smartech.gatech.edu/bitstream/handle/1853/50782/ur_kin_tech_report_1.pdf
我目前正在尝试实现一个反向运动学解决方案,该解决方案能够找到机器人在给定工具位置 x、y、z 的情况下可能具有的所有可能的 Q 状态。
我选择使用最小二乘法来做这件事,但有些事情告诉我它不会提供所有可能的解决方案,而只会提供误差最小的解决方案,在这种情况下,我对所有可能的 Q-满足工具位置的状态。
我的实现看起来是这样的。
Eigen::MatrixXd jq(device_.get()->baseJend(state).e().cols(),device_.get()->baseJend(state).e().rows());
jq = device_.get()->baseJend(state).e(); //Extract J(q) directly from robot
//Least square solver - [AtA]⁻1AtB
Eigen::MatrixXd A (6,6);
A = jq.transpose()*(jq*jq.transpose()).inverse();
Eigen::VectorXd du(6);
du(0) = 0.1 - t_tool_base.P().e()[0];
du(1) = 0 - t_tool_base.P().e()[1];
du(2) = 0 - t_tool_base.P().e()[2];
du(3) = 0; // Should these be set to something if i don't want the tool position to rotate?
du(4) = 0;
du(5) = 0;
ROS_ERROR("What you want!");
Eigen::VectorXd q(6);
q = A*du;
cout << q << endl; // Least square solution - want a vector of solutions.
首先,反向亲属似乎不正确,因为 Q 状态不会将机器人移动到所需位置。我似乎看不出我的实现哪里错了?
用数值解求解运动学逆问题不是最好的选择。你应该选择那个选项,以防你找不到解析解。顺便说一句,设计好的机器人应该有一个清晰的逆运动学模型。
对于您的机器人,这是反向运动学模型:https://smartech.gatech.edu/bitstream/handle/1853/50782/ur_kin_tech_report_1.pdf