线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
降低机器人速度
# 1
问题
亲爱的所有,

在RoboDK API有一个函数:
代码:
setSpeed (speed_linear, speed_joint =-1, accel_linear=-1, accel_joint =-1)

如果我理解正确的话,线性加速度和关节加速度可能只是正的?
当机器人从起点接近终点时,是否有可能减速?
例如,以100毫米/秒的速度开始运动,接近目的地时,使用此功能将速度降低到5毫米/秒。
# 2
嗨Civgineer,
如果你的机器人从A点移动到B点,他在到达B点之前自然要减速。当你使用setSpeed时,你会得到一个斜坡函数来表示你的速度。在运动的某一点上,机器人的速度为5毫米/秒。这个点离你的目标点B有多近取决于你设置的加速/减速。数学上有无数种方法可以做到这一点。
也许你可以提供更多的细节,你正在努力做什么。我不确定你是想在某一点的特定距离上达到特定的速度,还是你只想以较慢的速度跑过某一点而不停下来。


附加文件 缩略图(s)

# 3
你好DavidG,

谢谢您的回复!
更具体地说:
你可以想象,我想让一个机器人以100mm /s的起始速度从a点移动
靠近B点(距离= 1000mm),它应该减小到几乎为0。
如果我看到机器人要撞到障碍物,我需要它来手动阻止它
(他们的立场可能会改变)。
请在下面找到一张图片。我希望我的解释清楚。


附加文件 缩略图(s)

# 4
在这种情况下,我建议你在你的程序中增加一些辅助点。
如果你的实际目标是
代码:
robot.MoveL(Target01) #点B
robot.MoveL(Target02) #点C
等等......
你可以添加这样的指令:

代码:
robot.MoveL(Target01) #点B
robot.MoveL(AuxiliaryPoint01) #靠近Target02的点
setSpeed (1)
robot.MoveL(Target02) #点C
setSpeed (100)
如果你已经准备好了程序,你可以用一个只运行一次的脚本来完成这个非常简单的任务。
附加点的位置取决于你对物体位置的确定程度。
当使用MoveL时,你可以计算两点之间的距离,并在移动的99%(例如)添加辅助点。对于MoveJ来说,这也应该是可能的,只是数学上可能有点棘手。
请记住,这种方法是相当原始的。
我很好奇你的申请是什么样的。这听起来像是你正在使用一个程序来移动你的机器人,但你不能真正信任它,所以你需要有能力进行干预。我不确定这个程序在这种情况下有什么用。问题是,在停止机器人之后,你该如何继续?你会校正你的物体的位置吗?不要误解我的意思,但到目前为止,听起来你也可以完全手动移动机器人。
你和什么类型的机器人一起工作?
# 5
你好DavidG,

再次感谢你。
这个解决方案首先出现在我的脑海中,但我想知道是否有可能用一行代码使用RoboDK API [setSpeed()函数中的加速]来实现。
# 6
我认为你可以用setSpeed命令做的最好的事情是将加速参数设置为低,这样你的斜坡函数就会变得相对平坦。我怀疑这个解决办法对你是否实用。移动时间将显著增加,我认为加速度参数可能受到所需速度和距离(即旅行时间)的限制。




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