ROS:创建、编译、运行流程

      在做高博的手写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的文件夹下。

 

你可能感兴趣的:(SLAM)