ROS Nonetic: 机械臂UR5 + RobotIQ FT300 传感器 配置

本文详细记录了在Ubuntu 20.04和ROS Noetic环境下,如何配置UR5机械臂并添加Robotiq FT300传感器的过程,包括下载ROSpackage、编译环境、自定义package、修改urdf和launch文件,以及验证和连接传感器的步骤。

今天需要使用 ROBOTIQ FT300的力/力矩传感器,所以记录一下自己的配置情况。

环境: Ubuntu 20.04, ROS Noetic

机械臂:UR5 (关于如何通过序列号判断UR型号,可以参照这里。)

工作空间名: ~/ur5_ws/

前提:已经安装 fmauch_universal_robot 和 Universal_Robots_ROS_Driver 模型和驱动2个packages。具体安装细节可以参见这里

操作步骤

  • Setp1: 下载robotiq的ros package
cd ~/ur5_ws/src
git clone https://github.com/jr-robotics/robotiq.git

Note: 因为https://github.com/ros-industrial/robotiq 中没有noetic release, 所以采用了上图中的git仓库。

  • Setp2: 编译环境
cd ur5_ws
sudo apt update -qq
rosdep update
rosdep install --from-paths src --ignore-src -y
catkin_make
source ~/ur5_ws/devel/setup.zsh

Note: 作者使用oh-my-zsh,故最后source的文件后缀为“.zsh”. 一般情况,用“.bash”即可。

Note: 如果不需要在Gazebo仿真器中添加力传感器,则可以直接跳转到Step 7.

  • Step3: 建立自己的package

        为了减小对fmauch_universal_robot 和 Universal_Robots_ROS_Driver源代码的修改,这里参考大家的做法,自己建立一个package,名为 myur5:

cd ~/ur5_ws/src
mkdir -p myur5
cd myur5
catkin_create_pkg myur5_description std_msgs rospy roscpp
catkin_create_pkg myur5_gazebo std_msgs rospy roscpp
catkin_create_pkg myur5_moveit_config std_msgs rospy roscpp
cd ~/ur5_ws
catkin_make
source ~/ur5_ws/devel/setup.zsh

Note: 这里是std_msgs是复数,有s. 不要问我怎么知道的,问就看这里

之后把fmauch_universal_robot/ur_description包中的关于ur5的文件按照同样的文件夹结构复制一份到 myur5_description. 之后针对自己应用的修改都可以在myur5_description中的代码上操作。同理,fmauch_universal_robot/ur_gazebo 和 fmauch_universal_robot/ur5_moveit_config 中关于ur5的文件夹也需要复制一份到 myur5_gazebo 和 myur5_moveit_config.

Note: 不要复制fmauch_universal_robot/ur_description等中的CMakeLists.txt 和 package.xml.

 在myur5_xxx的3个文件中,可以把一些 find ur_description、find ur_gazebo、find ur5_moveit_config的部分修改为find myur5_description、find myur5_gazebo 、find myur5_moveit_config。否则系统还是调用fmauch_universal_robot中的原始代码。

测试一下:

 roslaunch myur5_description view_ur5.launch 

如何看到机械臂就表示基本没啥问题。这个代码后面可以用来对比安装FT300后的机械臂。

  • Step4: 安装传感器

在 myur5_description/urdf中复制ur5.xacro,命名为ur5_robot_ft.xacro,并增加ft300的相关信息。

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="ur5_robot_ft">  
  <xacro:include filename="$(find myur5_description)/urdf/ur5.xacro"/>
  <xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro"/> 
  <!--robotiq_ft_sensor-->
  <xacro:robotiq_ft300 prefix="" parent="tool0">
      <origin xyz="0 0 0" rpy="0 0 0"/>
  </xacro:robotiq_ft300>
</robot>

Note:第3行,加载机械臂,第4行加载ft300,5-8行表征ft300和ur5的安装关系。

Note:  tool0是ur5机械臂的末端frame. ft300装在ur5末端。

  •  Step5: launch文件修改

        在~/ur5_ws/src/myur5/myur5_description/launch中先后增加(复制+修改)3个files:         view_ur5_ft.launch,load_ur5_ft.launch,load_ur_ft.launch. 内容分别是如下。

        view_ur5_ft.launch

<?xml version="1.0"?>
<launch>
  <include file="$(find myur5_description)/launch/load_ur5_ft.launch"/>

  <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find myur5_description)/cfg/view_robot.rviz" required="true" />
</launch>

        load_ur5_ft.launch              

<?xml version="1.0"?>
<launch>
  <!--ur5 parameters files -->
  (.....无需修改......)
  <!--common parameters -->
  (.....无需修改......)

  <!-- use common launch file and pass all arguments to it -->
  <include file="$(find myur5_description)/launch/load_ur_ft.launch" pass_all_args="true"/>
