您的位置:首页 > 其它

RoboWorks/RoboTalk学习笔记1

2016-07-26 17:14 260 查看
先给出网站链接,需要的安装包都可以下载到。我下了三个,RoboWorks/RoboTalk/RoboChat,时间原因,先介绍前两个,也是最重要的。
http://www.newtonium.com/
下载一个免费版的Demo就可以了,我主要用它仿真,看到在例子中有Kuka的六自由度机械手,就基本都我使用了。大家要是有别的需求,就只能购买了吧,反正我是买不起啦~

好,进入正题,其实只要认真看安装路径下的手册,也就不用在往下看了,手册最全,毕竟人家是软件的生产商。





一、界面和建模(简介)

见手册,里面有例子,照做即可。树状图中,ctrl+A添加部件。各种部件的参数设置都很显然。

模型可以  自建  或者第三方软件(我使用SolidWorks)生成  XXX.stl  文件导入。

sample文件夹中有很多例子,附图几个。鼠标操作上默认是旋转拖动视图,缩放功能启用(右键->interactive mode->zooming)。





部件的运动有两种,平移(translation)和旋转(rotation)

运动参数设置为静态(static)用于建模,设置为动态(dynamic)用于仿真(simulation),重点说一下仿真。

关节仿真的运动控制三种方式:1键盘,2xxx.dat文件(使用txt或其他就可以生成),3通过RoboTalk.dll编程控制

1.键盘



Key Selecton可以选择触发按键,ONE表示按键的“1”,也可选ABC...随意

点击ok之后就可以使用ONE键来控制部件运动(没有仿真按钮,也不需要按任何键)

2.xxx.dat文件

上图中的Tag Name要自定义为相应的名称。在手册中有一个“行星模型”例子,我使用txt编辑的.dat文件如下

yellow red
bronze blue

10 -6 -2
5

20 -12
-4 10

30 -18
-6 15

40 -24
-8 20

50 -30
-10 25

60 -36
-12 30

70 -42
-14 35

80 -48
-16 40

90 -54
-18 45

100 -60
-20 50

110 -66
-22 55

120 -72
-24 60

130 -78
-26 65

140 -84
-28 70

150 -90
-30 75

160 -96
-32 80

170 -102
-34 85

180 -108
-36 90

190 -114
-38 95

200 -120
-40 100

方便需要的人copy就不附图啦。首行就是各个部件的Tag Name,以下参数是位置。

然后菜单中 animation->from file->选择之,后续步骤显然,OK。

3.通过RoboTalk.dll编程控制(使用VC++2012)

需要在RoboTalk安装路径下找到(三个勾文件下中)可以参看demos中的例程,运行以下,看效果,再阅读代码,然后自己组织一遍语句



三个文件如下



新建控制台程序在工程目录下(使用的是RoboTalkExample.scn为例,也一起放到工程中,这个不影响。可在demos中找到它),将RoboTalk.dll放在Debug里,和生成的exe放一起。

后两者皆放在xxx.vcxproj这级文件夹下。

添加头文件(头文件->右键->添加->现有项->选之),添加代码如下

#include "stdafx.h"
#include "RoboTalk.h"
#pragma comment(lib,"RoboTalk.lib")

char* TagNames[] = {
"rot_cylinder_z",
"cylinder_x",
"rot_cone_z",
"cone_x"};

int _tmain(int argc, _TCHAR* argv[])
{
int i = 0, noTimes = 0, count = 0;
char filename[] = "RoboTalkExample"; // this is not case-sensitive
float tagValues[4], transIncrm = 0.1f;
char *ipAddress;
ipAddress = SELF; // default 127.0.0.1
printf("\n");
printf_s(ipAddress);
printf("\nready!\n");
tagValues[0] = 0.0;
tagValues[1] = 0.0;
tagValues[2] = 0.0;
tagValues[3] = 0.0;

// connect to RoboWorks
if(RT_Connect(filename, ipAddress) == CONNECT_FAILED)
return 0;
// move the cylinder and the cone in opposite directions
for(i = 0; i < 100; i++)
{
tagValues[1] += transIncrm;
tagValues[3] -= transIncrm;

// send the values out to roboWorks
RT_SetTagValues(TagNames, tagValues, 4);
}
// start rotating the cylinder and the cone while moving
// them in and out
for(noTimes = 0; noTimes < 1000; noTimes++)
{
if(count == 500)
{
count = 0;
transIncrm = -transIncrm;
}

tagValues[0] += 1.0f;
tagValues[1] += transIncrm;
tagValues[2] -= 1.0f;
tagValues[3] -= transIncrm;

// send the values out to roboWorks
RT_SetTagValues(TagNames, tagValues, 4);
count++;
}

RT_Disconnect();
return 0;
}


包含的头文件和调用RoboTalk.dll的方法。
#include "RoboTalk.h"

#pragma comment(lib,"RoboTalk.lib")

运行:

先打开RoboTalkExample.scn

animation->from IPC

运行对应的exe

RoboTalk.dll中的主要四个函数:

RT_Connect
RT_SetTagValues
RT_GetTagValues
RT_Disconnect
帮助文档      file:///C:/Program%20Files%20(x86)/Newtonium/RoboTalk/RoboTalk.html

有待解决的问题

1.如果要从另一台机器控制某一台机器上的机器人,ipAddress要怎么设置。

2.MATLAB和LABVIEW怎么何其配合。主要是MATLAB,想使用它求解然后仿真。

最后,谢谢这几年老师教的英语。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: