基于gazebo实现多机器人编队仿真(三)

2023-05-16

基于gazebo实现多机器人编队仿真(三)——三角编队与一字编队的实现

  • 前言
  • 原理简图
  • 代码实现
    • 虚拟坐标的发布
    • 跟随者消息接收
  • 总结

前言

前文已经阐述了多机器人的编队模型实现与多辆小车跟随的实现,本文以通过tf通信建立相对于领航机器人的虚拟坐标,通过broadercaster发布虚拟坐标,最后使跟随者收听虚拟坐标,再对虚拟坐标进行跟随,这样就把编队问题转换为了跟随着对目标点的追踪问题。

原理简图

在这里插入图片描述

代码实现

虚拟坐标的发布

广播发布模板代码可见前文或者古月居ros21讲,这边发布虚拟机器人的坐标只需要设定相对与领航机器人的相对位置,即Vector3(0, -1.0, 0.0)中的内容。

    transform0.setOrigin( tf::Vector3(0, 1.0, 0.0) );//初始化  相距1.0米
    transform0.setRotation( tf::Quaternion(0, 0, 0, 1) );
    transform1.setOrigin( tf::Vector3(0, -1.0, 0.0) );//初始化  相距1.0米
    transform1.setRotation( tf::Quaternion(0, 0, 0, 1) );//广播,指明相对关系和数据
    br0.sendTransform(tf::StampedTransform(transform0, ros::Time::now(), "tb3_0", "virtual_0"));
    br1.sendTransform(tf::StampedTransform(transform1, ros::Time::now(), "tb3_0", "virtual_1"));
    rate.sleep();

跟随者消息接收

listerner程序与前文中的大致相同,只需要修改跟随者的跟随目标即可,修改区域代码如下:

listener.waitForTransform("/tb3_2", "/virtual_1", ros::Time(0), ros::Duration(3.0));
listener.lookupTransform("/tb3_2", "/virtual_1", ros::Time(0), transformfl);

总结

