教程一Jackal底盘模型搭建ROS Gazebo仿真
一、创作背景
现在到网上搜索“Gazebo小车仿真”这个关键词,出来的内容要么就是Turtlebot系列或者Husky系列,要么就是从零搭建自己的小车模型。。。那么如果你既不想使用Turtlebot这种虽复杂但过于小巧的底盘模型,又不想使用博主们自己编写搭建的接地气小车模型的话,那么本教程即将为你带来一个颜值还算过得去,描述文件结构清晰简洁的底盘模型——Jackal四轮差速底盘!
二、环境依赖
官方推荐的是Ubuntu16.04 ROS Kinetic系统版本组合
我这边使用的是Ubuntu18.04 ROS Melodic系统版本组合
所以本教程只能保证在最高为ROS Melodic版的环境下完美复现,如果你使用的是ROS Noetic等更新的版本,则不保证能够使用该模型。望知悉!以免做无用功。当然,如果有朋友使用本教程,在Ubuntu20.04 Noetic版本上成功复现的,也请不吝回复,让更多朋友知道。
三、代码链接
完整工程在 multi_jackal_simulate.zip 这个压缩包
https://github.com/RustSon/multi_jackal_simulatehttps://github.com/RustSon/multi_jackal_simulate
四、部署流程
1、把下载下来的代码解压到一个空的工作空间,比如我这里叫做 jackal_ws/src:
-
└── jackal_ws/src
-
├── multi_jackal_base
-
├── multi_jackal_control
-
├── multi_jackal_description
-
├── multi_jackal_nav
-
├── multi_jackal_tutorials
-
├── navigation-melodic-devel
-
├── navigation_msgs
-
└── README.md
2、安装一些必要的依赖:
-
cd jackal_ws
-
-
sudo apt-get install ros-melodic-controller-manager ros-melodic-interactive-marker-twist-server ros-melodic-robot-localization ros-melodic-robot-state-publisher ros-melodic-tf ros-melodic-urdf ros-melodic-xacro ros-melodic-gazebo-ros-control ros-melodic-hector-gazebo-plugins ros-melodic-joint-state-controller ros-melodic-diff-drive-controller ros-melodic-lms1xx ros-melodic-pointgrey-camera-driver ros-melodic-pointgrey-camera-description ros-melodic-teb-local-planner
-
-
catkin_make -j4
因为我这里给的工程里面包含了 navigation 导航包,而我上面安装的依赖里是没有包含导航包的依赖项的,如果编译报错,你可以根据错误提示,自行安装相应的ros依赖包。当然,如果你觉得这样过于麻烦,也可以使用下面这条命令一键完成:
sudo apt-get install ros-melodic-navigation
3、不出意外,你现在已经编译通过了。如果你之前从未使用过 Gazebo 进行仿真演练,那么请先下载必要的一些模型文件到本地;如果你已经使用过一些比较复杂的仿真场景了,那么这一步无需进行:
-
cd ~/.gazebo/
-
mkdir models
-
cd models
-
wget http://file.ncnynl.com/ros/gazebo_models.txt
-
wget -i gazebo_models.txt
-
ls model.tar.g* | xargs -n1 tar xzvf
4、准备工作已经完成,现在开始打开仿真:
-
加载一个底盘,运行:
-
cd jackal_ws/
-
source devel/setup.bash
-
roslaunch multi_jackal_tutorials one_jackal.launch
-
-
加载三个底盘,运行:
-
cd jackal_ws/
-
source devel/setup.bash
-
roslaunch multi_jackal_tutorials three_jackal.launch
5、终端出现以下红字错误,无需理睬,可正常使用:
6、如下图所示,此时你应该可以看到 Gazebo 和 Rviz 都已经打开:
7、同时终端会一直刷屏以下黄色警告:
8、这些都是正常现象,因为我们还没有给小车导航包一个可以使用的地图信息,这个时候我们可以选择两种方式给小车提供地图:
方法一:
利用map_server加载发布地图信息(此处不着重讲该方法,不过需要map文件的可以私信我并留下你的邮箱,我会在查看后一个一个地发送)
方法二:
利用建图工具包进行实时建图并发布地图信息(开源的建图工具包有Cartographer、Gmapping、Hector等,我推荐使用Cartographer进行建图,后面教程二也会重点讲解这部分,这里为了快速跑起我们的底盘模型,将采用比较简单的Gmapping进行建图)
-
首先安装gmapping工具包:
-
sudo apt-get install ros-melodic-gmapping
-
-
其次,进入 jackal_ws/src/multi_jackal_tutorials/launch 文件目录下:
-
gedit gmapping.launch
-
将下方内容复制到该launch中,并保存
-
-
另开终端,启动建图:
-
source devel/setup.bash
-
roslaunch multi_jackal_tutorials gmapping.launch
-
<launch>
-
<arg name="robot_num" value="1"/>
-
<arg name="robot_name" value="robot_$(arg robot_num)"/>
-
<arg name="scan" default="/$(arg robot_name)/front/scan" /> <!-- 根据自己发布scan名称进行修改 -->
-
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true">
-
<param name="base_frame" value="$(arg robot_name)/base_link"/> <!-- 根据自己的基座标系名称进行修改 -->
-
<param name="odom_frame" value="$(arg robot_name)/odom"/> <!-- 根据自己的里程计坐标系名称进行修改 -->
-
<param name="map_update_interval" value="0.01"/>
-
<!-- Set maxUrange < actual maximum range of the Laser -->
-
<param name="maxRange" value="8.0"/>
-
<param name="maxUrange" value="7.5"/>
-
<param name="sigma" value="0.05"/>
-
<param name="kernelSize" value="1"/>
-
<param name="lstep" value="0.05"/>
-
<param name="astep" value="0.05"/>
-
<param name="iterations" value="5"/>
-
<param name="lsigma" value="0.075"/>
-
<param name="ogain" value="3.0"/>
-
<param name="lskip" value="0"/>
-
<param name="minimumScore" value="10.0"/>
-
<param name="srr" value="0.01"/>
-
<param name="srt" value="0.02"/>
-
<param name="str" value="0.01"/>
-
<param name="stt" value="0.02"/>
-
<param name="linearUpdate" value="0.05"/>
-
<param name="angularUpdate" value="0.05"/>
-
<param name="temporalUpdate" value="-1.0"/>
-
<param name="resampleThreshold" value="0.5"/>
-
<param name="particles" value="80"/>
-
<param name="xmin" value="-2.0"/>
-
<param name="ymin" value="-2.0"/>
-
<param name="xmax" value="2.0"/>
-
<param name="ymax" value="2.0"/>
-
<param name="delta" value="0.05"/>
-
<param name="llsamplerange" value="0.01"/>
-
<param name="llsamplestep" value="0.01"/>
-
<param name="lasamplerange" value="0.005"/>
-
<param name="lasamplestep" value="0.005"/>
-
<remap from="scan" to="$(arg scan)"/>
-
</node>
-
</launch>
9、此刻可以看到Rviz已开始出现正常的地图,同时终端的黄色警告也停止了跳动
10、接下来你可以可以快乐的玩耍Jackal模型啦!比如在Rviz上点击一个Goal,底盘就会自动导航过去了。
五、高级选项
打开 jackal_ws/src/multi_jackal_tutorials/launch/one_jackal.launch 文件:
-
-
-
<launch>
-
<arg name="ns" default="robot_1"/>
-
<arg name="config" default="front_laser"/>
-
<arg name="config_id" default="0"/>
-
<arg name="world" default="multi_robot_world_2.world"/> <!-- turtlebot3_house multi_robot_world_2 -->
-
<arg name="gui" default="true"/>
-
<arg name="rviz" default="true"/>
-
-
<!-- Start Gazebo. -->
-
<include file="$(find gazebo_ros)/launch/empty_world.launch">
-
<arg name="use_sim_time" value="true"/>
-
<arg name="gui" value="$(arg gui)"/>
-
<arg name="world_name" value="$(find multi_jackal_tutorials)/worlds/$(arg world)"/>
-
</include>
-
-
<!-- Spawn the robot. -->
-
<include file="$(find multi_jackal_base)/launch/jackal_base.launch">
-
<arg name="ns" value="$(arg ns)"/>
-
<arg name="config" value="$(arg config)"/>
-
<arg name="config_id" value="$(arg config_id)"/>
-
<arg name="use_move_base" value="true"/>
-
</include>
-
-
<!-- View in RVIZ. -->
-
<group if="$(arg rviz)">
-
<node name="rviz" pkg="rviz" type="rviz" ns="$(arg ns)" args="-d $(find multi_jackal_tutorials)/rviz/one_jackal.rviz" >
-
<remap from="/move_base_simple/goal" to="/$(arg ns)/move_base_simple/goal"/>
-
</node>
-
</group>
-
-
</launch>
最前面的六个参数都是可以改变的,分别可以有以下选择:
-
ns :这个是机器人前缀,可随意更改,只要保证 gmapping.launch 中的 robot_name 和它对应上即可
-
config :可以选择 base 、twocams、front_laser、alvartags、front_bumblebee2等等
-
config_id :这个通常是 0
-
world :可以选择 empty、multi_robot_world_2、stuff、turtlebot3_house等等
-
gui :是否开启 Gazebo界面
-
rviz :是否开启 Rviz
当然,子目录层级中的一些launch文件里也是有很多可选配置,后续教程如果用上,会一个一个地进行讲解。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfbcbhj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24