ROS学习笔记

教学来源及参考文档

链接: 奥特学园.
链接: 文档.
链接: 古月居.

创建ROS工作空间

工作空间(workspace)是一个存放工程开发相关文件的文件夹。
src:代码空间(Source Space)
build:编译空间(Build Space)
devel:开发空间(Development Space)
install:安装空间(Install Space)
古月居教程

vscode相关基础操作

cd到工作空间目录下

cd catkin_ws

终端输入

code .

启动vscode。
奥特学园教程

编译
crtl shift B
在这里插入图片描述

直接将文档中的代码copy过来

{
// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make:debug", //代表提示的描述性信息
            "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选always或者silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

ROS通讯机制

话题通信(发布订阅模式)

服务通信(请求响应模式)

参数服务器(参数共享模式)

话题的发布与订阅
在这里插入图片描述

ROS master 相当于“媒婆”,将发布方(Publisher)与接收方/订阅方(Subscriber)连接起来,牵完线后,ROS master 就可以关了。

话题的发布

1.创建功能包
vscode 中实现:src目录下鼠标右键选择(Create catkin package)创建
终端中实现:在src目录下

catkin_create_pkg 名字 依赖(roscpp rospy std_msgs…)

src: 源码

    |-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

        |-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件

        |-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)

        |-- scripts 存储python文件

        |-- src 存储C++源文件

        |-- include 头文件

        |-- msg 消息通信格式文件

        |-- srv 服务通信格式文件

        |-- action 动作格式文件

        |-- launch 可一次性运行多个节点 

        |-- config 配置信息

    |-- CMakeLists.txt: 编译的基本配置

2.编写源码(这里演示C++)
源码存放在创建的功能包下的src目录下。

实现流程:
1.包含头文件
2.初始化 ROS 节点:命名(唯一)
3.实例化 ROS 句柄
4.实例化 发布者 对象
5.组织被发布的数据,并编写逻辑发布数据

模版:

#include "ros/ros.h"
#include "std_msgs/String.h"

int main(int argc, char **argv)
{
	//ros节点初始化,这里的talker是节点名称(名字唯一)
	ros::init(argc, argv, "talker");

	//创建ros句柄,管理节点资源
	 ros::NodeHandle n;
	 /*
	 官方注释:NodeHandle 是与 ROS 系统通信的主要接入点。
   构造的第一个 NodeHandle 将完全初始化这个节点,最后一个
NodeHandle 被破坏将关闭节点。
	 */

	//创建一个发布者对象,<..>是指消息类型,"chat..."是话题名,
	//1000是设置的队列长度,果消息发布的速度比我们发送的快,
	//这里的数字指定在丢弃一些消息之前要缓冲多少消息			
	  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
	
	//设置循环频率
	ros::Rate loop_rate(10);

	 int count = 0;
	 //ok函数:节点是否还活着
  	while (ros::ok())
  	{
		//初始化

		//消息发布
		
		//按照循环频率延时
		loop_rate.sleep();
	}
  	
  	return 0;
}

3.配置CMakeList.text文件(功能包目录下的)

add_executable(${PROJECT_NANE}_node src/plumbing_pub_sub_node.cpp)

第一个参数:映射源文件节点名称
第二个参数: 对应cpp文件名字

target_ link libraries( $ {PROJECT NAME} node $ {catkin_LIBRARIES)

参数:和前面映射名称一致

编译:
vscode中 快捷键 ctrl + shift + B
终端中 catkin_make

运行之前在工作空间的根目录下执行环境变量的配置

source ./devel/setup.bash

利用rostopic echo打印消息到屏幕
在这里插入图片描述
至此,创建结点发布消息的基础模版教程演示完毕。

Launch 文件

官方文档定义:roslaunch is a tool for easily launching multiple ROS nodes locally and remotely via SSH, as well as setting parameters on the Parameter Server. (roslaunch 是一个工具,可以通过 SSH 在本地和远程轻松启动多个 ROS 节点,以及在参数服务器上设置参数。)
实现功能:一次性启动多个节点

$ roslaunch package_name file.launch

为避免每次运行前都要输入此语句,

source ./devel/setup.bash

在文件夹中 ctrl+H显示隐藏文件,
打开 .bashrc文件,在文件末尾添加语句

source /home/username/catkin_ws/devel/setup.bash

运行命令
rosrun + 文件名(功能包)+ 节点名

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路飞DoD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值