基于gazebo实现多无人车的编队仿真(一)
基于gazebo实现多无人车的编队仿真(一)——多机器人的显示
- 研究背景
- 宏定义部分
- gazebo的gui启动以及world启动
- 多机器人模型显示部分
- 致谢
研究背景
网上已经有许多的多机器人显示的资料了,本来想通过网上的资料基于自己的松灵机器人模型来实现多机器人的仿真,但是根据网上的教程无法实现,利用标准的group代码实现多机器人后出现gazebo黑屏现象,由于松灵机器人的模型较为复杂,一度怀疑本人的计算机配置不够高,用自己的模型只有日后再更新了,本次项目所使用的模型是官方给出的turtlebot3模型,具体功能包的安装可到wiki中去查找与安装。由于多机器人的显示在turtolebot3功能包中已经有了现成的launch文件,编写方法不尽相同,在此将对其作出解析。
宏定义部分
此部分定义了下面程序书写时所需要用到的一些参数以及名称命名,将其一宏定义的方式现在开头,日后方便参数的调整与修改。
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/><arg name="first_tb3" default="tb3_0"/><arg name="second_tb3" default="tb3_1"/><arg name="third_tb3" default="tb3_2"/><arg name="first_tb3_x_pos" default="-1.0"/><arg name="first_tb3_y_pos" default="-1.0"/><arg name="first_tb3_z_pos" default=" 0.0"/><arg name="first_tb3_yaw" default=" 1.57"/><arg name="second_tb3_x_pos" default=" 0.0"/><arg name="second_tb3_y_pos" default="-1.0"/><arg name="second_tb3_z_pos" default=" 0.0"/><arg name="second_tb3_yaw" default=" 1.57"/><arg name="third_tb3_x_pos" default=" 1.0"/><arg name="third_tb3_y_pos" default=" 0.0"/><arg name="third_tb3_z_pos" default=" 0.0"/><arg name="third_tb3_yaw" default=" 0.0"/>
gazebo的gui启动以及world启动
如果想要修改加载的地图模型,只需要修改<arg name="world_name"这一条即可,导入自己想要加载的地图文件位置。
<include file="$(find gazebo_ros)/launch/empty_world.launch"><arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/empty.world"/><arg name="paused" value="false"/><arg name="use_sim_time" value="true"/><arg name="gui" value="true"/><arg name="headless" value="false"/><arg name="debug" value="false"/></include>
多机器人模型显示部分
多机器人的显示是运用了这条语句,将同一个机器人模型分别以不同的命名复用三次,就可以直接实现多机器人的显示
<group ns = "$(arg first_tb3)"><param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" /><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen"><param name="publish_frequency" type="double" value="50.0" /><param name="tf_prefix" value="$(arg first_tb3)" /></node><node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg first_tb3) -x $(arg first_tb3_x_pos) -y $(arg first_tb3_y_pos) -z $(arg first_tb3_z_pos) -Y $(arg first_tb3_yaw) -param robot_description" /></group><group ns = "$(arg second_tb3)"><param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" /><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen"><param name="publish_frequency" type="double" value="50.0" /><param name="tf_prefix" value="$(arg second_tb3)" /></node><node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg second_tb3) -x $(arg second_tb3_x_pos) -y $(arg second_tb3_y_pos) -z $(arg second_tb3_z_pos) -Y $(arg second_tb3_yaw) -param robot_description" /></group><group ns = "$(arg third_tb3)"><param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" /><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen"><param name="publish_frequency" type="double" value="50.0" /><param name="tf_prefix" value="$(arg third_tb3)" /></node><node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg third_tb3) -x $(arg third_tb3_x_pos) -y $(arg third_tb3_y_pos) -z $(arg third_tb3_z_pos) -Y $(arg third_tb3_yaw) -param robot_description" /></group>
致谢
本文的内容由于已经有了现存的launch文件,因此对此进行了学习,并且修改了少量参数以及文件位置,学习其程序编写的方式,使自己的程序更加规范。
本人在此领域也是新入门,暂时是站在前人的肩膀上进行学习与创作,如果各位读者有问题请尽情在评论区畅言,一定尽我所能为各位解答。接下来会在这个主题下进行一系列更新,各位读者如果在次方向有些好的想法,希望也能提点小生,不胜感激。
基于gazebo实现多无人车的编队仿真(一)相关推荐
- 基于PX4的地面无人车避障系统及路径规划研究
基于PX4的地面无人车避障系统及路径规划研究 人工智能技术与咨询 来源:<动力系统与控制> ,作者姜琼阁等 关键词: 地面无人车:避障:PX4: 摘要: 地面无人车避障及路径规划是指,无人 ...
- XTDrone无人机、无人车等自动控制仿真平台
简要背景 近年来,无人机的智能化程度不断提高,集群的规模不断增大,在这种背景下,良好的无人机通用仿真平台的重要性越发凸显.相较于无人车和地面机器人,无人机更容易出现失控问题.因此,如果利用真实无人机进 ...
- 基于激光雷达slam的无人车室内导航比较分析
1.SLAM的可行性在文献A solution to the simultaneous localization and map building (SLAM) problem中得到了理论上的证明,其 ...
- 基于simulink的光伏电站仿真_基于 Carsim 2016 和 Simulink的无人车运动控制联合仿真(二)...
前言 该节主要说明OPTI非线性求解工具箱的安装与使用 1.简介 OPTI是一个开源的MATLAB优化工具箱,相比MATLAB自带非线性优化求解函数fmincon,该优化器更加人性化,同时也有丰富的求 ...
- airsim 安装指导(无人机、无人车视觉导航仿真平台)
说明: airsim是基于UE4开发的仿真平台,听到UE4这个名字不是做游戏的同学,可能会觉得陌生,但是其实我们经常玩的一些游戏就是基于UE4开发的,比如最近比较火的吃鸡游戏. 借助于UE4强大的虚幻 ...
- 核心案例|中原工学院无人机无人车协同规划与智能控制验证平台
项目名称:无人机无人车协同规划与智能控制验证平台 场 地:室内≥6m*6m*3m 关 键 词:多无人机.无人车协同规划.四旋翼无人机室内避障算法验证 核心案例|中原工学院无人机无人车协同 ...
- 无人车致命车祸视频曝光:Uber技术失败的实锤,一场本可避免的灾难
岳排槐 发自 凹非寺 量子位 出品 | 公众号 QbitAI 坦佩市警察局长帮Uber"开脱"得太早了. 前几天,全球首次无人车导致行人死亡的悲剧发生后,事发地坦佩市的警察局长Sy ...
- Airsim+UnrealEngine4 搭建无人车/无人机自动驾驶仿真环境
文章目录 1. Airsim 概述 2. Unreal Engine 概述 3. 在Linux下环境搭建 3.1. 手动 编译安装 UnrealEngine 3.2 编译airsim 插件 3.3 使 ...
- 无人车系统(五):轨迹跟踪Pure Pursuit方法
今天介绍一种基于几何追踪的无人车轨迹跟踪方法--Pure Pursuit(纯跟踪)方法. 1. 阿克曼转向几何模型 在无人车系统(一):运动学模型及其线性化一文中,里面介绍无人车的运动学模型为阿克曼转 ...
最新文章
- com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 数据库报错
- react怎么存上一页_如何实现 React 中的状态自动保存?
- Node.js 体验-在Windows Azure工作者角色上托管Node.js
- 机房收费--修改密码
- 帮人取款每百元抽10元回扣,最终涉嫌诈骗罪被批捕
- Day10:html和css
- MarkDown/Html在线转换(支持代码高亮,可复制到微信公众号、今日头条)
- Hibernate注解方式实现1-1双向关联
- ip别名及其在tcp压力测试时候的作用
- postgresql 按日期范围查询
- 怎么windows升级?windows版本升级?
- 【6.10校内test】T3 加分二叉树
- 外设适配-TI954 记录
- 搭建STM32开发环境——STM32CubeMX并配合Keil5重写跑马灯程序
- 【76.57%】【codeforces 721A】One-dimensional Japanese Crossword
- CS1526号错误是什么
- uni-app学习心得和填坑,关于uni-app 打包h5 页面的坑
- 【Win 10】学生必备!删除鼠标右键多余的“新建”选项
- 你的春节放假通知邮件发送了吗?邮件自动回复设置
- 新睿云服务器安装Oracle 11g数据库
热门文章
- thinkph6模型事件
- HijackThis日志细解【简明教程增强版】(四)
- win10 安全中心提示安装 TAP Provider V9 for private Tunnel 网络适配器
- cs231n assignment2 PyTorch
- MathJax 规则
- 云原生之使用Docker部署Dailynotes个人笔记管理工具
- SCO UNIX下磁带机的安装与备份
- 飞塔Fortinet防火墙SSL VPN双因素身份认证(2FA)方案
- linux搭建oci环境,Linux下搭建OCI环境
- 手机上html怎么删不掉,格式化也不靠谱?教你如何彻底删除手机上的数据