创建节点前准备
因为节点不能脱离包而存在,所以为Node找一个上级组织——包,eg:ssr_pkg(格式为xx_pkg)。注:也可以用集合的包含关系来解释
此时在这个ssr_pkg包中就有了此节点,随便命个名:超声波_Node(格式为xx_Node)。
工作空间:catkin_ws 文件夹
创建软件包:首先进入工作空间src目录下
cd catkin_ws/src/ #进入工作空间的src目录下
catkin_create_pkg ssr_pkg rospy roscpp std_msgs #创建包 catkin_create_pkg <包名> <依赖项列表>
解释一下:依赖项(把通用的节点/资源封装在一起,形成的包,因此这个包就成了通用的依赖项,可以参考Java语言中的“封装”思想)。所以以下3项均为包,查看包可以用:roscd roscpp通过ls查看,创建包时,也一定要选择系统中已经存在的软件包!
rospy python语言支持
roscpp C++语言支持
ros std_msgs 标准消息包
这里创建了4个项,前两个是文件,后俩是目录(位置在工作空间下src下,进入包中ssr_pkg,便可看到)
接下来进入VSCode中,找到ssr_pkg目录下,可以看到多了CMakeLists.txt文件,这个文件是编译相关的配置文件。package.xml是对包的描述。
创建Node节点
进入code,在ssr_pkg包下的src,右键创建文件,命名chao_node.cpp(格式:xx_node.cpp)
首先
#include <ros/ros.h>
int main(int argc, char *argv[])
{
ros::init(argc,argv,"chao_node");
printf("Hello World!\n");
return 0;
}
接下来在CMakeLists.txt文件最后加上
add_executable(chao_node src/chao_node.cpp)
解释一下:代码来源CMakeLists.txt文件中,在build下找合适的编译规则
原指令:# add_executable(${PROJECT_NAME}_node src/ssr_pkg_node.cpp)
其中:${PROJECT_NAME}_node是可执行文件名,我这里的可执行文件是chao_node,
第二项src/ssr_pkg_node.cpp是指定从哪个代码文件进行编译,这里选择的是src目录下的chao_node.cpp
所以更改为上述指令,最后别忘了去掉#以及保存。
编译节点
在code中:Ctrl+shift+B
或者在终端依次输入
cd catkin_ws #进入包中
catkin_make #编译整个包
运行节点
首先启动ros系统,在终端中输入roscore
运行节点
rosrun ssr_pkg chao_node
解释:rosrun <包名> <节点文件>
若出现找不到ssr_pkg包,source一下(找到setup.bash,也可以尝试把工作空间的环境参数加载到终端程序中,具体操作见补充)
source ~/catkin_ws/devel/setup.bash
然后重新运行节点
你就会得到"Hello World!"啦
完善节点信息
以下为一个案例:
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char *argv[])
{
ros::init(argc,argv,"chao_node");
printf("我是111!\n");
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<std_msgs::String>("shang_ke_le",10);
ros::Rate loop_rate(10);
while(ros::ok())
{
printf("我要刷屏了\n");
std_msgs::String msg;
msg.data = "我是傻子";
pub.publish(msg);
loop_rate.sleep();
}
return 0;
}
诸君且听我娓娓道来
ros::init(,,); //用来初始化,前两个是mian的参数:argc,argv,第三位填节点名称
有了这个,就要有相对应的库函数:#include <std_msgs/String.h>
在CMakeLists.text文件中,加上:
target_link_libraries(chao_node
${catkin_LIBRARIES}
)
然后编译,运行....
补充:
最后:把工作空间的环境参数加载到终端程序中
在终端输入
code ~/.bashrc
进入到了setup.bash文件,在这个文件的最后加上
source ~/catkin_ws/devel/setup.bash
就欧克啦!