线程评级:
move_test的速度
# 1
你好,
我在我的软件中执行了一个测试,在告诉机器人走哪一条之前尝试了几个轨迹。
一切似乎都工作,但我有一个问题,每次我到a大约需要480毫秒MoveL_Test我不知道为什么这么慢,我只有一个没有工具的机器人,MoveL有10厘米长,我甚至没有启用碰撞功能。

有可能加快速度吗?我只需要在moveL上测试reach + singularity。

我可以对每厘米进行离散化和测试SolveIK,但我需要看到雅可比矩阵以确保我没有任何奇点。我该怎么做呢?或者有其他快速的方法吗?我不能有超过20毫秒的延迟。

谢谢
您能提供您正在尝试运行的RDK文件和python代码吗?

使用Render函数允许您控制是否在每次测试后呈现屏幕。设置渲染为False可以帮助你加快计算速度。
# 3
我使用了我能做的最基本的RDK(我甚至删除了这个工具来固定这个过程)。

我用-NOUI选项启动RoboDK。然后我的c++代码看起来像这样:

代码:
RDK - > setCollisionActive(假);

//测试可达
t关节开始=机器人。SolveIK(pose1, home, &toolTCP, &robot2ref);
if (start.Length() != 6){返回false;}
t关节结束=机器人。SolveIK(pose2, home, &toolTCP, &robot2ref);
if (end.Length() != 6){返回false;}

//模拟移动
自动res =机器人。MoveL_Test(start, pose2);

返回res == 0;

我没有展示如何设置所有变量,但既然它可以工作,我猜你不会需要它。
这个测试是我能做的最基本的测试,当我有我的工具时,它花了450毫秒到1.9秒,自从我删除了我的工具后,它花了250-350毫秒。

即使使用-NOUI选项,我也应该禁用刷新功能吗?

仅供参考,这台电脑运行的是Ubuntu 20.04, Ryzen 3700X和GTX 970,所以处理能力应该不是问题
# 4
我刚刚注意到在RoboDK的控制台中,有关于“检查碰撞…”的行,但我禁用了它们(RDK->setCollisionActive(false);),这正常吗?这会导致延误吗?

(我试图关闭渲染,它改变了4毫秒,所以这不是问题)
# 5
碰撞检查通常需要时间,它可以解释400毫秒的延迟。

我不知道你改变了什么,但如果你可以发送你的项目,我可以更好地帮助你。
# 6
所以如果它测试碰撞,这意味着“RDK->setCollisionActive(假);”不工作?

我在之前的消息中向您发送了用于启动测试的代码片段,我可以添加变量赋值,但它不会发生太大变化,我不能将我的c++项目发送给您。

我试着创建一个我的c++程序的极简版本来给你更多的信息,我也再次发送RDK文件:

代码:
类Wrapper() {

包装(){
RDK = new RoboDK();
RDK - >连接();

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


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

home = robot. jointhome ();
toolTCP = robot.PoseTool();
robot2ref = robot.PoseFrame();



bool testMoveL(Mat pose1, Mat pose2) {

//测试可达
t关节开始=机器人。SolveIK(pose1, home, &toolTCP, &robot2ref);
if (start.Length() != 6){返回false;}
t关节结束=机器人。SolveIK(pose2, home, &toolTCP, &robot2ref);
if (end.Length() != 6){返回false;}

//模拟移动
自动res =机器人。MoveL_Test(start, pose2);

返回res == 0;


RoboDK * RDK;
项站;
项机器人;
tJoints回家;
垫robot2ref;
垫toolTCP;


我实例化这个类一次,并运行“testMoveL”,其中的每个轨迹我都想尝试。

我每次都尝试2个移动,一个在工具框架中直线移动,然后一个向上移动,这是相同的函数,只是位置发生了变化,但每次“直线上升”的运动的计算都更快(大约x3更快),我猜运动对于算法来说更简单,但它仍然很奇怪,因为每个运动都移动了相同的距离。
# 7
我不得不删除所有东西来简化计算,没有工具,只有机器人,没有其他东西,我可以获得大约250毫秒,似乎无论我尝试什么,碰撞都保持可用。如果你有一个想法来加快这将是伟大的!现在它不能在我们的机器中使用(它比我用“CNT”的时间要慢)
# 8
你好,抱歉坚持,但这是一个让我的机器无法使用的问题,我已经有这个问题14天了,我的RoboDK试用版快结束了。如果它不起作用,我将无法说服我的团队使用它。这台机器从上个星期就开始做演示了。你能尽快帮我吗?谢谢。
# 9
如果您能提供RDK项目来更好地理解减速,那就太好了。

碰撞检查通常需要时间,而计算所花费的时间在很大程度上取决于机器人所处的位置。

在其他事情中,你可以尝试删除小的几何图形或简化网格,然而,这可能会使事情变得更糟,这取决于你的对象。更多提示:
//www.w5838.com/doc/en/Collision-Avoi...isionCheck
我在论坛里用你的工具发送了RDK,我发送了很多次,如果你没有看到它,一定是你的网站工具有问题。程序如下:

https://cloud.secma-sa.com/index.php/s/2AypYeFDGXrmMYG

正如我告诉你的,我的RDK文件只有机器人,没有其他,没有复杂的几何图形,甚至没有工具,软件太慢,无法添加其他任何东西。

你已经告诉我碰撞需要时间,我已经告诉你我禁用了它,我甚至给你发送了cpp代码给你看(我尝试在每次运动之前禁用碰撞以确保,它不会改变任何东西),你可以看到我写的cpp,在之前的消息中向你展示问题。

问题是当我看着RoboDK的控制台,当我测试MoveL时,我有这个:

代码:
MoveL测试:开始…
移动测试:线性移动是可能的。检查碰撞……
碰撞检查开始…
碰撞检测时间:4ms。碰撞:0平均:1毫秒
碰撞检查开始…
碰撞检测时间:1ms。碰撞:0平均:1毫秒
碰撞检查开始…
碰撞检测时间:3ms。碰撞:0平均:1毫秒
移动测试:完成!未发现碰撞。测试次数:50次
使用API命令完成:"CollisionMoveL"

我尝试了所有可能的方法来禁用碰撞,它需要超过200毫秒,在在线模式下运行太慢了。我创建了自己的碰撞检查,我只是想测试奇点和轴极限,没有别的。

那么是API坏了,软件不明白它不需要检查碰撞吗?还是软件运行速度太慢,无法在线运行?




浏览此线程的用户:
1客人(年代)