ROS:プロセスの作成、コンパイル、実行

2249 ワード

高博の手書きVIOコースの第2章の宿題をして、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

この時、2つのフォルダ、1つのdevelと1つのbuildが増えます.そしてdevelの下にはsetup.*がいくつかあります.sh、私たちは私たちの端末タイプに基づいて、bash端末を使用しているように、そのshを使用して環境変数をアクティブにすることができます.
source devel/setup.bash #            
echo $ROS_PACKAGE_PATH #       /home/john/ROS_WORKSPACE/test/src:/opt/ros/melodic/share

2.パッケージの作成
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のフォルダの下にあります.