創(chuàng)建設(shè)備別名
需要創(chuàng)建設(shè)備別名原因:
在運行一個ros程序的時候需要提供一個端口名,這個端口名一般是ttyUSBx,設(shè)備每次插拔對應(yīng)的這個端口名它都會不一樣,需要創(chuàng)建一個設(shè)備別名,就是要將這個端口名來給它固定住。
重新插拔 USB1端口的設(shè)備后,變?yōu)椋?/p>
可以看到變成了/dev/ttyUSB2
端口號發(fā)生了變化
創(chuàng)建設(shè)備別名需要寫一個腳本文件,如下:
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幾的設(shè)備都進(jìn)行判斷
ATTRS{idVendor}==”10c4” 這里的idVendor ,在前面win上修改 serial的時候出現(xiàn)過,就是10c4
ATTRS{idProduct}==”ea60” 這里的idProduct,在前面win上修改 serial的時候出現(xiàn)過,就是ea60
ATTRS{serial}==”0002” 這里的serial,就是前面我們改過的,這里就根據(jù)這個值的不同,定義不同的設(shè)備別名
MODE:=”0777” 就是端口的權(quán)限
SYMLINK+=”stm32_controller” 這里的stm32_controller,就是取的設(shè)備別名。
所有上面第一行代碼的功能就是,將滿足這些條件的端口的設(shè)備名稱改為定義的設(shè)備別名。
腳本的文件名稱,取名為change_udev.sh。在執(zhí)行前需要給這個腳本文件賦予權(quán)限。
sudo chmod 777 change_udev.sh
賦予權(quán)限后,再運行這個腳本
sudo ./change_udev.sh
這樣就運行了設(shè)備別名的設(shè)置,之后不管怎么插拔這兩個USB設(shè)備,系統(tǒng)都將會自動的將這兩個設(shè)備去給它賦予設(shè)置的設(shè)備別名。
使用設(shè)備別名
在上面,設(shè)置了設(shè)備別名,下面來看如何使用我們的設(shè)備別名。
例如我們將雷達(dá)的USB的設(shè)備別名改為了2d_lidar
雷達(dá)的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”/ >
這里,我們就將系統(tǒng)的設(shè)備別名/dev/2d_lidar,設(shè)置到了參數(shù)serial_port中
-
控制器
+關(guān)注
關(guān)注
112文章
16448瀏覽量
179463 -
STM32
+關(guān)注
關(guān)注
2272文章
10924瀏覽量
357590 -
設(shè)備
+關(guān)注
關(guān)注
2文章
4546瀏覽量
70858 -
智能車
+關(guān)注
關(guān)注
21文章
404瀏覽量
77066 -
ROS
+關(guān)注
關(guān)注
1文章
280瀏覽量
17100
發(fā)布評論請先 登錄
相關(guān)推薦
創(chuàng)建設(shè)備函數(shù)CreateDevice調(diào)用成功返回的句柄值是什么?
labview創(chuàng)建設(shè)備失敗
linux驅(qū)動程序開發(fā)之驅(qū)動自動創(chuàng)建設(shè)備節(jié)點理論知識介紹
ROS與STM32之間的聯(lián)系
分享一個基于FreeRTOS的micro(微型)ROS
基于FreeRTOS的micro(微型)ROS
![基于FreeRTOS的micro(微型)<b class='flag-5'>ROS</b>](https://file.elecfans.com/web1/M00/C8/2A/pIYBAF9tim2AHt85AAAgW-UsIuY014.png)
如何在Linux系統(tǒng)下自動創(chuàng)建設(shè)備節(jié)點
sudo后使用別名
ROS主控與STM32的硬件連接和軟件設(shè)置
![<b class='flag-5'>ROS</b><b class='flag-5'>主控</b>與STM32的硬件連接和軟件設(shè)置](https://file1.elecfans.com/web2/M00/AE/E5/wKgaomVXOLWAYvTvAAEwubFuOpw290.jpg)
ROS如何配置固定串口設(shè)備
![<b class='flag-5'>ROS</b>如何配置固定串口<b class='flag-5'>設(shè)備</b>](https://file1.elecfans.com/web2/M00/B0/4E/wKgaomVdz4eAHbXCAACMj2K8Gds003.jpg)
如何創(chuàng)建新的ROS工作空間
![如何<b class='flag-5'>創(chuàng)建</b>新的<b class='flag-5'>ROS</b>工作空間](https://file1.elecfans.com/web2/M00/B1/48/wKgaomVjCpiAdRwgAACGbnloi38266.jpg)
ROS主控與STM32的硬件連接和軟件連接
![<b class='flag-5'>ROS</b><b class='flag-5'>主控</b>與STM32的硬件連接和軟件連接](https://file1.elecfans.com/web2/M00/B0/AE/wKgZomVXOLWAN-2pAAEQ5hxYyro516.jpg)
評論