使用的版本是 Ubuntu18.04 + ROS melodic + UR3(CB3.12)
因为后续需要使用手控器,手控器的驱动需要在Ubuntu18.04下才可以使用。
这篇文章是电脑上的设置,关于示教器的配置可以参考: UR机械臂学习(5-1):驱动真实机械臂准备工作——示教器配置
这里需要 特别说明 的是:
-
ur_driver
和ur_modern_drive
都已经停止更新,对于使用新版本 CB3 和 e-Series 控制器的机械臂都应当使用ur_robot_driver
作为驱动. -
更重要的是,
ur_robot_driver
和ur_modern_drive
不一样,不要下载universal_robot
,而应该下载fmauch_universal_robot
-
另外需要注意的是
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_robot
和universal_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界面左下角的MotionPlanning
的Planning
里将Planning Group
选为manipulator
这样就出现末端执行器,可以移动,然后就可以规划了(原选项是end effector,而且没有末端执行器可以移动)
-
在rviz界面左上角的
Dispaly
的Planed Path
里将Loop Animation
取消勾选
这样规划过程就不会一直循环啦,至此就和之前用universal_robot
的仿真过程完全一样啦
-
最最需要注意的是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_graph
、rqt_plot
功能显示信息图
rosrun rqt_graph rqt_graph
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