环境 Ubuntu16.04 ros-kinetic vs-code
关于C++编写在vs-code编写时候没有出现语法错误,而在终端编译时通过不了,或者说编译也通过过了,写launch文件确实调用不了源文件定义的node时可能尝试的解决手段:
打开我们创建源文件的那个包里面的两个文件:
(1)cmakelist.txt
1). project(imu) 告诉编译器咱们这个自定义包叫imu
2). cs_add_library(imu src/ P R O J E C T N A M E / i m u . c p p ) 告 诉 编 译 器 , 我 们 创 建 一 个 自 定 义 的 库 i m u , 并 且 该 库 的 使 用 s r c / {PROJECT_NAME}/imu.cpp ) 告诉编译器,我们创建一个自定义的库imu ,并且该库的使用src/ PROJECTNAME/imu.cpp)告诉编译器,我们创建一个自定义的库imu,并且该库的使用src/{PROJECT_NAME}/imu.cpp生成的.这里的$里面还不是很清楚到底指的是本创建的包还是其他的包.
3). cs_add_executable(imu src/imu.cpp) 告诉编译器,我们依据包内src/imu.cpp创建了名称为imu的node
4). target_link_libraries(imu xxx-cpp) 告诉编译器,我们这个imu的node创建依赖xxx-cpp库函数的
(2)Package.xml
build_depend/run_depend 标签内放置的是这个包的依赖库,不过做ros开发时候,一般放的是ros官方认证的库,如tf/std_msgs等等库
下面是按照上面的大体流程修改的cmakelist.txt与package,并编译并可以启动的node:
当编译通过了,出现过roscore启动错误,说网络没有配置好(所有的roslaunch指令都不能用了,之前没出现过).然后在bashrc文件里面export ROS_HOSTNAME标签重新换了一个ip,这个是ifcofig指令出来的其中一个ip啥的,具体原因不清楚,如果有哪位大神知道麻烦告知一下,写了.