当前位置:网站首页>Slam learning notes - build a complete gazebo multi machine simulation slam from scratch (III)
Slam learning notes - build a complete gazebo multi machine simulation slam from scratch (III)
2022-07-03 16:05:00 【Pony Baby】
introduction
We can already use multiple robots together SLAM, And fuse the map . This time, , We have built the map , Let multiple robots locate and plan their movements . Please go to my gitee Download the function pack ,gitee In the first article
Environment building
Let's see launch file , In addition to starting the simulation environment and putting it into the robot , We also joined in acml and move_base node ,acml The robot can judge its position in the map through radar scanning data ,move_base Road strength planning can be carried out .
There are many tutorials online , But the core difficulty here is the existence of multiple robots , So there are many namespace conflicts , It needs to be made clear acml and move_base What have you subscribed to topic, To sort out the relationship between multiple robots .
<launch>
<!-- Set parameters -->
<arg name="simulation" default="true"/>
<arg name="move_forward_only" default="false"/>
<group if="$(arg simulation)" >
<!-- Open the simulation world -->
<include file="$(find gazebo_tutorials)/launch/create_world.launch" />
<!-- Place the robot -->
<include file="$(find gazebo_tutorials)/launch/place_robot.launch">
<arg name="robot_x_pos" value="0.0"/>
<arg name="robot_y_pos" value="0.0"/>
<arg name="robot_z_pos" value="0.0"/>
<arg name="robot_yaw" value="0"/>
<arg name="robot_name" value="tb3_0"/>
</include>
<!-- Place the robot -->
<include file="$(find gazebo_tutorials)/launch/place_robot.launch">
<arg name="robot_x_pos" value="1.0"/>
<arg name="robot_y_pos" value="0.0"/>
<arg name="robot_z_pos" value="0.0"/>
<arg name="robot_yaw" value="0"/>
<arg name="robot_name" value="tb3_1"/>
</include>
</group>
<!-- Import map -->
<node name="map_server" pkg="map_server" type="map_server" args="$(find gazebo_tutorials)/map/map.yaml" output="screen">
<!-- <param name="frame_id" value="/map"/> -->
</node>
<!-- amcl location -->
<include file="$(find gazebo_tutorials)/launch/amcl.launch" >
<arg name="ns" value="tb3_0" />
</include>
<include file="$(find gazebo_tutorials)/launch/amcl.launch" >
<arg name="ns" value="tb3_1" />
</include>
<!-- move_base Navigation -->
<include file="$(find gazebo_tutorials)/launch/move_base.launch">
<arg name="ns" value="tb3_0" />
<arg name="move_forward_only" value="$(arg move_forward_only)"/>
</include>
<include file="$(find gazebo_tutorials)/launch/move_base.launch">
<arg name="ns" value="tb3_1" />
<arg name="move_forward_only" value="$(arg move_forward_only)"/>
</include>
<!-- rviz -->
<include file="$(find gazebo_tutorials)/launch/rviz_two_robots.launch" />
</launch>
Instructions
Use command roslaunch gazebo_tutorials navigate_with_map.launch Startup file 
2d pos estimate There is no need to use , Because our initial position is set by ourselves , Basically accurate . But if in use , We may tilt the robot , Then the scanning result of lidar does not match the edge of the map , At this time, you need to use this tool to adjust the posture . When releasing pose, use the one in the upper right corner tool properties, Is this in the default rviz Will not be shown in , Need to be manually added . And now topic There is no namespace , So add... To the front tb3_0/ It represents the first robot pose estimation .
2d Nav Goal Is to release the target location of the hope robot , You also need to modify the upper right corner topic To choose the robot to navigate .
边栏推荐
- [combinatorics] combinatorial identities (review of eight combinatorial identities | product of combinatorial identities 1 | proof | use scenario | general method for finding combinatorial numbers)
- ASEMI整流桥UMB10F参数,UMB10F规格,UMB10F封装
- 利用MySQL中的乐观锁和悲观锁实现分布式锁
- Detailed pointer advanced 1
- 工资3000,靠“视频剪辑”月入40000:会赚钱的人,从不靠拼命!
- [系统安全] 四十三.Powershell恶意代码检测系列 (5)抽象语法树自动提取万字详解
- June to - -------
- 近视:摘镜or配镜?这些问题必须先了解清楚
- Rk3399 platform development series explanation (WiFi) 5.54. What is WiFi wireless LAN
- CString在多线程中的问题
猜你喜欢

初试scikit-learn库

Microservice - fuse hystrix
![SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]](/img/3b/7523eca5bbcdbba29d9b7f6e4791a5.jpg)
SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]

Nifi from introduction to practice (nanny level tutorial) - flow

App移动端测试【4】apk的操纵

"Remake Apple product UI with Android" (2) -- silky Appstore card transition animation

远程文件包含实操

深度学习之三维重建

Redis在Windows以及Linux系统下的安装

Mongodb installation and basic operation
随机推荐
[combinatorics] combinatorial identities (sum of variable terms 3 combinatorial identities | sum of variable terms 4 combinatorial identities | binomial theorem + derivation to prove combinatorial ide
MongoDB 的安装和基本操作
Win32 create window and button (lightweight)
QT use qzxing to generate QR code
Calibre LVL
请求头不同国家和语言的表示
Brush questions -- sword finger offer
Detailed explanation of string function and string function with unlimited length
SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]
Three dimensional reconstruction of deep learning
“用Android复刻Apple产品UI”(2)——丝滑的AppStore卡片转场动画
Go language self-study series | if else if statement in golang
Microservices Seata distributed transactions
The difference between calling by value and simulating calling by reference
《天天数学》连载56:二月二十五日
App移动端测试【4】apk的操纵
About text selection in web pages and counting the length of selected text
How can technology managers quickly improve leadership?
六月 致 -.-- -..- -
App mobile terminal test [4] APK operation