UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂

使用的版本是 Ubuntu18.04 + ROS melodic + UR3(CB3.12)
因为后续需要使用手控器,手控器的驱动需要在Ubuntu18.04下才可以使用。

这篇文章是电脑上的设置,关于示教器的配置可以参考: UR机械臂学习(5-1):驱动真实机械臂准备工作——示教器配置

这里需要 特别说明 的是:

  1. ur_driverur_modern_drive都已经停止更新,对于使用新版本 CB3 和 e-Series 控制器的机械臂都应当使用 ur_robot_driver作为驱动.

  2. 更重要的是,ur_robot_driverur_modern_drive不一样,不要下载universal_robot,而应该下载fmauch_universal_robot

  3. 另外需要注意的是fmauch_universal_robot需要下载的是calibration_devel分支

# universal_robot的下载地址 (不要用这个)
git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git

# fmauch_universal_robot的下载地址
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git

所以驱动真实机械臂和我第4篇的仿真,是使用的不同的ur机械臂的包,也就是说这篇是新建的文件夹,和第4篇的文件夹没有任何关系

01 安装fmauch_universal_robot和驱动

# 这一步需要执行,或者写在bashrc里
# 不然最后catkin_make执行的时候会报错提示不知道ros版本
source /opt/ros/melodic/setup.bash

mkdir -p ur_ws/src && cd ur_ws

# 下载fmauch_universal_robot(注意分支)
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot

# 下载Universal_Robots_ROS_Driver驱动
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver

# 更新 -qq代表除非报错,否则不输出
sudo apt update -qq

sudo apt-get upgrade

# 更新依赖(这一步需要有梯子,不然可能会超时,超时执行下一步即可,只要一开始安装ros时执行成功过即可)
rosdep update

# 安装依赖 -y表示出现 y/N选项 直接执行y
rosdep install --from-paths src --ignore-src -y

# 编译
catkin_make

# 激活当前工作空间,并写入
echo "source ~/ur_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

