修改

图片

迪威模型和Solidworks 联合会员
迪威网友bb1cf8
迪威网友bb1cf8

用于连接电位器的OWI-535适配器

免费,登录即可下载
发布时间:2024/1/13 8:00:00
OWI-535机器人是一款4轴玩具机器人,价格低廉,但很有趣。基本的工具包是远程控制,只有在你用拇指杆运行每个轴的地方。有一个USB套件,可以让你在电脑上运行电机,你可以写一些类似脚本的小程序,但它只相当于定时移动。

问题是,要一遍又一遍地重复一个序列,你需要关节角度反馈,因为定时的移动会在每次移动中积累误差。OWI-535没有任何反馈传感器。我受到了这个项目的启发。我在这里上传的这组适配器允许您在1到4的接头上安装电位器,并有一个开关来检测夹爪的“打开”状态。你可以通过使用相同的螺丝将OWI-535上的现有部件更换为这些部件来安装这些部件,并且您不必不可逆转地修改机器人。如果你愿意,你随时可以把它放回工厂的状态。

我工作的是一个基于Arduino UNO的控制系统,它可以进行反向和正向运动学,这样你就可以在X和Y(向外/向后和向上/向下)方向上慢跑关节2到4。然而,我已经让项目搁置了很长一段时间,没有时间完成它,所以我决定上传部分,这样其他人可能就有机会在它的基础上进行建设。

电位器是从泰达购买的便宜的B5K类型。作为参考,锅的全长为27.6 mm,到旋钮末端的“安装面”为17 mm,旋钮直径约为6 mm,电阻为5k欧姆。

夹爪打开的开关是从RobotShop购买的,部件号RB-ALL-41,每包10个。

作为参考,我使用了Adafruit电机/步进器/伺服屏蔽套件(产品81,不幸已停产)来控制电机。它可以连接到控制多达四个5V的业余爱好电机。手臂上的马达只有3V,所以我确保永远不会给它超过全尺寸的3/5或60%的指令。因为它只有4个输出,但OWI-535有5个电机,我使用了一个继电器来切换第四个电机输出之间的控制关节4或夹爪。无论如何,当你打开或关闭夹爪时,你永远不会移动手臂,所以这个方法是有效的。

如果您更喜欢使用USB工具包来控制马达,而不是Arduino,那么您可以使用我编写的一个示例C#项目从C#轻松控制马达。然后你必须拿到电位器并将传感器切换回C#,这样你就可以使用像Phim get这样的东西了。

在Arduino的C中,正向运动学(使用从关节2到4的关节角度读数来计算相对于J2中心的X(向外)和Y(向上)方向的夹爪位置)相当简单:

常量浮点数J2_to_J3_MM=90.0;
常量浮点数J3_to_J4_MM=110.0;
常量浮动J4_to_GRIPPER_MM=88.0;//当夹爪打开时,从J4中心到夹爪手指末端的距离

//下面是J2、J3和J4的正运动学方程。
//请注意,点0,0被认为是关节J2的中心。
//正X水平远离底座
//正Y垂直向上
//我们要计算的是
//夹爪手指(处于打开位置时)
AngleSum=j2弧度;
_j3Position.x=sin(AngleSum)*j2_to_j3_MM;
_j3Position.y=cos(AngleSum)*j2_to_j3_MM;

AngleSum=j3弧度;
_j4Position.x=_j3Position.x cos(AngleSum)*j3_to_j4_MM;
_j4Position.y=_j3Position.y-sin(AngleSum)*j3_to_j4_MM;

AngleSum=j4弧度;
_toolActual.pos.x=_j4Position.x cos(AngleSum)*j4_to_GRIPPER_MM;
_toolActual.pos.y=_j4Position.y-sin(AngleSum)*j4_to_GRIPPER_MM;
_TOOLActual.angleDegrees=radToDeg(AngleSum);

反向运动学(计算所需的J2、J3和J4角度以获得所需的夹爪X、Y和角度位置)如下:

Boolean Robot::InverseKinematics(coordTool工具设置点){
Coord2D工具位置=工具设置点.pos;
Float angleDegrees=工具设置点.angleDegrees;
浮点angleSum;
坐标2D j4位置;

//我们必须在这里做逆运动学方程。
//目标是根据给定的关节角度计算关节角度
//位置和角度。
AngleSum=des ToRad(AngleDegrees);
J4Position.x=ToolPosition.x-cos(AngleSum)*j4_to_GRIPPER_MM;
J4Position.y=ToolPosition.y sin(AngleSum)*j4_to_GRIPPER_MM;

//现在查找J4所在位置的极坐标
Float j2toj4=SQRT(j4Position.x*j4Position.x j4Position.y*j4Position.y);//dist。
Float j4AngleFromJ2=atan2(j4Position.y,j4Position.x);

//快速查看,确保可以到达
IF(j2toj4>=J2_to_J3_MM J3_to_J4_MM){
_TOOLSetPointtValid=FALSE;
//没有..。
报假;
}

//现在设想一个三角形,它的顶点是:
//1、原点(J2中心)
//2.J3的中心
//3.沿j2toj4的某个点(称为P),使得P-j3垂直于j2toj4
//计算原点到P的长度:
浮动pdist=(j2toj4(j2_to_j3_MM*j2_to_j3_MM/j2toj4)-(j3_to_j4_MM*j3_to_j4_MM/j2toj4))/2.0;
浮动pDist2=j2toj4-pdist;
//然后计算j2toJ4和j2_to_j3之间的夹角
浮动临时角度=acos(pDist/j2_to_j3_MM);
浮动tempAngle2=acos(pDist2/j3_to_j4_MM);

//现在我们可以计算角度了
浮动j2弧度=PI/2.0-(临时角度j4AngleFromJ2);
浮动j3弧度=PI/2.0-(PI-临时角度-临时角度2);
_j2Degrees=radToDeg(J2Radians);
_j3Degrees=radToDeg(J3Radians);
_j4Degrees=angleDegrees-_j2Degrees-_j3 Degrees;

_TOOLSetPointtValid=TRUE;
返回真;
}

抓手控制很简单,只需“打开直到你按下开关”和“根据计时器关闭”。

对不起,我没有更完整的解决方案。这就是你的用武之地。你能找到这个很酷的小机器人的用处吗?
0个文件
压缩包大小:5MB
小程序二维码
微信小程序 微信扫码打开此模型
登录后发表评论
恒诺鑫科-专注碳素制品的开发与生产