线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
MoveL_Test的速度
如果正确地禁用了冲突检查,则在标准输出/调试输出中不应该看到冲突检查时间。在代码的某个地方,你必须激活它或者你可能有另一个实例连接到API并做其他事情。

我能够运行下面的代码没有问题,并获得恒定的计时。

代码:
RDK = new RoboDK();
RDK - >连接();

RDK - > setCollisionActive(假);
RDK - >渲染(假);


//station = RDK->AddFile("Sim Robot.rdk"));
Item robot = RDK->getItem("", RoboDK::ITEM_TYPE_ROBOT);

Mat pose1 = RDK->getItem("Take").Pose();
Mat pose2 = RDK->getItem("Out").Pose();

tjointhome = robot. jointhome ();
Mat toolTCP = robot.PoseTool();
Mat robot2ref = robot.PoseFrame();



//测试是否可达
For (int i=0;我< 1000;我+ +){
tjoint start = robot。SolveIK(pose1, home, &toolTCP, &robot2ref);
if (start.Length() != 6) {return;}
tjoint end = robot。SolveIK(pose2, home, &toolTCP, &robot2ref);
if (end.Length() != 6) {return;}

//模拟模型
Auto res =机器人。MoveL_Test(开始,pose2);
qDebug() << res;
我有相同的代码,碰撞失效,渲染失效。我只有一个实例,当我的机器人检查下一个位置时,我只使用RoboDK,如果我不要求检查下一个位置,调试输出不会显示任何东西,所以一切都像它应该的那样。

在没有碰撞的情况下,我应该在什么时间检查MoveL位置?
我做了更多的测试,看看是否RDK - > setCollisionActive(假)真正的工作。当我激活它或不激活它时,我确实有一些差异(细微的差异)。我修改了我的程序,每次都测试完全相同的动作,并检查差异:
碰撞开启:时间在100 - 110毫秒之间(一次短暂运动)
碰撞关闭:时间在160 - 180毫秒之间(同一次短运动)

在RoboDK的控制台,也有一个区别:


关闭碰撞:

代码:
运行API命令:“CollisionMoveL”
MoveL测试:开始…
MoveL测试:线性运动是可能的。检查碰撞……
碰撞检查开始…
碰撞检查时间:2ms。碰撞:0,平均:1毫秒
碰撞检查开始…
碰撞检查时间:2ms。碰撞:0,平均:1毫秒
MoveL测试:完成!没有发现碰撞。测试次数:50次
更新位置和渲染…
没有3D窗口渲染
完成API命令:“CollisionMoveL”

碰撞发生时:

代码:
运行API命令:“CollisionMoveL”
MoveL测试:开始…
MoveL测试:线性运动是可能的。检查碰撞……
碰撞检查开始…
碰撞检查时间:1ms。碰撞:0,平均:1毫秒
碰撞检查开始…
碰撞检查时间:2ms。碰撞:0,平均:1毫秒
碰撞检查开始…
碰撞检查时间:2ms。碰撞:0,平均:1毫秒
碰撞检查开始…
碰撞检查时间:2ms。碰撞:0,平均:1毫秒
碰撞检查开始…
碰撞检查时间:1ms。碰撞:0,平均:1毫秒
MoveL测试:完成!没有发现碰撞。测试次数:50次
更新位置和渲染…
没有3D窗口渲染
完成API命令:“CollisionMoveL”

所以RoboDK似乎是在COLLISION_ON测试5组碰撞,COLLISION_OFF测试2组碰撞。
如果我只想要奇点/轴极限检查,完全没有碰撞,甚至没有机器人与自己的碰撞,什么都没有。我怎么设置呢?我知道奇点检查更快,因为当它检测到一个奇点时,它需要几毫秒。

PS:如果我让我的程序发送RDK - >渲染(假)没有UI, RoboDK崩溃了
这个问题有更新吗?已经一个月了




浏览此主题的用户:
2客人(年代)