</launch>
Note: 就是修改最后一行 “$(find myur5_description)/launch/load_ur_ft.launch”,让系统加载load_ur_ft.launch.

        load_ur_ft.launch

<?xml version="1.0"?>
<launch>
  <!--ur parameters files -->
  (.....无需修改.....)
  <!--common parameters  -->
  (.....无需修改.....)

  <param name="robot_description" command="$(find xacro)/xacro '$(find myur5_description)/urdf/ur5_robot_ft.xacro'
    (.....无需修改......)
    />
</launch>

Note: 修改为“$(find myur5_description)/urdf/ur5_robot_ft.xacro”,即让系统加载第4步中新增的ur5_robot_ft.xacro文件。 

  • Step6: 最后效果

        改好后,打开末端,看一下效果,看看机械臂末端有没有多出ft300的模型。

roslaunch myur5_description view_ur5_ft.launch

        可以看到ft300

         再看看原先没有装ft300的机械臂样子,使用第3步中的代码

 roslaunch myur5_description view_ur5.launch 

        看到没有ft300.

  • Step7: ft300和PC之间连接

        找到ft300的连接线,有个VGA接头,如下图

         通过参考FT300 Instruction Manual(2018),

        完成传感器和UR控制盒之间的连线        

        

        可以找到最末端的USB接口,连接到PC.

  •  Step8: 读取ft300的数据

     0. 开放串口权限(开一个终端) 

# Linux串口是默认普通用户没有读写权限的
sudo chmod a+rw /dev/ttyUSB0
  1. 开一个终端(Ctrl+Alt+T)(a.k.a. T1):开启ros master
roscore

      2. 开一个终端(Ctrl+Alt+T)(a.k.a. T2): 开启rq_sensor node (路径:~/ur5_ws/src/robotiq/robotiq_ft_sensor/nodes)--这是publisher/talker, 往/robotiq_ft_sensor和/robotiq_ft_wrench两个topics发布信息。

rosrun robotiq_ft_sensor rq_sensor

        如果第7步连接没有问题,那么会看到如下的信息。 

$ rosrun robotiq_ft_sensor rq_sensor
[ INFO] [1650284097.356151697]: No device filename specified. Will attempt to discover Robotiq force torque sensor.
[ INFO] [1650284098.040120336]: Waiting for sensor connection...
[ INFO] [1650284099.182842730]: Sensor connected!
[ INFO] [1650284100.260359416]: Starting Sensor

     Note: 这个时候可以发现FT300的灯变成蓝色,表示连接正常,ready。

     3. 开一个终端(Ctrl+Alt+T)(a.k.a. T3): 查看topic实时数据

rostopic echo /robotiq_ft_sensor

    4. 开一个终端(Ctrl+Alt+T)(a.k.a. T4),打开subscriber/listener.

rosrun robotiq_ft_sensor rq_test_sensor

        可以看到从/robotiq_ft_sensor中获得信息:

...
[ INFO] [1650286760.040227612]: I heard: FX[0.020000] FY[0.020000] FZ[-0.030000] MX[0.000000] MY[0.001000] MZ[0.000000]
[ INFO] [1650286760.052497302]: I heard: FX[0.010000] FY[0.040000] FZ[0.040000] MX[0.000000] MY[0.000000] MZ[0.000000]
[ INFO] [1650286760.068783576]: I heard: FX[0.040000] FY[0.040000] FZ[-0.030000] MX[-0.001000] MY[0.000000] MZ[0.000000]
...

P.S. 开一个终端(Ctrl+Alt+T) 查看当前active的topics

rostopic list

   可以看到当前active的topics,如下图

/robotiq_ft_sensor
/robotiq_ft_wrench
/rosout
/rosout_agg
  • Step 9. 串口权限问题

Step 8-0的时候手动开启了串口权限,但是每次开机都要再次开启,非常麻烦。

于是可以写一个脚本每次开机自动开启串口权限(参考:“三、串口权限问题 ” in page)。


References:

机械臂—ROS下UR10e+ft300+2f-140gripper ur机械臂配置夹爪及问题解决

ROS - UR3机械臂添加robotiq FT sensor和robotiq 140 2指夹爪

关于连接FT300后需要给串口设置权限的操作

ubuntu关于串口的操作

