中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

ROS中的cmake指的是什么

ROS中的cmake指的是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站設計、成都網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元衡陽縣做網(wǎng)站,已為上家服務,為衡陽縣各地企業(yè)和個人服務,聯(lián)系電話:18980820575

這一次討論ROS中的cmake和ROS代碼編譯過程。

1. 基礎準備

首先開始創(chuàng)建基礎工作空間,新建一個ROS項目,名字為catkin_ws,并在里面建立 src 文件夾

$ mkdir ~/catkin_ws
$ cd ~/catkin_ws
$ mkdir src
$ cd src

然后在src文件加下利用ROS包工具,catkin_create_pkg,新建一個包名為“test”,依賴于"std_msgs, rospy, roscpp"

$ catkin_create_pkg test std_msgs rospy roscpp tf sensor_msgs image_transport cv_bridge

然后在test文件夾下的src里面新建test.cpp文件,這個文件是源代碼的標準放置位置。此時的文件結(jié)構(gòu)如下

.
└── src
    └── test
        ├── CMakeLists.txt
        ├── include
        │   └── test
        ├── package.xml
        └── src
            └── test.cpp

這種文件結(jié)構(gòu)是一種標準的ROS項目和包的結(jié)構(gòu)。如果需要增加新的node包,我們只需要在src下增加一個和test文件夾結(jié)構(gòu)類似的文件夾,例如test2,文件結(jié)構(gòu)變?yōu)槿缦隆?/p>

.
└── src
    ├── test
    │   ├── CMakeLists.txt
    │   ├── include
    │   │   └── test
    │   ├── package.xml
    │   ├── package.xml~
    │   └── src
    │       └── test.cpp
    └── test2
        ├── CMakeLists.txt
        ├── include
        │   └── test2
        ├── package.xml
        └── src
            └── test2.cpp

2. 文件結(jié)構(gòu)準備好后,需要配置CMakeLists.txt和package.xml

這里針對具體的例子來配置。這個例子是OpenCV的例子,純C++代碼,不涉及具體的ROS函數(shù)。例子的功能是讀取攝像頭的輸入,并展示出來。(Ubuntu 14.04 上面測試通過,注意其中的OpenCV庫的引用,請用自己的具體OpenCV庫頭文件路徑包含,具體配置還需自行google)

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>

//#include "ros/ros.h"
//#include "std_msgs/String.h"

using namespace cv;  
using namespace std; 
int main(int argc, char** argv)  
{  
    
  
   //ros::init(argc, argv, "test");  
  
    Mat image;  
	int cam_idx = 0;

    if (argc == 2) {
        cam_idx = atoi(argv[1]);
    }

    VideoCapture cap(cam_idx);
    if (!cap.isOpened()) {
        cerr << "Could not open camera." << endl;
        exit(EXIT_FAILURE);
    }
    namedWindow("Display Image"); 
    
	for(;;){
	  cap >> image; 
	  imshow("Display Image", image);  
          waitKey(5);
	}
	 

	//ros::spin();
    return 0;  
}

首先配置CMakeLists.txt,添加這里的例子 test.cpp ,配置后的文件為,(更具體的參數(shù)解釋可以參考 wiki)

cmake_policy(SET CMP0012 NEW)
cmake_minimum_required(VERSION 2.8.3)
project(test)
#
find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  image_transport
  roscpp
  rospy
  sensor_msgs
  std_msgs
  tf
)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(
  ${catkin_INCLUDE_DIRS}
)
#add our own node src
add_executable(test_node src/test.cpp)
target_link_libraries(test_node ${OpenCV_LIBS} ${catkin_LIBRARIES})

接著配置下package.xml(更具體的每項解釋參考ROS,wiki )

<?xml version="1.0"?>
<package>
  <name>test</name>
  <version>0.0.0</version>
  <description>The test package</description>

  <maintainer email="caoyuanfenglv@163.com">caoyuanfeng</maintainer>
  <license>TODO</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>cv_bridge</build_depend>
  <build_depend>image_transport</build_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>sensor_msgs</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_depend>tf</build_depend>
  <build_depend>opencv</build_depend>
  
  <run_depend>cv_bridge</run_depend>
  <run_depend>image_transport</run_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>
  <run_depend>sensor_msgs</run_depend>
  <run_depend>std_msgs</run_depend>
  <run_depend>tf</run_depend>
  <run_depend>opencv</run_depend>
  <export>
  </export>
</package>

注意里面多加了OpenCV的以來和圖像相關的依賴。

3.編譯運行

在配置好兩個文件以后,一般的新增ROS項目和node需要修改的都是這兩個文件,或者只有CMakelists.txt一個文件,如果依賴相同的。

回到項目的根目錄,也就是catkin_ws文件夾,然后用catkin_make編譯

$ cd  ~/catkin_make
$ ls 
src
$ catkin_make

接著,運行得到的node

$ source devel/setup.bash
$ rosrun test  test_node

將會看到打開攝像頭,彈出來攝像頭的畫面。表示這個node編譯運行成功。

回頭看去,總結(jié)了下整個ROS項目的過程就是這樣的

  • 新建固定的文件結(jié)構(gòu)

  • copy標準的CMakeLists.txt和package.xml文件

  • 分析自己的項目依賴,配置上面的兩個配置文件

  • 編寫自己的src代碼,在CMakeLists.txt里面添加源代碼路徑

  • 編譯運行,出錯返回3,成功則 good job。

整個項目的代碼都在git@osc上面,可以查看這里。

關于ROS中的cmake指的是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

新聞標題:ROS中的cmake指的是什么
文章來源:http://www.rwnh.cn/article28/gcgsjp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站建設、面包屑導航、搜索引擎優(yōu)化、云服務器域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
景谷| 荃湾区| 宁南县| 镇康县| 贡嘎县| 房山区| 合川市| 镇坪县| 赤城县| 汉源县| 治县。| 平陆县| 麻江县| 平昌县| 建湖县| 刚察县| 栾城县| 邵东县| 山东省| 大名县| 通榆县| 邯郸市| 大丰市| 蓝山县| 青川县| 盘锦市| 龙江县| 将乐县| 安顺市| 江油市| 宿松县| 库尔勒市| 枣庄市| 湄潭县| 霍邱县| 伊宁市| 来安县| 六盘水市| 宜黄县| 巴南区| 海城市|