注意:

  • 一定要安装fmauch_universal_robot而不是universal_robot,因为fmauch_universal_robot才和ur_ROS_Driver是匹配的,不然之后驱动真实机械臂时,会说ur_description 文件夹里没有相应文件
  • 也不可以fmauch_universal_robotuniversal_robot两个都安装,因为这两个有很多文件夹名字是相同的,catkin_make时会报错。(最好不要都安装,但如果两个都安装了,catkin_make报错,可以把提示重复的文件夹删除
  • 一定要source /opt/ros/melodic/setup.bash,否则rosdep install --from-paths src --ignore-src -y时会报错,提示不知道ros版本

02 仿真

# 启动gazebo
# 注意是ur3_bringup.launch,而不是ur3.launch
roslaunch ur_gazebo ur3_bringup.launch

# 启动move it规划
roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch sim:=true

# 启动rviz
# 注意后面要给出rviz_config的地址
roslaunch ur3_moveit_config moveit_rviz.launch rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz

注意:

  • 这一部分需要特别注意的是,因为fmauch_universal_robot里面文件名字和universal_robot有所差别
    运行gazebo启动的是ur3_bringup.launch而不是ur3.launch

  • 这一部分另一个需要特别注意的是,执行最后一步,启动rviz时,不能直接roslaunch ur3_moveit_config moveit_rviz.launch,而需要给出rviz的地址rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz
    不然rviz的界面显示不出ur机械臂的模型图

  • 和之前universal_robot的仿真过程不一样,就是在rviz界面左下角MotionPlanningPlanning里将Planning Group选为manipulator
    这样就出现末端执行器,可以移动,然后就可以规划了(原选项是end effector,而且没有末端执行器可以移动)
    UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂_第1张图片

  • 在rviz界面左上角DispalyPlaned Path里将Loop Animation取消勾选
    这样规划过程就不会一直循环啦,至此就和之前用universal_robot的仿真过程完全一样啦
    UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂_第2张图片
    UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂_第3张图片

  • 最最需要注意的是gazebo和moveit里关于/scaled_pos_joint_traj_controller/follow_joint_trajectory控制器的名字不统一。
    所以要在/home/guyue/ur_ws/src/fmauch_universal_robot/ur3_moveit_config/launch下的ur3_moveit_planning_execution.launchl文件里进行修改。
    很多人的教程里都提出要修改这部分东西,但是因为驱动和fmauch一直在更新,所以和之前修改的方式有所不同。未来的修改方式可能又有所改变。
    具体可以参考UR机械臂学习(5-3):驱动ur机械臂实物——问题及解决 的问题5
    看一下分析过程,也就明白为什么要这样修改了。

# ur3_moveit_planning_execution.launchl 第6行修改为
<remap if="$(arg sim)" from="/scaled_pos_joint_traj_controller/follow_joint_trajectory" to="/pos_joint_traj_controller/follow_joint_trajectory"/>

03 运行

3.1 启动rviz

# 01 启动bringup,建立与机械臂的连接
roslaunch ur_robot_driver ur3_bringup.launch limited:=true robot_ip:=192.168.56.10

# 02 启动示教器程序

# 03 启动moveit
# 仿真后面需要后面加 sim:=true
roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch limited:=true

# 04 启动rviz
roslaunch ur3_moveit_config moveit_rviz.launch rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz

这里需要 注意 的就是先启动bringup,再启动示教器

启动示教器后如果正常通信,会出现:

[ INFO] [1624885305.373017515]: Robot requested program
[ INFO] [1624885305.373077772]: Sent program to robot
[ INFO] [1624885305.839015623]: Robot connected to reverse interface. Ready to receive control commands.

3.2 启动rqt,单关节控制

# 01 启动bringup,建立与机械臂的连接
roslaunch ur_robot_driver ur3_bringup.launch limited:=true robot_ip:=192.168.56.10

# 02 启动示教器程序

# 03 启动rqt
rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller
# 或者 运行 rqt
# 然后选择 Plugins -> Robot Tools -> Controller Manager

04 一些补充

4.1 ur_calibration 提取标定信息

为了提高正向和逆向运动学精度,每个UR机器人在出厂前都进行了标定。
ur_calibration 是 Universal_Robots_ROS_Driver 中的一个功能包,能够提取机器人出厂标定的运动学参数,并更改 ur_description 包的配置文件以获取正确的URDF模型。

尽管使用此驱动程序控制机器人不是必须执行此步骤,但强烈建议您这样做,因为否则末端执行器的位置可能会出现厘米级偏差。

启动ur机器人,确保网络正常链接。然后启动节点 calibration_correction 。该节点直接从机器人提取标定信息,将其保存到.yaml文件中:

roslaunch ur_calibration calibration_correction.launch \
  robot_ip:=192.168.56.10 target_filename:="${HOME}/ur_ws/src/fmauch_universal_robot/ur_description/config/ur3_calibration.yaml"

# 之后每次启动bring up都启动这句
roslaunch ur_robot_driver ur3_bringup.launch robot_ip:=192.168.56.10 \
 kinematics_config:="${HOME}/ur_ws/src/fmauch_universal_robot/ur_description/config/ur3_calibration.yaml"

4.2 自带程序

运行其自带测试程序test_move.py可以移动机械臂

rosrun ur_robot_driver test_move.py

4.3 信息图

使用rqt_graphrqt_plot功能显示信息图

rosrun rqt_graph rqt_graph

UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂_第4张图片

4.4 修改bring up文件

启动bring up

roslanuch ur_robot_driver ur3_bringup.launch limited:=true robot_ip:=192.168.56.10
  • 避免每次启动都要填写ip地址,可以修改ur3_bringup.launch中的默认参数
<arg name="robot_ip" default="192.168.1.0">
  • 此外,可以修改本文件中的一些参数,以实现机器人的不同动作效果,如机器人动作速度。
    首先要将use_lowbandwidth_trajectory_follower设置为true
    再将time_interval设置为0.004或者更低即可
    设置的过低可能会导致控制的轨迹追踪产生问题

05 参考

  • 合工大机器人实验室:https://blog.csdn.net/qq_34935373/article/details/109238762
  • Ubuntu与实体UR3_e机械臂通讯以及出现的问题:https://blog.csdn.net/qq_39448233/article/details/109038004

你可能感兴趣的:(#,ur机械臂,ros,ur机械臂)