ROS入门(十)——两只小乌龟(乌龟跟随C++实现)

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

所用的学习链接:

【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P204-

【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/

一、目标

产生两只乌龟 A 和 B ,B 会自动运行至A的位置。

键盘只控制 A 的运动,而 B 跟随 A 运动。

乌龟跟随实现的核心,是乌龟 A 和 B 都要发布相对世界坐标系的坐标信息,然后,订阅到该信息需要转换获取A相对于B坐标系的信息,最后,再生成速度信息,并控制B运动。

  1. 启动乌龟显示节点
  2. 在乌龟显示窗体中生成一只新的乌龟(需要使用服务)
  3. 编写两只乌龟发布坐标信息的节点
  4. 编写订阅节点订阅坐标信息并生成新的相对关系生成速度信息

二、准备工作

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.组织请求数据
    //      创建乌龟
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值