参考
博客:ROS - 使用UR机械臂最新的 ur_robot_driver
官方:Universal_Robots_ROS_Driver
示教器的网络设置
在示教器中, 点击右上角的菜单->设置->系统->网络
选择静态地址, 设置IP地址如下所示
还需要在安装设置->现场总线->EtherNet/IP中选择禁用, 否则在roslaunch的时候会出错
设置PC的静态IP
将控制柜和PC的网口使用网线连接, 打开命令行输入:
$ ifconfig
显示:
里面的enp1s0就是机器人的控制柜, 此时还没有建立通讯
执行:
$ sudo vi /etc/network/interfaces
输入i
编辑, 将里面的内容修改为:
输入:wq
退出
按照这篇博客里的方法,执行
$ sudo vim /etc/resolv.conf
修改成:
重启电脑, 这时候右上角应该已经出现了有线连接的标志(如图enp1s0):
如果不行, 尝试输入:
sudo vi /etc/NetworkManager/NetworkManager.conf
将managed=false
改成managed=true
然后执行:
sudo /etc/init.d/networking restart
如果还是不行, 再次重启
设置完成后,输入ifconfig
显示是这样的:可以看到IP地址等信息, 进行下一步
提取机器人校准信息
首先需要校准, 否则误差会是厘米级, 运行后生成my_robot_calibration.yaml文件
该节点直接从机器人提取校准信息,计算URDF校正并将其保存到.yaml文件中
执行
$ roslaunch ur_calibration calibration_correction.launch \
robot_ip:=<robot_ip> target_filename:="${HOME}/my_robot_calibration.yaml"
我们这里更改成:
$ roslaunch ur_calibration calibration_correction.launch \
robot_ip:=192.168.56.2 target_filename:="/home/dingwu/my_robot_calibration.yaml"
路径和IP要设置正确
执行成功显示:
[ INFO] [1621390919.081809838]: Writing calibration data to "/home/dingwu/.ros/my_robot_calibration.yaml"
[ INFO] [1621390919.083105752]: Wrote output.
[ INFO] [1621390919.083264962]: Calibration correction done
对应的文件夹下生成了my_robot_calibration.yaml
文件
复制my_robot_calibration.yaml
文件至U盘, 然后插到示教器头上去
弹出来问你是否格式化选择否!(555)
然后在示教器中, 点击右上角的菜单->设置->系统->URCap
点击页面下方的+号
选择复制的文件打开, 可以看到External Control已经添加进去了
新建一个程序, 在URCaps选择External Control添加进去
执行roslaunch
确定连接到enp1s0之后, 执行
$ roslaunch ur_robot_driver <robot_type>_bringup.launch robot_ip:=192.168.56.101 \
kinematics_config:=$(rospack find ur_calibration)/etc/ur10_example_calibration.yaml
<robot_type>对应机器人型号
IP改成机器人的IP
后面的那一大串路径改成刚刚生成的校准文件路径
这里我改成了
$ roslaunch ur_robot_driver ur5e_bringup.launch robot_ip:=192.168.56.2 \
kinematics_config:=/home/dingwu/my_robot_calibration.yaml
执行的时候如果出现了:
Variable 'speed_slider_mask' is currently controlled by another RTDE client.
可以参考issue1和issue2
就是说禁用EtherNet/IP就行了(上面有说过)
执行roslaunch的时候, 在示教器上运行程序, 连接成功,出现
Robot ready to receive control commands.