Ubuntu与实体UR3_e机械臂通讯以及出现的问题

10 篇文章 3 订阅
7 篇文章 0 订阅

下载必要代码和编译

cd catkin_ws/src
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git
# clone fork of the description to use the calibration feature  # -b表示下载分支
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git

# install dependencies
$ sudo apt update -qq  # -qq 不输出信息,错误除外
$ rosdep update
cd ..
$ rosdep install --from-path src --ignore-src -y  #-y 表示[yes/no]的问题选择yes

# build the workspace
$ catkin_make

# activate the workspace (ie: source it)
$ source devel/setup.bash

连接过程和注意事项

按照官方给的教程先安装好External Control 插件。下一步进行IP通讯设置。

  1. 设置External Control 插件IP,设置为192.168.1.101,端口为50002,IP名随意
    在这里插入图片描述
    在这里插入图片描述
    设置后,长的样子
    在这里插入图片描述
  2. 设置机器人静态IP为:192.168.1.102和子网掩码:255.255.255.0
    在这里插入图片描述
  3. 设置自己电脑静态IP:192.168.1.101
    注:设置的IP必须在一个网段。
  • UR机械臂IP:192.168.1.101
  • UR控制柜IP:192.168.1.102
  • 自己电脑IP: 192.168.1.101
  1. 看到自己电脑右上角的有线网连接上了,通过ping 192.168.1.102,可以看到已经连接到机器人了
    在这里插入图片描述
    5.启动命令,可以在Rviz中看到机械臂实体的样子
    第一步是按照官网进行标定,否则会报错。
启动命令
5. 通讯
roslaunch ur_robot_driver ur3e_bringup.launch robot_ip:=192.168.1.102 kinematics_config:=${HOME}/my_robot_calibration.yaml
其中最后标定依照官方标定进行标定
6. 在机器人示教面板上启动程序
7. 规划
roslaunch ur3_e_moveit_config ur3_e_moveit_planning_execution.launch limited:=true
8. 显示
roslaunch ur3_e_moveit_config moveit_rviz.launch config:=true
9. 控制-基于面板的拖动关节控制程序,先安装包
rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller 

遇到问题及解决办法

  1. 机械臂启动上电时出现,示教板出现机器人与joint通讯失败,试了几下,是因为机械臂和控制柜连接线松动原因。
  2. 驱动和包使用地址和UR其他系列不一样;
https://github.com/UniversalRobots/Universal_Robots_ROS_Driver
  1. 在driver编译时有问题,更改将src/ur_hardware_interface.cpp中的内容。原链接如下
https://github.com/iron-ox/ur_modern_driver/commit/883070d0b6c0c32b78bb1ca7155b8f3a1ead416c
  1. 和实体机械连接是出现action问题
[ WARN] [1615022668.464013680]: Waiting for /joint_trajectory_action to come up
[ WARN] [1615022674.464729845]: Waiting for /joint_trajectory_action to come up
[ERROR] [1615022680.465466755]: Action client not connected: /joint_trajectory_action

这部分困扰了我很久,网上也一直没有查到解决方法,经研究其问题是配置moveit时的控制器文件controllers.yaml中找不到名字空间对应的控制器。从官网下载后显示为如下:

controller_list:
  - name: ""
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint

在运行driver驱动机械臂后,查看toplic如下,没有**"/follow_joint_trajectory"**的话题,难怪失败.

txt@txt-CN15S:~/Desktop$ rostopic list 
/joint_group_vel_controller/command
/joint_states
/pos_joint_traj_controller/command
/pos_joint_traj_controller/follow_joint_trajectory/cancel
/pos_joint_traj_controller/follow_joint_trajectory/feedback
/pos_joint_traj_controller/follow_joint_trajectory/goal
/pos_joint_traj_controller/follow_joint_trajectory/result
/pos_joint_traj_controller/follow_joint_trajectory/status
/pos_joint_traj_controller/state
/rosout
/rosout_agg
/scaled_pos_joint_traj_controller/command
/scaled_pos_joint_traj_controller/follow_joint_trajectory/cancel
/scaled_pos_joint_traj_controller/follow_joint_trajectory/feedback
/scaled_pos_joint_traj_controller/follow_joint_trajectory/goal
/scaled_pos_joint_traj_controller/follow_joint_trajectory/result
/scaled_pos_joint_traj_controller/follow_joint_trajectory/status
/scaled_pos_joint_traj_controller/state
/speed_scaling_factor
/tf
/tf_static
/ur_hardware_interface/io_states
/ur_hardware_interface/robot_mode
/ur_hardware_interface/robot_program_running
/ur_hardware_interface/safety_mode
/ur_hardware_interface/script_command
/ur_hardware_interface/set_mode/cancel
/ur_hardware_interface/set_mode/feedback
/ur_hardware_interface/set_mode/goal
/ur_hardware_interface/set_mode/result
/ur_hardware_interface/set_mode/status
/ur_hardware_interface/tool_data
/wrench

解决方法: 将名字改为已有的控制器scaled_pos_joint_traj_controller,如下所示

controller_list:
  - name: scaled_pos_joint_traj_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint
  1. 建立仿真模型不能和gazebo联动
  • 这是由于在没有将moveit仿真控制器发送到gazebo控制器的原因.
  • 如我自己的moveit config 和gazebo包里控制器为:
moveit 控制器

controller_list:
  - name: ur3_e_controller
    action_ns: follow_joint_trajectory
    default: True
    type: FollowJointTrajectory
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint
  - name: robotiq_controller
    action_ns: follow_joint_trajectory
    default: True
    type: FollowJointTrajectory
    joints:
      - gripper_finger1_joint

gazebo控制器
arm_controller:
  type: position_controllers/JointTrajectoryController
  joints:
     - shoulder_pan_joint
     - shoulder_lift_joint
     - elbow_joint
     - wrist_1_joint
     - wrist_2_joint
     - wrist_3_joint
     - 
gripper:
  type: position_controllers/JointTrajectoryController
  joints:
     - gripper_finger1_joint
  constraints:
      goal_time: 0.6
      stopped_velocity_tolerance: 0.05
      gripper_finger1_joint: {trajectory: 0.1, goal: 0.1}
  stop_trajectory_duration: 0.5
  state_publish_rate:  25
  action_monitor_rate: 10
  • 注意名字ur3_e_controller和arm_controller对应, robotiq_controller和gripper对应.
  • 解决方法为映射关系,在launch文件中添加如下代码
  <!-- Remap follow_joint_trajectory -->
  <remap if="$(arg sim)" from="/ur3_e_controller/follow_joint_trajectory" to="/arm_controller/follow_joint_trajectory"/>
  <remap if="$(arg sim)" from="/robotiq_controller/follow_joint_trajectory" to="/gripper/follow_joint_trajectory"/>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值