Rosserial-embeddedlinux部署

    rosserial是ros的一種數據協議,通過某個字符設備,如串口或網絡socket,用於傳遞標準ros消息或者複用多個話題、服務

    主要分兩個部分:客戶端ros代理接口

    客戶端允許用戶獲取ros節點,並在不同的設備上運行。客戶端通常是general ANSI C++庫,包括:

rosserial_arduino

Arduino, especially UNO and Leonardo but also Arduino MEGA and DUE, Teensy 3.x and LC, Spark, STM32F1 and ESP8266 based boards

rosserial_embeddedlinux

support for Embedded Linux (eg, routers)

rosserial_windows

support for communicating with Windows applications

rosserial_mbed

support for mbed platforms

rosserial_tivac

support for TI's Launchpad boards, TM4C123GXL and TM4C1294XL

rosserial_stm32

support for STM32 MCUs

ros-teensy

support for teensy platforms


    ros代理接口用於橋接客戶端所在設備的串行協議和ros網絡(workstation),即接受客戶端發出的消息

rosserial_python

A Python-based implementation (recommended for PC usage).

rosserial_server

A C++ implementation based on the ShapeShifter message, some limitations compared to rosserial_python but recommended for high-performance applications.


    本文所使用的客戶端爲NVIDIA的TX2板子,裝載Ubuntu16.04和kinetic-ros,workstation使用Ubuntu14.04和indigo-ros,client library採用rosserial-embeddedlinux,具體步驟如下:

    1、在workstation端安裝rosserial包
  cd <ws>/src
  git clone https://github.com/ros-drivers/rosserial.git
  cd <ws>
  catkin_make
  catkin_make install
  source <ws>/install/setup.bash

    完成後會在<ws>/install目錄中創建ros_lib庫,必須運行catkin_make install


    2、刪除rosserial-embededlinux目錄下的example和ros_lib文件夾,然後利用make_libraries.py腳本重新生成

  cd <some_directory>
  rm -rf ros_lib examples
  rosrun rosserial_embeddedlinux make_libraries.py . //.表示當前目錄

    重新生成的ros_lib庫相比之前多了很多當前workstation的一些運行庫(個人理解)


    3、將新的rosserial-embededlinux包拷到客戶端的機子上,本文是TX2板子


    4、客戶端上,將ros_lib目錄添加到系統頭文件搜索目錄,參考ubuntu下默認的頭文件搜索路徑

    本文采用通過查找gcc的環境變量C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/OBJC_INCLUDE_PATH來搜索頭文件位置

export CPLUS_INCLUDE_PATH = CPLUS_INCLUDE_PATH:ros_lib所在目錄的絕對路徑

    

    5、構建一個使用ros接口的嵌入式linux應用程序(通常使用交叉編譯器-請參閱您的開發環境文檔)

    本文進入客戶端example所在HelloROS目錄,修改cpp文件中的IP爲workstation所屬IP,然後編譯生成可執行文件

g++ HelloROS.cpp -o test

    如果上一步沒有添加頭文件搜索目錄,可以使用-I ros_lib目錄的指令(是I,不是i)

g++ HelloROS.cpp -o test -I ros_lib目錄

    如果出現錯誤,參考rosserial_embeddedlinux編譯

    注:本文中如果在workstation中生成該可執行文件,在workstation上可以執行,但拷貝到客戶端上無法執行,可能是兩個系統的ros版本不一致,


    6、運行。首先在workstation啓動

rosrun rosserial_python serial_node.py tcp
    然後在客戶端運行上步生成的可執行文件,即可在workstation上接收到信息


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章