查看源图像

目录

​编辑

1 /dev/设备列表

2 ttyUSB*端口ID 

3 端口别名rules动态绑定

4 launch文件配置


1 /dev/设备列表

lsusb
 
lsusb -t

2 ttyUSB*端口ID 

查看/dev/ttyUSB* 设备端口ID :0403:6014

找到对应USB的设备ID,这里是 0403:6014, 可以不连接USB设备输入lsusb,连接上后再输一次lsusb,多加出现的那一行就是你对应的ID。

3 端口别名rules动态绑定

新建USB端口规则文件ttyusb.rules

cd /etc/udev/rules.d/
touch ttyusb.rules

KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE:="0777", SYMLINK+="ServoBus"

注意: (需要替换id/自定义名称)

举例: ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014",动态绑定端口id,并设置别名SYMLINK+="ServoBus", 端口权限MODE:="0777"。

重启usb dev服务器

    sudo service udev reload
 
    sudo service udev restart

重新拔插设备并检查设备端口号:

ls /dev/ServoBus

查看所有端口

lsusb

 可以发现,Rules已经生效,将ttyUSB0硬件端口软链接至rules-ServoBus端口便于分类识别与使用。

4 launch文件配置

将ROS launch文件中的端口名改为软链接的端口名即可,即使增删硬件,端口别名也不会错乱。

<arg name="usb_port"     default="/dev/ServoBus"/>

<launch>
  <arg name="usb_port"     default="/dev/ServoBus"/>
  <arg name="baud_rate"    default="1000000"/>
  <arg name="control_period"         default="0.010"/>
 
  <!--Hardware of Virtual Platform in Gazebo-->
  <arg name="use_platform"           default="true"/>
<!--Control Mode Selection -->
    <arg name="using_publisher_gui"        default="false"/>
<!-- Dynamixel prismatic joint servo MAX velocity , mm/s-->
    <!--<arg name="prismatic_joint_max_velocity"      default=100/>-->
    
  <node name="open_manipulator_controller" pkg="open_manipulator_controller" type="open_manipulator_controller" 
    output="screen" args="$(arg usb_port) $(arg baud_rate)">
    <param name="control_period"       value="$(arg control_period)"/>
    <param name="using_platform"       value="$(arg use_platform)"/>
  </node>
</launch>