<think>好的,我现在需要回答用户的问题:“实验室研究:使用ROS+MoveIt控制UR机械需要电脑以外的设备吗?”首先,我要回顾之前的对话历史。用户之前询问过是否可以使用非官方控制器控制UR机器人,我详细解释了不同的方法,包括ROS驱动。现在用户的问题更具体,针对实验室环境中使用ROS和MoveIt是否需要额外的设备。 首先,我应该确认用户可能的需求。实验室环境下,他们可能已经有一台UR机械和电脑,但不确定是否需要其他硬件。需要明确列出必要的设备,可能包括网络设备、传感器、电源设备等,同时也要提到可选设备,如力传感器、视觉系统等。 接下来,我需要考虑用户可能的知识水平。他们可能对ROS和MoveIt有一定了解,但可能不清楚具体硬件需求。因此,回答需要详细但不过于技术化,分点列出,结构清晰。 然后,要确保回答准确。根据之前的回答,使用ROS驱动需要UR的官方ROS包,所以可能需要UR的控制箱,或者是否绕过了原厂控制器?之前的回答提到可以不用官方控制器,但需要特定条件。但用户现在的问题是使用ROS+MoveIt是否需要其他设备,可能默认还是使用原厂控制器,或者在替代方案下是否需要额外设备? 这里可能存在混淆。根据UR的官方ROS驱动,通常还是需要UR的原厂控制器(即控制箱CB3或e系列),因为ROS驱动是通过控制器通信来控制机械的。因此,即使用ROS+MoveIt,仍然需要UR的控制器,而电脑只是作为上位机发送指令。所以,在之前的回答中提到的替代方案可能是指不使用UR的示教器或编程方式,但硬件控制器可能还是需要的。 但用户的问题是否认为电脑以外的设备是否包括UR控制器本身?可能用户认为电脑是主要的控制设备,而UR控制器属于机器人本身的组成部分,所以是否需要其他设备,如额外的交换机、路由器、传感器等。 需要澄清这一点。如果用户已经拥有UR机械,通常机械本身带有控制箱(控制器),所以电脑以外的设备可能指的是除了电脑和机械系统之外的其他硬件。 因此,正确的回答应该包括: 1. 必要的设备:UR机械及原厂控制器(控制箱),网络设备(如交换机/路由器),实时通信线缆(以太网线)。 2. 推荐的设备:专用网络交换机,外部紧急停止按钮。 3. 可选设备:力传感器,视觉系统,末端执行器等。 4. 不需要原厂示教器,但可能需要作为初始设置。 同时,需要说明虽然使用ROS和MoveIt,但UR的原厂控制器仍然是必要的,因为ROS驱动是通过控制器通信,而不是完全替代控制器。这一点可能需要明确,避免用户误解为可以完全脱离UR的硬件。 另外,要提到安全设备,如急停按钮,确保实验室环境的安全。电源稳定设备如UPS,防止断电影响。网络要求,如千兆以太网以确保实时性。 最后,总结是否需要额外设备,除了电脑和机械系统本身,还需要网络设备、可能的传感器等。确保回答结构清晰,分点明确,帮助用户逐步理解所需的设备。</think>在实验室使用ROS+MoveIt控制UR机械时,除了计算机外还需要以下设备配置: --- ### **一、核心必需设备** 1. **UR本体控制系统** - 必须保留UR原厂控制柜(CB3或e系列) - 包含内置安全PLC和功率驱动模块 - 注:这是机器人供电和底层控制的硬件基础 2. **工业级网络设备** - 千兆以太网交换机(推荐Moxa EDS-405A) - 屏蔽双绞线(Cat6以上) - 需实现: - 计算机控制柜间≤1ms延迟 - 网络抖动<50μs 3. **实时通信接口** - UR控制柜的RTDE端口(30001-30003) - ROS计算机需要固定IP(如192.168.1.50) --- ### **二、推荐扩展设备** | 设备类型 | 型号示例 | 功能说明 | |----------------|----------------------|------------------------------| | 安全继电器模块 | Phoenix Contact PLC | 急停回路硬件保障 | | 示教器支架 | UR原厂HMI支架 | 保留原厂操作接口 | | 电源滤波器 | SCHAFFNER FN2070 | 消除伺服电机干扰 | --- ### **三、典型传感器扩展** 1. **力/力矩传感器**(如ATI Gamma) - 需通过以太网/IP协议接入ROS - 示例配置: ```yaml ft_sensor: ip: 192.168.1.101 rate: 1000Hz frame_id: "wrist_ft_link" ``` 2. **3D视觉系统**(如Intel RealSense D435i) - 通过USB3.0接入工控机 - 需校准相机-机械坐标系 --- ### **四、网络架构示例** ``` [工控机] ←千兆光纤→ [工业交换机] ←屏蔽网线→ [UR控制柜] ↑ [力传感器] [3D相机] [PLC安全系统] ``` --- ### **五、不要的冗余设备** - ❌ 原厂示教器(可通过ROS替代操作) - ❌ 外部运动控制卡(UR已集成) - ❌ 独立PLC(使用控制柜内置PLC即可) --- ### **六、最低配置验证方法** ```bash # 在ROS计算机测试通信 ping 192.168.1.100 # 控制柜IP rostopic echo /joint_states # 验证数据流 roslaunch ur_moveit_config demo.launch # 测试规划 ``` 实际实验室部署时,建议保留原厂安全系统并配置双网络冗余。使用普通消费级路由器可能导致控制延迟超过200ms,建议优先采用TSN(时间敏感网络)架构。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值