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

进程通信部分

发布订阅模式图解

image

posted on 2024-09-25 09:39  Laurance  阅读(44)  评论(0)    收藏  举报