ROS主控如何创建设备别名

描述

创建设备别名

需要创建设备别名原因:

在运行一个ros程序的时候需要提供一个端口名,这个端口名一般是ttyUSBx,设备每次插拔对应的这个端口名它都会不一样,需要创建一个设备别名,就是要将这个端口名来给它固定住。

STM32

重新插拔 USB1端口的设备后,变为:

STM32

可以看到变成了/dev/ttyUSB2

端口号发生了变化

创建设备别名需要写一个脚本文件,如下:

echo  'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{serial}=="0002", MODE:="0777", GROUP:="dialout", SYMLINK+="stm32_controller"' >/etc/udev/rules.d/stm32_controller.rules
echo  'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{serial}=="0001", MODE:="0777", GROUP:="dialout", SYMLINK+="2d_lidar"' >/etc/udev/rules.d/2d_lidar.rules


service udev reload
sleep 2
service udev restart

解释下上面的代码

KERNEL==”ttyUSB* 不管是USB几的设备都进行判断

ATTRS{idVendor}==”10c4” 这里的idVendor ,在前面win上修改 serial的时候出现过,就是10c4

STM32

ATTRS{idProduct}==”ea60” 这里的idProduct,在前面win上修改 serial的时候出现过,就是ea60

STM32

ATTRS{serial}==”0002” 这里的serial,就是前面我们改过的,这里就根据这个值的不同,定义不同的设备别名

MODE:=”0777” 就是端口的权限

SYMLINK+=”stm32_controller” 这里的stm32_controller,就是取的设备别名。

所有上面第一行代码的功能就是,将满足这些条件的端口的设备名称改为定义的设备别名。

脚本的文件名称,取名为change_udev.sh。在执行前需要给这个脚本文件赋予权限。

sudo chmod 777 change_udev.sh

赋予权限后,再运行这个脚本

sudo ./change_udev.sh

这样就运行了设备别名的设置,之后不管怎么插拔这两个USB设备,系统都将会自动的将这两个设备去给它赋予设置的设备别名。

使用设备别名

在上面,设置了设备别名,下面来看如何使用我们的设备别名。

例如我们将雷达的USB的设备别名改为了2d_lidar

雷达的roslaunch启动文件则可以写成如下:

< launch >
  < node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen" >
    < param name="serial_port"         type="string" value="/dev/2d_lidar"/ >
    < param name="serial_baudrate"     type="int"    value="115200"/ >< !--A1/A2 -- >
    < !-- < param name="serial_baudrate"     type="int"    value="256000"/ > -- >< !--A3 -- >
    < !-- < param name="serial_baudrate"     type="int"    value="1000000"/ > -- >< !--S2 -- >
    < param name="frame_id"            type="string" value="laser"/ >
    < param name="inverted"            type="bool"   value="false"/ >
    < param name="angle_compensate"    type="bool"   value="true"/ >    
  < /node >
< /launch >

上面的代码中,

< param name=”serial_port” type=”string” value=”/dev/2d_lidar”/ >

这里,我们就将系统的设备别名/dev/2d_lidar,设置到了参数serial_port中

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分