2025.9.25 计划
项目
学习
总结
创建一个ros项目步骤
1.terminalmkdir -p ws/src创建工作空间
2.cd ws进入工作空间并catkin_make生成build, devel两个目录
3.code .进入vscode编辑
4.ctrl + shift + B 编辑catkin_make:build这个task.json文件
{
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug",
"type": "shell",
"command": "catkin_make",
"args": [],
"presentation": {
"reveal": "always",
},
"problemMatcher": "$msCompile",
"group": {"kind":"build", "isDefault":"true"},
}
]
}
配置完之后ctrl + shift + B测试是否可以编译。
5.选定src目录并Create Catkin Package创建功能包,类似于c++中的"类",实现了一个单独的功能模块,但是无需实例化。 接着添加此功能包需要的依赖:roscpp rospy std_msgs之后ctrl + shift + B测试是否可以编译。
6.src目录下创建cpp文件开始编辑:
#include "ros/ros.h"
int main(int argc, char *argv[]) {
// 解决乱码问题
setlocale(LC_ALL, "");
ros::init(argc, argv, "hello_c");
ROS_INFO("hello");
return 0;
}
7.修改cmakelist中的add_executable(别名 src/指向的源文件.cpp)以及target_link_libraries两部分,target部分改为:
target_link_libraries(别名
${catkin_LIBRARIES}
)
之后ctrl + shift + B测试是否可以编译。
8.开一个新终端启动roscore,再开一个新终端运行source ./devel/setup.bash来梳理环境,运行包位置信息等,然后运行rosrun 功能包名 节点名称即可
一个项目的结构图
my_navigation_project/ // 总项目
├── src/
│ ├── robot_control/ // 某一个功能包
│ │ ├── src/
│ │ │ ├── motor_control_node.cpp // 实现这个功能的某一个节点
│ │ │ └── joystick_control_node.cpp
│ │ └── CMakeLists.txt
│ ├── robot_sensors/
│ │ ├── src/
│ │ │ ├── lidar_node.cpp
│ │ │ ├── camera_node.cpp
│ │ └── CMakeLists.txt
│ ├── robot_navigation/
│ │ ├── src/
│ │ │ ├── path_planning_node.cpp
│ │ │ └── obstacle_avoidance_node.cpp
│ │ └── CMakeLists.txt
└── CMakeLists.txt
launch文件
本质上是一个mxl文件
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="turtle_GUI"/>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_key"/>
<node pkg="hello_vscode" type="hello_vscode_c" name="hello" output="screen"/>
</launch>
pkg是功能包名,type是节点名称,name是别名
启动的时候先source ./devel/setup.bash定位包,再roslaunch 此包名 xxx.launch
进程通信部分
发布订阅模式图解

浙公网安备 33010602011771号