所用的学习链接:
【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P204-
【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/】
一、目标
产生两只乌龟 A 和 B ,B 会自动运行至A的位置。
键盘只控制 A 的运动,而 B 跟随 A 运动。
乌龟跟随实现的核心,是乌龟 A 和 B 都要发布相对世界坐标系的坐标信息,然后,订阅到该信息需要转换获取A相对于B坐标系的信息,最后,再生成速度信息,并控制B运动。
- 启动乌龟显示节点
- 在乌龟显示窗体中生成一只新的乌龟(需要使用服务)
- 编写两只乌龟发布坐标信息的节点
- 编写订阅节点订阅坐标信息并生成新的相对关系生成速度信息
二、准备工作
1.创建环境
① 创建工作空间
# mkdir -p 空间名称/src # 必须得有 src
mkdir -p 7.24_turtle/src
cd 7.24_turtle
catkin_make
# 启动
code .
② 创建功能包 tf1_turtle
右键src ---> create catkin package→自定义package name(例 tf1_turtle)→dependencies:roscpp rospy std_msgs tf2 tf2_ros tf2_geometry_msgs geometry_msgs turtlesim
roscpp rospy std_msgs tf2 tf2_ros tf2_geometry_msgs geometry_msgs turtlesim
如果有包缺失的话可以调用以下代码加载:
# sudo apt-get install ros-<ros版本>-包名
# 包名中的 下划线(_)要换成杠(-)
# sudo apt-get install ros-noetic-包名
ctrl+shift+b 编译运行,选择 catkin_make:build,看是否报错,没报错则依赖包没有出现问题。
③ 创建文件夹
在 tf1_turtle 目录下新建文件夹 launch(存放launch文件)、scripts(存放python文件)
④ 创建 t1_turtle2.cpp 文件
在 src 文件夹下新建文件 t1_turtle2.cpp,用于生成一只新的小乌龟
// 1.头文件
#include "ros/ros.h"
#include "turtlesim/Spawn.h"
/*
目标:向服务器发送请求,生成一只新的乌龟
话题:/spawn
消息:turtlesim/Spawn
1.头文件
2.初始化 ROS 节点
3.创建节点句柄
4.创建客户端对象
5.组织数据并发送
6.处理响应
*/
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
// 2.初始化 ROS 节点
ros::init(argc,argv,"service_call");
// 3.创建节点句柄
ros::NodeHandle nh;
// 4.创建客户端对象
ros::ServiceClient client= nh.serviceClient<turtlesim::Spawn>("/spawn");
// 5.组织数据并发送
// 5-1.组织请求数据
// 创建乌龟

本文介绍如何使用ROS系统实现两只乌龟的跟随行为。通过发布和订阅乌龟的坐标信息,控制一只乌龟跟随另一只移动。涉及ROS节点创建、坐标变换及速度控制等关键技术。
1028

被折叠的 条评论
为什么被折叠?



