我试图通过发送 100hz 的位置来控制机器人。发送这么多头寸时,它正在做一个颤抖的动作。当我发送一个距离他的起始位置 50 毫米的位置时,它会平稳移动。当我使用传感器进行转向时(因此它发送从 0 到 50mm 的每个位置)它在晃动。我可能会像 X0-X1-X2-X1-X2-X3-X4-X5-X4-X5 一样发送,这就是它可能会抖动的原因。当我使用鼠标操纵机器人时,如何解决这个问题以使机器人平稳移动?
- 机器人要求 125hz
- IR 传感器发送 100hz
- 否则25hz会有所不同吗?
这是我的代码。
while(true)
// If sensor 1 is recording IR light.
if (listen1.newdata = true)
{
coX1 = (int) listen1.get1X(); //
coY1 = (int) listen1.get1Y();
newdata = true;
} else {
coX1 = 450;
coY1 = 300;
}
if (listen2.newdata = true)
{
coX2 = (int) listen2.get1X();
coY2 = (int) listen2.get1Y();
newdata = true;
} else {
coY2 = 150;
}
// If the sensor gets further then the workspace, it will automaticly correct it to these
// coordinates.
if (newdata = true)
{
if (coX1< 200 || coX1> 680)
{
coX1 = 450;
}
if (coY1<200 || coY1> 680)
{
coY1 = 300;
}
if (coY2<80 || coY2> 300)
{
coY2 = 150;
}
}
// This is the actually command send to a robot.
Gcode = String.format( "movej(p[0.%d,-0.%d, 0.%d, -0.5121, -3.08, 0.0005])"+ "\n", coX1, coY1, coY2);
//sends message to server
send(Gcode, out);
System.out.println(Gcode);
newdata = false;
}
}
private static void send(String movel, PrintWriter out) {
try {
out.println(movel); /*Writes to server*/
// System.out.println("Writing: "+ movel);
// Thread.sleep(250);
}
catch(Exception e) {
System.out.print("Error Connecting to Server\n");
}
}
}
@ 编辑
我发现我可以做到这一点。它是通过最小值和最大值。所以基本上我认为我必须做的是:*将每个单独的坐标放入一个数组(12个坐标)*从这个数组中获取最小值和最大值*输出最小值和最大值的平均值