当掌握了最基本的tf发布与接听与tf原理之后,实现本文的小车跟随就比较简单。用本文的代码虽然虚拟坐标定义在了领航机器人的两边,但是由于ros发布与机器人的跟随有延迟,当领航车一直在运动时,后车永远不会到目标点,实现的其实是三角编队;若想要实现一字形编队,需要把虚拟坐标设置的领航车的左前方与右前方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于gazebo实现多机器人编队仿真(三) 的相关文章

  • mysql备份与恢复:完全备份,增量备份,基于位置点恢复,基于时间点恢复

    理论介绍 数据备份的重要性数据库备份的分类 常见的备份方法MySQL完全备份数据库完全备份分类 数据库备份与恢复MySQL数据库完全备份与恢复mysqldump备份与恢复MySQL数据库增量备份恢复基于位置的恢复基于时间恢复 数据备份的重要
  • vue => element 进度条 自定义文字 三层数据渲染页面报错:Invalid prop: custom validator check failed for prop “percentage

    三层数据渲染页面报错 报错原因分析 xff1a 解决方案 xff1a span class token operator lt span span class token operator span span class token ope
  • 使用xfsdump进行文件的备份与恢复

    1 添加一块硬盘大小随意 2 sdb为新添加的硬盘 3 格式化为xfs格式 4 新建目录并永久挂载 mount dev sdb xfsdump 5 将sdb设备挂载到 xfsdump 目录 编辑 etc fstab 文件 将 挂载的信息卸写
  • Jetson Orin NX上手使用(Linux系统的配置)

    先介绍手上拿到的orin nx模块 xff1a Jetson Orin NX 16GB 100TOPS的算力听起来顶呱呱 摸过一些jetson系列套件的我拿到手自信开搞 然后就自闭了 他好像跟以前的不是一个路子啊 xff08 以前摸过的有n
  • 51单片机的串口通信原理

    一 并行和串行通信方式 通信有并行和串行两种通信方式 在单片机系统以及现代单片机测控系统中信息交换多采用串行通信方式 1 并行通信方式 并行通信通常是将数据字节的各位用多条数据线同时进行传送 xff0c 每一位数据都需要一条传输线 如下图所
  • 正点原子stm32F407学习笔记3——蜂鸣器实验

    一 硬件设计 蜂鸣器为有源蜂鸣器 xff0c 当 PF 8 输出高电平的时候 xff0c 蜂鸣器将发声 xff0c 当 PF 8 输出低电平的时候 xff0c 蜂鸣器停止发声 xff0c 硬件原理图如下 二 软件设计 1 新建beep c文
  • 先面试还是先笔试-找工作,是先面试,还是先笔试?

    有些工作不需要笔试 有采访 一般来说 xff0c 你会先在笔试中检查你的专业水平 xff0c 然后在面试时检查你的形象和沟通水平 公务员考试先面试还是笔试 先笔试 xff0c 通过后面试 是先面试还是先笔试 xff1f 不同的单位会有不同的
  • 北京邮电大学2023级工商管理硕士MBA(非全日制)已开启

    工商管理硕士专业学位 xff08 非全日制 xff09 预面试通知 北京邮电大学MBA项目以 技术叠加管理 科学叠加艺术 为理念 xff0c 以 追求卓越 持续创新 为驱动 xff0c 面向信息化社会的企事业单位 政府部门及创业者 xff0
  • 【视频教程】基于PyTorch机器学习与深度学习实践应用与案例分析

    近年来 xff0c 随着AlphaGo 无人驾驶汽车 医学影像智慧辅助诊疗 ImageNet竞赛等热点事件的发生 xff0c 人工智能迎来了新一轮的发展浪潮 尤其是深度学习技术 xff0c 在许多行业都取得了颠覆性的成果 另外 xff0c
  • ORB-SLAM3运行过程记录

    试着运行ORB SLAM3 xff0c 做的部分修改 在ORB SLAM3 Examples ROS ORB SLAM3 src中修改ros rgbd cc的topic订阅 xff1a xff08 参考https blog csdn net
  • Introduction写作常用句式

    Introduction 引言部分介绍此项研究的主题 背景 范畴 xff0c 并说明全文的结构 xff0c 便于读者阅读 xff0c 一般包含几项内容 xff1a 1 背景介绍 2 现有问题 3 研究目标 4 篇章结构 1 背景介绍 has
  • mysql中的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP

    在mysql中 xff0c 如果类型为时间的列设置了CURRENT TIMESTAMP xff0c 那么在insert一条新记录的收 xff0c 时间字段自动获取到当前时间 xff0c 如果设置了ON UPDATE CURRENT TIME
  • vncviewer使用教程

    首先安装vncviewer 之后在服务器输入你想要开启的 端口号 conda deactivate vncserver 88 VNC Server这里写 你的服务器地址 5900 43 端口号 如果出现以下问题 xff0c 可能是配置文件的
  • podman常见使用命令

    常用命令 容器 podman run 创建并启动容器 podman start 启动容器 podman ps 查看容器 podman stop 终止容器 podman restart 重启容器 podman attach 进入容器 podm
  • 对子模函数(submodular function)的一些理解

    1 子模函数是一个集合函数 xff0c 又减小回转属性 xff08 diminishing returns 子模函数适用于多种应用 xff0c 包括近似算法 xff0c 博弈理论 xff0c 和电网络 2 标准定义 xff1a 如果是一个集
  • 二项分布(np.random.binomial),搞它就完了

    二项分布 xff08 np random binomial xff09 xff0c 搞它就完了 xff01 首先我们的搞清楚伯努利分布和二项分布 xff0c 我们先找个例子 xff0c 选西瓜 xff0c 待我细细道来 伯努利分布 选一个西
  • Numpy给数组增加维度的操作

    不说其他的 xff0c 直接给个例子就懂了 a是一个一维数组 a 61 np array 0 0 10 0 20 0 30 0 print a shape a np newaxis a np newaxis shape 输出 4 0 10
  • 参数辨识的简单理解

    1 参数辨识技术 xff0c 是一种将理论模型与试验数据结合起来用于预测的技术 参数辨识根据实验数据和建立的模型来确定一组模型的参数 xff0c 使得由模型计算得到的数值结果能最好地拟合测试数据 xff08 可以看做是一种曲线拟合问题 xf
  • Matlab中持久变量(persistent)在Python中的理解

    语法 persistent var1 varN 说明 persistent 将变量var1 varN 声明为持久变量 持久变量是声明它们的函数的局部变量 xff1b 但其值保留在对该函数的各次调用所使用的内存中 xff0c Matlab命令
  • 新的代数计算软件包——Magma

    Magma是一款由悉尼大学数学与统计学系计算代数学小组开发的功能强大的代数计算程序包 xff0c 该软件专门解决代数系统中的数论 代数几何和代数组合学的计算问题 新的代数计算软件包 Magma 前言一 Magama安装二 基本操作三 多项式

随机推荐