ur_modern_driver翻译README.md

# ur_modern_driver

这是UR机器人系列UR3/UR5/UR10机械臂的新驱动。这个驱动替换了原来的旧驱动,解决掉一些旧驱动无法解决的问题,同时提高了使用性以及和ros_control的兼容性。

## 提升性能

* 当机械臂正在执行运动时,可以有但只能有一个脚本同时作用机械臂,这意味着在驱动连接上时,示教器也能移动机械臂。
* 新驱动覆盖了原先驱动的所有功能:
  * action接口"/follow_joint_trajectory"与MoveIt无缝契合
  * 在"/joint_states"话题上发布机器人关节状态
  * 在"/wrench"话题上发布TCP力以及力矩
  * 在"/ur_driver/io_states"话题上发布IO状态
  * 使用rosservice call可以设置outputs和payload(注意:我不确定设置的payload是否能实际上起作用)
 
* 除此之外,新驱动订阅了两个新话题:
  * /ur_driver/URScript :消息类型为"std_msgs/String",直接转发给机器人。注意:这个话题上的输入没有做任何控制,所以使用时自担风险!被用来直接向机器人发送MoveL/MoveJ指令。
  * /joint_speed :消息类型为"trajectory_msgs/JointTrajectory"。解析第一个JointTrajectoryPoint并将指定的关节速度和加速度发送给机器人。该接口用于进行视觉伺服和其他需要速度控制而非机器人位置控制的控制。记住需要给6个关节都设置值,忽略字段joint_names,按正确的顺序设置值。
 
* 添加了对ros_control的支持
  * 由于ros_control希望始终控制机器人,因此在启动时通过参数设置ros_control的兼容性。
  * 当ros_control处于活动状态时,驱动程序不会打开action_lib接口,也不会发布joint_states或wrench msgs。这是由ros_control处理的
  * 目前有两个控制器可用,它们都可以控制机器人的关节位置,可用于执行轨迹。
    * 基于速度的控制器,使用speedj命令向机器人发送关节速度命令;
    * 基于位置的控制器,使用servoj命令向机器人发送关节位置命令;
    * 到目前为止我只使用了基于速度的控制器,但哪一个最佳取决于应用。
  * 当ros_control持续控制机器人时,在控制器运行时使用示教器将导致**机器人**上的控制器崩溃,因为它显然无法处理来自两个控制源有冲突的控制输入。因此,在通过示教器移动机器人**之前**,请务必停止正在运行的控制器。
    * 通过命令$ rosservice call /controller_manager/list_controllers {} 调用controller_manager可以找到已加载和运行的控制器的列表。
    * 想要停止运行位置轨迹控制器可以通过调用$ rosservice call /universal_robot/controller_manager/switch_controller 'start_controllers:-' 'stop_controllers:- 'pos_based_pos_traj_controller 'strictness:1'(记住你可以使用/table键补全)
    
## 安装

**注意:驱动程序通过以太网与机器人通信并建立可靠的连续通信,但无法从虚拟机可靠地控制UR**
* 只需要将驱动程序包复制到工作空间文件夹中,然后用'catkin_make'编译就行。
* 注意这个包依赖于ur_msgs,hardware_interface和controller_manager

## 用法

* 该驱动程序旨在替代'ur_driver'包。它不会覆盖您当前的驱动程序,因此您可以使用并测试此程序包,而不会有破坏当前设置的风险。
* 如果你想在当前配置下测试该驱动,只需要使用这个程序包中修改了的launch文件就行,而不是ur_bringup文件夹中的launch文件。
* 如果你想用这个包连接硬件,你只需要运行下面的launch文件:
  * $ roslaunch ur_modern_driver ur××_bringup.launch robot_ip:=ROBOT_IP_ADDRESS

* 如果想运行MoveIt规划并执行机械臂的运动,只需要在启动上面的文件后执行下面的命令就行:
  * $ roslaunch ur××_moveit_config ur5_moveit_planning_executing.launch
  * $ roslaunch ur××_moveit_config moveit_rviz.launch config:=true
---
如果你要用ros_control控制机械臂,就启动ur××_ros_control.launch文件。
**注意:**如果使用ros_control方法,就需要ur_driver包里的两个包,把它们复制到工作空间的/src文件夹下面:
  * ur××_moveit_config
  * ur_description
 
* 该驱动器目前支持两个位置轨迹控制器; 基于位置和基于速度。它们都是通过launch文件加载的,但它们同时只有一个可以运行。默认情况下,启动基于速度的控制器。 您可以通过调用适当的service来切换控制器:
```
rosservice call /universal_robot/controller_manager/switch_controller
start_controllers:
- 'vel_based_pos_traj_controller'
stop_controllers:
- 'pos_based_pos_traj_controller'
strictness: 1"
```

在启动一个新控制器**之前**确保已停止了正在运行的控制器,否则将启动失败。

基于位置的控制器*应该*更接近所需的路径,而基于速度的反应更快(轨迹执行在50-70毫秒内开始,而位置在150-180毫秒范围内。非ros_control驱动以及旧驱动也在170毫秒范围内,正如我在闪电话题@ROSCon2013中提到的那样。

**注意:**到目前为止,PID值没有得到最佳调整。
如果要将ros_control和MoveIt一起使用,先确保将期望的控制器添加到```controllers.yaml````文件中,该文件在ur××_moveit_config/config文件夹中,添加内容如下:
```
controller_list:
 - name: /vel_based_pos_traj_controller #or /pos_based_pos_traj_controller
   action_ns: follow_joint_trajectory
   type: FollowJointTrajectory
   default: true
   joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint
```

# 使用tool0_controller
UR系列的每个机器人都是单独校准的,因此在URDF模型中的末端执行器和控制器本身的末端执行器之间存在有个小误差(大约为毫米)。
该驱动在base_link和end_effector中间进行广播tf,默认的frame名为:*base* 和 *tool0_controller*。
要在URDF里添加*tool0_controller*,需要一个连接到*base*的名称的link,例如:
```



 
 
 

```
至此,*base*和*tool0_controller*之间的实际转换将不会由*robot_state_publisher*发布,但将通过*/tf*从此驱动程序中获取。
注意:需要将*robot_state_publisher*的版本更新,才能处理浮点型关节值,see: https://github.com/ros/robot_state_publisher/pull/32

## 兼容性
兼容于所有最新固件的机器人和控制箱。

#Credits
如果使用本驱动请引用以下报告:
@techreport{andersen2015optimizing,
  title = {Optimizing the Universal Robots ROS driver.},
  institution = {Technical University of Denmark, Department of Electrical Engineering},
  author = {Andersen, Thomas Timm},
  year = {2015},
  url = {http://orbit.dtu.dk/en/publications/optimizing-the-universal-robots-ros-driver(20dde139-7e87-4552-8658-dbf2cdaab24b).html}
  }
该报告可从下面url下载:http://orbit.dtu.dk/en/publications/optimizing-the-universal-robots-ros-driver(20dde139-7e87-4552-8658-dbf2cdaab24b).html

 

你可能感兴趣的:(readme,翻译,ROS)