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上接收到信息


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