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

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的文件夹下。

相关作品

安全芯片 国外365平台

安全芯片

❤️ 508 📅 07-13
交易猫收钱要多久 国外365平台

交易猫收钱要多久

❤️ 700 📅 07-22
陈鲁豫为什么那么瘦 和不吃主食有很大的原因 365体育官网全球最大

陈鲁豫为什么那么瘦 和不吃主食有很大的原因

❤️ 57 📅 06-29