文章目录
- 前言
- 一、RobotGuide是什么?
- 二、实现步骤
- 创建机器人工作单元
- 导入程序
- TP程序
- Karel程序
- 构建程序
- 配置控制柜
- 配置机器人控制柜通讯
- 配置可同时运行程序数量
- 配置ROS_RELAY变量
- 配置ROS_STATE变量
- 设置启用标志
- 三、测试
- 机器人状态反馈
- 机器人命令接收
- 整体运行测试
- 总结
前言
本文用来记录如何配置Fanuc机器人控制器ros驱动,目的是后续实现ROS2控制实体机器人运动。
官方指导如下:
ROS-Industrial Fanuc support
一、RobotGuide是什么?
Fanuc RobotGuide是由日本知名机器人制造商Fanuc提供的机器人仿真软件。该软件使用简单、直观,用户无需具备专业的编程技能即可轻松地进行机器人编程和仿真。通过Fanuc RobotGuide软件,用户可以创建3D模型,对机器人进行动态仿真,实现机器人运动轨迹的仿真、路径规划和碰撞检测等功能。可以大大提高机器人编程的效率和精度。
Fanuc RobotGuide还提供了超过100多种不同厂家的机器人模型,用户可以根据需要进行选择,配合不同的设备及工具,实现各种不同生产任务。除此之外,还支持离线编程,可以提前对机器人进行程序测试和修改,在实际应用中可以大大减少机器人停机时间,提高生产效率。
在本文,我们将使用RobotGuide来配置机器人及测试运行。
二、实现步骤
创建机器人工作单元
此处可以看到红框圈中的两个软件选项是必须的,其它打勾项是生成完成后系统自己勾选,保持默认即可。
导入程序
TP程序
Fanuc ros提供的驱动路径如下,任意选择其一下载到本地,注意选择分支为melodic-devel:
Gitee加速地址
Github地址
这里程序分为两种,一种是ls的TP程序,一种是ls的karle程序,选择文件右键点击添加,导入如下路径下的文件
Karel程序
另一种为Karel程序,路径如下所示:
构建程序
导入后文件应当如下图左侧所示,之后选择菜单栏——项目——构建——全部
构建成功则如下所示,出现Translation successful
字样,同时生成.pc
文件,生成的文件也是后续需要使用U盘导入机器人控制柜的程序。
配置控制柜
配置机器人控制柜通讯
进入如下菜单:
点击显示切换至服务器
配置3、4号标签如下两张图所示 (1、2号标签不要动它)
通过下边步骤启动这两个协议:
动作——定义、动作——开始,则可以看到这两个协议的状态变换为已开始
配置可同时运行程序数量
进入系统变量设置,如下图:
选择SCR_T并按Enter
将如下参数修改为大于3的数,因为后续同时需要运行下边三个程序
- 机器人当前状态及轴角度发送
- 接收机器人运动控制及状态切换指令
- 执行机器人运动指令
配置ROS_RELAY变量
打开程序按照如下图:
SELECT——KAREL程序——ROS_RELAY
配置变量如下步骤:
DATA——KAREL变量——RRELAY_CFG_T——ENTER
配置参数如下:
Name | Type | Default | Unit | Description |
---|---|---|---|---|
checked | boolean | False | - | Configuration has been completed by user |
f_msm_rdy | integer | 1 | - | movesm i’face: ‘ready/ack’ signal flag |
f_msm_drdy | integer | 2 | - | movesm i’face: ‘data ready’ signal flag |
loop_hz | integer | 42 | Hz | Main loop update rate |
move_cnt | integer | 50 | % | CNT to set with each joint motion instruction |
move_speed | integer | 20 | % | Joint speed to set for all trajectory points |
pr_move | integer | 1 | - | movesm i’face: position register for next trajectory point |
r_move_spd | integer | 1 | - | movesm i’face: integer register for motion speed |
r_move_cnt | integer | 2 | - | movesm i’face: integer register for CNT value |
s_tcp_nr | integer | 11000 | - | TCP port to listen on |
s_tag_nr | integer | 4 | - | Index of the Server Tag to use |
um_clear | boolean | True | - | Clear user menu on start |
- default configuration of
ros_relay
配置ROS_STATE变量
同ROS_RELAY相同,选择程序后配置变量
变量具体值如下图所示
Name | Type | Default | Unit | Description |
---|---|---|---|---|
checked | boolean | False | - | Configuration has been completed by user |
loop_hz | integer | 42 | Hz | Main loop update rate |
sloop_div | integer | 10 | - | Divider for robot_status reporter loop |
s_tcp_nr | integer | 11002 | - | TCP port to listen on |
s_tag_nr | integer | 3 | - | Index of the Server Tag to use |
um_clear | boolean | True | - | Clear user menu on start |
- default configuration of
ros_state
设置启用标志
在上述信息均设置完成后,设置 ros_state
及ros_relay
中的checked变量为True
三、测试
机器人状态反馈
测试机器人状态,轴关节角度及其他参数:
使用SHIFT
+FWD
启动程序,此时程序即在监听11002端口
这里我使用的软件是sokit,通过该软件方便测试tcp socket server/client
通讯建立成功,并且返回了机器人关节数据
机器人命令接收
运行ROS_RELAY
可以接收机器人发送的轨迹点数据,端口为11000
通讯建立成功并且数据发送成功
整体运行测试
启动程序后台自动运行:
即可同时运行发送机器人当前状态,接受机器人运动轨迹,执行机器人运动轨迹三个程序(ros_state
、ros_relay
、ROS_MOVESM
)
转换结果按照弧度发送,解析后如下所示
机器人当前各个轴角度如下图最下边所示,分别为:
Degree: A1 -40 A2 30 A3 5 A4 0 A5 -95 A6 40
Arc: A1 -0.698 A2 0.52 A3 0.087 A4 0 A5 -1.658 A6 0
建立通讯后所接收到的完整socket数据包如下:
38 00 00 00 0A 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 C2 B8 32 BF 92 0A 06 3F C0 B8 B2 3D 00 00 00 00 67 3B D4 BF C2 B8 32 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
通过[Online Hex Converter网站](Online Hex Converter - Bytes, Ints, Floats, Significance, Endians - SCADACore)解析:
总结
本文讲解了如何配置Fanuc机器人控制柜端的程序,后续会在此基础上讲解如何配置ROS端的软件程序。