您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
03 ros訂閱不到消息(工作小結之——ROS收發不同類型Message(二))
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-02 02:59:38【】8人已围观
简介/買粉絲s://en.wikipedia.org/wiki/CAN_bus#History買粉絲s://買粉絲.edaboard.買粉絲/threads/difference-between-can1
買粉絲s://en.wikipedia.org/wiki/CAN_bus#History
買粉絲s://買粉絲.edaboard.買粉絲/threads/difference-between-can1-0-and-can-2-0.217912/
SAE J1939/ISO11783
CANOpen
CANaerospace
DeviceNet
NMEA 2000
Linux可以通過串口、USB、網口、PCIE等接口與CAN設備間接進行通信。
CAN設備連接在不同的硬件接口時,意味著CAN設備被掛載在Linux中不同的總線上,如USB總線、PCI-E總線(直接通過PCI-E與linux通訊),因此Linux采用不同的通訊協議與CAN設備進行通訊。
Linux->串口->單片機->CAN
利用linux自帶的串口庫,或ros的serial庫對串口進行讀寫。
通過定義串口協議,如10個字節,前兩個字節為CAN ID,后面8個字節為CAN Data。通過此對串口發送數據,讓單片機對其進行轉換為CAN數據。
協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/64/2607
注意,不是所有的周立功CAN轉USB設備都支持Linux,見表: 買粉絲s://manual.zlg.買粉絲/web/#/146
Linux->USB->單片機->CAN
與CAN轉串口不一樣,利用的庫是libusb和libusbcan,對CAN轉USB數據直接進行讀寫
libusb是linux驅動,可以操作USB接口對USB設備進行讀寫操作。
libusbcan是CAN轉USB設備廠商給的驅動,其中定義了can數據幀的數據結構體,填充相應的CAN ID和CAN Data,最后通過USB進行讀寫。
協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/55/2282
Linux->TCP(UDP)/IP->單片機->CAN
利用Linux的socket庫對網絡設備進行讀寫操作。
Linux通過IP地址利用Socket與CAN設備通信,一個TCP/UDP幀包中包含若干個連續的CAN幀,每個CAN幀包含若干個字節,包含CAN ID和CAN Data。
協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/67/2693
注意周立公CAN轉PCI-E設備,型號PCI-5010-P不支持Linux: 買粉絲s://manual.zlg.買粉絲/web/#/146
Linux->SocketCAN->單片機->CAN
Linux提供了SocketCAN接口,使得CAN總線通信近似于和以太網的通信。網絡設備通過IP確定地址,CAN設備通過CAN ID確定地址,如 can0 , can1 ...
CAN ID可以通過 if買粉絲nfig -a 查看
Linux利用SocketCAN庫根據CAN的設備ID對其進行讀寫操作,CAN的數據結構在Socket CAN中被結構體定義,填充相應數據后發送即可。
協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/77/3180
開源地址: 買粉絲s://canable.io/
淘寶有售賣
注意與上面周立功的CAN轉USB設備數據傳輸流程不同,利用的是 SocketCAN ,不是 USB 。
Linux->SocketCAN->單片機->CAN
Linux利用SocketCAN庫根據CAN的設備ID對其進行讀寫操作,CAN的數據結構在Socket CAN中被結構體定義,填充相應數據后發送即可。
SocketCAN簡介: 買粉絲s://en.wikipedia.org/wiki/SocketCAN
協議參考1: 買粉絲s://canable.io/getting-started.買粉絲#socketcan-linux
協議參考2: 買粉絲s://manual.zlg.買粉絲/web/#/77/3180
socketcan_interface 是較為底層的包,與Linux的socketcan打交道。
socketcan_bridge 是 ros中最常用的包 ,通過將接收到的topic轉換為can數據發出去,或者把接收到的can數據轉換為ros的topic。
ros_canopen 是基于canopen應用協議的包,是上層協議。
該功能以三個節點的形式提供: socketcan_bridge_node 、 socketcan_to_topic_node 和 topic_to_socketcan_node 。要從同一個 CAN 設備接收和發送幀,需要使用 socketcan_bridge_node 來防止每個發送的消息都回顯到接收主題。
從 SocketCAN 設備接收幀并將這些幀發布到主題上,同時它偵聽 CAN 消息并將這些消息發送到 SocketCAN。發送到 CAN 設備的幀不會作為接收消息發布。
將在 SocketCAN 設備上接收到的幀發布到topic。
將收到的topic的 CAN 消息發送到 SocketCAN 設備。
對于一些成熟的包,或者比較復雜的包,要想把其中的topic轉為CAN數據發出去,有兩種修改方式:
第二種方式更為簡單和快速,但會增加通信中轉延時,ROS的節點通信是基于TCP/IP,對于本機節點通信而言,此延時大概在1ms以內(百兆網卡以上)。
對于該中轉節點,需要訂閱兩個topic,發布兩個topic
socketcan_bridge_node的話題的消息類型都為 ROS內置消息類型 can_msgs/Frame :
需要填充的數據是
一般把該中轉節點與socketcan_bridge_node放在一個launch文件中。
如果socketcan_bridge_node節點的名稱沖突了,可以在launch文件中添加group,或者remap話題名稱。
推薦CANable + socketcan_bridge包實現ROS中的CAN通信!
Github: 買粉絲s://github.買粉絲/wanghuohuo0716/ros_can_driver
ROS socketcan_bridge包使用參考:
買粉絲s://blog.csdn.買粉絲/zyf_to_utopia/article/details/116209605
買粉絲s://blog.csdn.買粉絲/m0_58322903/article/details/121630592
買粉絲s://blog.csdn.買粉絲/wangrunhuan/article/details/117962857
SocketCAN介紹:
買粉絲s://en.wikipedia.org/wiki/SocketCAN
很赞哦!(86)
相关文章
- 01 廣西圣悅貿易有限公司(全國網絡貨運平臺有哪些)
- 01 廣播劇播放量賺錢嗎(請問給有聲書配音賺錢嗎?)
- 01 廣西北海市外國語實驗學校薪資待遇(廣西北海市外國語實驗學校高中部什么時候成立的)
- 01 復古ins女生頭像手繪(小清新插畫手繪人物-9種常見插畫風格的分類)
- 01 廣州龍量貿易有限公司(醫美股票有哪些龍頭股)
- 01 復制別的買粉絲的內容(如何復制別人買粉絲的內容?)
- 01 復旦大學中山醫院門診服務買粉絲(“隨申碼”變黃如何申訴?整治無證騎手!滬三甲醫院“五一”安排!多起物資問題調查進展!)
- 01 廣州鵬瑜貿易有限公司(如何注冊一家制冷科技公司)
- 01 復旦大學國際經濟與貿易研究生好考嗎(復旦大學經濟學專業好嗎?畢業后的方向主要往哪?)
- 01 復古ins女生網名沙雕(ins風格插畫-太沙雕!日本靈魂插畫師的簡筆畫,在INS火了!)
热门文章
站长推荐
01 復旦大學國際經濟與貿易考研2022(東華大學2022考研分數線)
01 復旦大學國際經濟與貿易專業研究生2023年招多少人(就國際經濟與貿易而言,復旦大學,浙江大學和上海交通大學哪所更好?)
01 復旦大學國際經濟與貿易考研(國際經濟與貿易專業考研方向和大學有哪些?)
01 復古背景圖ins風紅色系(賽博朋克風格插畫-新年海報都有哪些風格)
01 復旦大學國際經濟與貿易考研(國際經濟與貿易專業考研方向和大學有哪些?)
01 復古背景圖ins風高清(抽象海報背景-海報是什么樣子的圖片)
01 廣西交投貿易有限公司企業性質(廣西交投集團是真的存在嗎?)
01 復古高級ins背景圖勵志(ins風海報背景-ins治愈系背景圖)