ROS 使用技巧

源码安装 pkg

wstool

一个例子:

1
2
3
4
$ wstool init src (if not already initialized)
$ wstool set -t src mavros --git https://github.com/mavlink/mavros.git
$ wstool update -t src
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y

最后一条会安装依赖。

rosinstall

似乎有这样一个工具 ros-install-generator,专门根据包名,去数据库里找包的源码仓库信息

1
$ sudo apt-get install python-rosinstall-generator

结合 tee,就可以生成一个用于安装的 yaml 文档,比如说想从上游安装 mavlink,可以这样

1
$ rosinstall_generator mavlink | tee rosinstall.yaml

再这么做,就安装好了

1
2
$ wstool init <pkg_path> ./rosinstall.yaml
$ catkin_make_isolated --install-space $ROSINSTALL --install -DCMAKE_BUILD_TYPE=Release

其中,$ROSINSTALL 需要自己配置好,如果 $ROSINSTALL 是一个需要权限的路径,比如说 /opt/ros/$ROS_DISTRO,最后一条命令加 sudo s

catkin_make

catkin_make 可以有 GUI 方式查看编译选项

1
$ catkin_make edit_cache

或者

1
2
$ sudo apt-get install cmake-qt-gui
$ cmake-gui build

手动添加第三方库

两种方式

  1. 将自己的程序做成库,用 PkgConfig 提供的宏自动找,这种方式需要自己写 pkg-config 文档
  2. 自己写 cmake 文档

显式指定编译器

1
2
3
4
5
6
7
8
9
10
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

rqt_plot

同时显示多个话题

1
2
$ rqt_plot /turtle1/pose/x:y:z
$ rqt_plot /turtle1/pose/x /turtle1/pose/y /turtle1/pose/z

后端

rqt_plot 可以使用不同后端, matplotlibqwt 慢或者支持不完善,推荐用 pyqtgraph

1
2
$ wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
$ sudo easy_install pyqtgraph

0X04 用 Qt Creator 作为 IDE (未测试)

  1. 安装好 qt 以后

    1
    export CMAKE_PREFIX_PATH=/opt/qt54/lib/cmake:$CMAKE_PREFIX_PATH
  2. open qt creator with the environment path

    1
    sh -i -c qtcreator
  3. open project

    • open the CmakeList.txt under your package file
    • choose the Build Location to be under your package file
      e.g. ../catkin_ws/src/hello/build
    • edit your Run Cmake to be like this:
      -DCATKIN_DEVEL_PREFIX=/catkin_ws/devel
      -DCMAKE_BUILD_TYPE=Debug