ros與下位機通訊常用的c boost串列埠通訊

2021-07-27 13:15:42 字數 2440 閱讀 6827

(執行串之前請先安裝串列埠驅動minicom)

一.首先移植c++ boost 庫:

2. 進入解壓後目錄: cd boost_1_63_0, 執行下面的命令:

$ ./bootstrap.sh --prefix=path/to/installation/prefix

prefix的值是你希望安裝boost的路徑, 不開啟此引數的話預設安裝在 /usr/local 下. 我安裝在 /home/hl/boost_1_63_0 目錄下:

$ ./bootstrap.sh --prefix=/home/hl/boost_1_63_0

note:家目錄不要用 ~ 表示, 編譯指令碼不識別 ~, 會在當前目前新建乙個名為 '~' 的目錄.

接著執行:

$ ./b2 install

這條命令把boost的標頭檔案資料夾 include/ 安裝在prefix定義的目錄中, 並且會編譯所有的boost模組, 並將編譯好的庫資料夾 lib/ 也放在prefix定義的目錄中. 所有如果成功編譯的的話, prefix目錄即 /home/hl/boost_1_63_0目錄應當包含有 include/ 和 lib/ 兩個資料夾.

3. 測試,在你得ros工作空間的任意功能包中src/目錄下,建立boost_bode.cpp檔案,內容如下:

先測試只依賴標頭檔案的功能模組:

asio不僅支援網路通訊,還能支援串列埠通訊。要讓兩個裝置使用串列埠通訊,關鍵是要設定好正確的引數,這些引數是:波特率、奇偶校驗 位、停止位、字元大小和流量控制。兩個串列埠裝置只有設定了相同的引數才能互相交談。

asio提供了boost::asio::serial_port類,它有乙個set_option(const settableserialportoption& option)方法就是用於設定上面列舉的這些引數的,其中的option可以是:

#include #include #include #include using namespace std;

using namespace boost::asio;

int main(int argc, char* argv)

新增編譯選項:在你得功能包中的cmakelists.txt 檔案中新增:

add_executable(boost_node src/boost_node.cpp)

target_link_libraries(boost_node $

編譯boost測試程式:在你的工作空間的頂層目錄下

catkin_make

如果編譯不通過的話應該是cmakelist沒有加入boost的庫,需要在cmakelists.txt 檔案中新增:set(boost_include_dir /home/hl/boost_1_63_0/include)

set(boost_library_dir /home/hl/boost_1_63_0/lib)

find_package(boost required components system)

include_directories($)

link_directories($)

若執行不成功,報錯:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl

error_info_injector>'

what():  open: no such file or direct

aborted (core dumped)

應該是找不到串列埠

可能原因是串列埠minicom沒有安裝,程式裡面or軟體驅動or硬體串口號選擇不對

若執行不成功,報錯:terminate called after throwing an instance of 'boost::exception_detail::clone_impl

error_info_injector>'

what():  open: permission deniedaborted (core dumped)好像是許可權不夠

使用root使用者或sudo chmod 666 /dev/ttyusb0或者

sudo chmod a+rw /dev/ttyusb0

將你的電通和另一台電腦通過串列埠連線。執行ros節點,另一台電腦通過串列埠傳送資料:接收如下:

hl@hl-system-product-name:~$ rosrun odom_tf_package boost_node buf[

0] = c

winform與下位機做藍芽通訊時需要注意的問題

winform與下位機做藍芽通訊時需要注意的問題 1.想要實現自動連線藍芽,就需要像串列埠自動連線一樣,思路是先掃瞄前n個com口,通過try,阻塞和定時器搭配嘗試開啟com,發握手訊號,如果得到正確回覆那麼埠定位成功!2.藍芽模組這裡有乙個坑,不知道是模組的問題還是一種什麼機制,買的乙個hc05模...

ros多機通訊的辦法

在本機進行測試時,只要啟動roscore即可,如果依賴別的自定義訊息型別,也只要source使其生效即可。但是在網路中測試,ros版本不同設定方法也不同。使用網線連線測試機,shell中新增以下內容 source opt ros melodic setup.sh export ros master ...

關於ROS多機通訊的總結 1 0

先貼遠端操作的幾條常用命令,scp複製 scp local file remote username remote ip remote folder scp remote username remote ip remote folder local file 這兩條命令是類似的,解釋第一條,就是從本...