目录
软件安装要求
代码实现
创建ROS工作空间
创建ROS功能包
编写C++代码实现
catkin_make编译代码并运行
问题及感悟
参考链接
软件安装要求
我本人使用的是ubuntu20.04,与其对应的ROS版本为noetic,同时需要在Linux下安装vscode软件。
ROS安装自行百度。
VScode安装参考我前面的文章。正确安装了VScode以及ROS后需要在VScode中下载相关扩展,以便于后续编程。
代码实现
创建ROS工作空间
mkdir -p wt_learn_demo/src
递归创建目录wt_learn_demo并且在此目录下创建src目录,src目录的创建是必要的,之后创建的ROS工作包均需要放到src目录下。此时我的文件目录结构如下:
在src目录下执行catkin_make命令,创建ROS工作空间,执行后在wt_learn_demo文件夹下出现3个同级目录,src、devel、build。
此时会在src目录下生成一个CMakeLists.txt文件,这个文件是catkin_make主动生成的,无需理会。
此时会在工作空间wt_learn_demo目录下生成.vscode文件夹,里面包含两个文件,一个名为c_cpp_properties.json,另一个为settings.json。如果你此时工作文件下没有这两个文件(必须要解决c_cpp_properties.json文件的问题,否则无需无法引用ros包),也有解决方法。
将鼠标放到VScode任意位置,并按下ctrl+shift+p按钮,在VScode上方出现的搜索框中输入C/C++:Edit Configurations(JSON)
并点击,随后在工作空间中即会出现.vscode文件夹,里面包含c_cpp_properties.json文件,另外一个文件settings.json如果没有出现,此时也无需理会。
为何c_cpp_properties.json文件如此重要,此文件里面包含一个"inludePath"后续编写C++代码的头文件会根据这里包含的文件位置进行查找。
由于后面需要使用到ROS,我上面已经将ros对应安装目录下的include文件夹中的所有文件添加到上面了,如果你此时这个文件里面没有出现”opt/ros/noetic/include/**"这个代码片段,需要手动添加一下,需要将ros对应版本改为自己的ros版本,我的ubuntu20.04对应的是noetic。
创建ROS功能包
ROS功能包的创建必须位于src目录下,使用下述命令进入src目录并创建ROS功能包:
cd src
catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs
与上面相对应,这里的hellowolrd就是包名,后面输出时会使用到。留意一下。
创建成功后,在工作空间wt_learn_demo目录下的src文件夹会创建helloworld文件夹。
上面创建工作空间helloworld时,后面添加的roscpp、rospy、std_msgs能都删除呢?可以,如果在创建工作空间时没有添加依赖参数,后续只需要在wt_learn_demp/src/CMakeLists.txt文件中添加依赖包即可。(具体路径参考上图)
编写C++代码实现
在ros工作包helloworld文件夹对应的src目录下创建helloworld.cpp文件,里面就是要编写的ROS代码。
将下述代码复制到helloworld.cpp文件里面:
#include "ros/ros"int main(int argc, char *argv[])
{//执行 ros 节点初始化ros::init(argc,argv,"hello");//创建 ros 节点句柄(非必须)ros::NodeHandle n;//控制台输出 hello worldROS_INFO("hello world!");return 0;
}
并将下述代码添加到工作包helloworld里面的CMakeLists.txt文件里。
aux_source_directory(./src SRCS)
add_executable(helloworld ${SRCS})
target_link_libraries(helloworld ${catkin_LIBRARIES})
catkin_make编译代码并运行
通过终端回到工作空间wt_learn_demo里,进入自己创建的工作空间中。我创建的目录结构如下。
在次目录下执行catkin_make命令即会在build工作空间对应的build文件夹下生成二进制文件。
至此,代码已经编写并编译成功,之后需要运行ros代码,分为三步。
- 启动ros:随意带来一个终端,输入roscore命令。
-
wt@wt:/usr/share/applications$ roscore
-
- 在刚才执行catkin_make的文件目录执行source devel setup.bash命令。
- 启动ros节点:rosrun helloworld helloworld。
wt@wt:~/Lab/experiments/wt_learn_demo$ source devel/setup.bash
wt@wt:~/Lab/experiments/wt_learn_demo$ rosrun helloworld helloworld
` 终端输出helloworld,代码执行成功。
问题及感悟
暂时累了,找时间补上。
参考链接
【ROS】VSCODE + ROS 配置方法(保姆级教程,总结了多篇)_vscode ros-CSDN博客