ROS:創建、編譯、運行流程


https://www.it610.com/article/1294688627372138496.htm

      在做高博的手寫VIO課程的第二章作業,作為一個對ROS零基礎的人來說,編譯ros下的cpp、尋找可執行文件,都找了半天,記錄一下流程,便於之后使用。

1.創建工作空間

mkdir -p ~/ROS_WORKSPACE/vio_imudata/src  #創建一個工作空間
cd ~/ROS_WORKSPACE/vio_imudata/src   #進入該目錄
catkin_init_workspace   #會產生一個Cmake.list文件在該目錄下

接着編譯該空的工作空間

cd ..  #回到與src同級別的路徑下
catkin_make

這個時候會多了兩個文件夾,一個devel和一個build。並且在devel下有幾個setup.*sh,我們可以根據我們的終端類型來進行確定使用那個sh來激活環境變量,如我使用的是bash終端

source devel/setup.bash #激活該工作空間的環境變量
echo $ROS_PACKAGE_PATH #讀取環境變量 /home/john/ROS_WORKSPACE/test/src:/opt/ros/melodic/share

2.創建功能包(package)

cd src #進入src空間

catkin_create_pkg imu_data std_msgs roscpp rospy #創建功能包,imu_data為包名字,后面的為依賴

這個命令會創建一個名字為imu_data的package,並在這個包下面生成了一系列的文件和文件夾:

CMakeLists.txt  include  package.xml  src

其中CMakeLists.txt是一個cmake的腳本文件,用來編譯源文件的管理平台

其中package.xml是配置文件,生產所需要的依賴

src用來放置我們的源代碼

3.放置源代碼

我們把源代碼放入到src文件中后,對CMakeList.txt和package.xml進行修改。

4.源碼的編譯

我使用的CMakeList.txt中的內容為:

cmake_minimum_required(VERSION 2.8.3)
project(vio_data_simulation)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  rosbag
)


catkin_package(

)

include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

add_executable(${PROJECT_NAME}_node
    src/gener_alldata.cpp src/param.cpp src/utilities.cpp src/imu.cpp)
target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
)

add_executable(${PROJECT_NAME}_node_txt
    src/gener_alldata_txt.cpp src/param.cpp src/utilities.cpp src/imu.cpp)

package.xml基本上不需要改動,會自動生成好。

接着就是編譯工作區:

cd ~/ROS_WORKSPACE/test  #回到工作區中與src同一層的路徑下
catkin_make #進行編譯

5.程序的執行

在完成編譯之后,會生成一個可執行文件。我之前都是在工作空間中利用mkdir build, cmake  .. , make 這一系列操作進行編譯的,一般都會在build中生成可執行文件,但是這次的不一樣,沒有在build中。剛開始以為沒有生成來着,但是編譯成功了,肯定是生成了,找了半天,發現在/home/john/ROS_WORKSPACE/vio_imudata/devel/lib/vio_data_simulation中,即在devel的文件夾下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM