渐渐开始接触项目了,准备把以前学习的ros做一些总结,以致孰能生巧。
ros分布框架学习
- vscode使用
- ros节点和包
vscode使用
下载:https://code.visualstudio.com/
安装:sudo dpkg -i code(tap补全)
code 能快捷启动。
插件安装:中文、ros、cmake tool、bracket xxx
快捷键编译:ctrl+shift+b
这里选择catkin_make build编译(选择src)
后面也可以默认使用catkin_make编译
"group":"kind":"build","isDefault":"true"
ros节点和包
- 一个功能包中可以有多个节点
- 一个任务需要几个节点的配合才能完成
创建工作空间
mkdir -p catkin_ws/src
进入工作空间
cd catkin_ws/src
创建功能包
catkin_create_pkg ssr_pkg rospy roscpp std_msgs
package.xml出现就说明是一个功能包
创建节点:
功能包的src中创建chao_node.cpp
#include <ros/ros.h>
main自动生成代码,
添加:
printf(“hello world!\n”);
修改CMakeLists:
add_executable(radar_node src/radar_node.cpp)
其中:
radar_node节点名
radar_node.cpp可执行文件
但是真正在ros中使用时肯定是不能单独这样写。
在printf中继续加入:
ros::init(argc, argv, "chao_node")
这里的int main是有问题的(这里是一个小漏洞):
int main(int argc, char *argv[])
顺便再把printf的东西可以改一下。
我的枪去而复返,你的生命有去无回
同时呢,想要持续输出东西的话,就需要while进行循环:
while(ture)
{
printf("别投,我还能秀!\n");
}
此时总体的节点代码为:
#include <ros/ros.h>
int main(int argc, char *argv[])
{
ros::init(argc, argv, "radar_node");
printf("hello world!\n");
while (true)
{
printf("别投,我还能秀!\n");
}
return 0;
}
注意修改CMakeLists:
add_executable(radar_node src/radar_node.cpp)
节点名 可执行文件
target_link_libraries(radar_node
${catkin_LIBRARIES}
)
节点名改了就行
最后的结果:
ok。
总体的架构总结如下:
架构图