上一节教程地址:室外光电仿真教程一
参考教程地址:https://www.guyuehome.com/6463
参考项目地址:点个star呗,都是免费教程
版权原因,本文图片没有转载,建议点击下方
原文链接 ↓↓↓
原文地址:传送门
官方车模关节名字不同,你其实只需要把我的racecar包里面的racecar_control文件夹拷到你新建的工程下即可,然后修改一下画框内容适配官方车模:
gedit ~/smartcar_ws/src/racecar_control/config/racecar_control.yaml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcl0pznF-1594302459722)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_35449.png)]
gedit ~/smartcar_ws/src/racecar_gazebo/scripts/gazebo_odometry.py
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxxllmQe-1594302459724)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_59442.png)]
建图的画我尝试了gmapping好像会有点地图建立重叠的问题,推荐两种解决方法可以自己尝试:
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwQZaNOs-1594302459726)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_56922.png)]
这个应该没啥难度直接抄我那个项目里的代码就行了,根据racecar_runway_navigation.launch文件里面用到的配置文件去修改对应的yaml文件:
<rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find racecar_gazebo)/config/local_costmap_params.yaml" command="load" />
<rosparam file="$(find racecar_gazebo)/config/global_costmap_params.yaml" command="load" />
<rosparam file="$(find racecar_gazebo)/config/teb_local_planner_params.yaml" command="load" />
改下这几个文件里的base_link应该就行了.
之前公开的代码里面用的是纯路径追踪算法,算法只是追踪全局路径规划的轨迹,所以是没有壁障功能的,要实现壁障也很简单,提供两种思路:
定位可以用amcl,但是发布的频率最高10hz有点点慢,amcl的配置网上也有很多教程,我的工程里面是没有配置可用的amcl的,这里推荐大家先去网上搜搜ros机器人中关于这几个常用名字link的含义,最好有个了解:base_link base_footprint map odom,文末也有简单介绍,这里可以看看我的tf树做一个参考吧:
执行命令:
rosrun rqt_tf_tree rqt_tf_tree
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7yYQyV8-1594302459728)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_17944.png)]
amcl粒子云效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OH9glrA5-1594302459730)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_47573.png)]
这种格式的文件是不用手写的,都是rviz软件的配置文件,生成过程写个教程吧:
首先打开空的rviz(默认你已经打开了一个机器人场景):
rosrun rviz rviz
点击左下角的add:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfJaR3qw-1594302459732)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_15560.png)]
这里我们添加一个机器人模型:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x065n5LT-1594302459732)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_52446.png)]
还可以添加对应的话题(如果配置好了amcl会有一个粒子云的话题这里添加他):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BV4fbzU9-1594302459733)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_39726.png)]
目前效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbTOlCuc-1594302459734)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_74054.png)]
这时候rviz配置好了点击左上角save config as就可以保存得到一个.rviz文件了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3hENUj2-1594302459734)(/wp-content/themes/gyh/editor-md/examples/php/…/uploads/20200709_70316.png)]
该map坐标系是一个世界固定坐标系,其Z轴指向上方。相对于map坐标系的移动平台的姿态,不应该随时间显著移动。map坐标是不连续的,这意味着在map坐标系中移动平台的姿态可以随时发生离散的跳变。
典型的设置中,定位模块基于传感器的监测,不断的重新计算世界坐标中机器人的位姿,从而消除偏差,但是当新的传感器信息到达时可能会跳变。
map坐标系作为长期的全局参考是很有用的,但是跳变使得对于本地传感和执行器来说,其实是一个不好的参考坐标。
odom 坐标系是一个世界固定坐标系。在odom 坐标系中移动平台的位姿可以任意移动,没有任何界限。这种移动使得odom 坐标系不能作为长期的全局参考。然而,在odom 坐标系中的机器人的姿态能够保证是连续的,这意味着在odom 坐标系中的移动平台的姿态总是平滑变化,没有跳变。
在一个典型设置中,odom 坐标系是基于测距源来计算的,如车轮里程计,视觉里程计或惯性测量单元。
odom 坐标系作为一种精确,作为短期的本地参考是很有用的,但偏移使得它不能作为长期参考
该base_link坐标刚性地连接到移动机器人基座。base_link可以安装在基座中的任意方位;对于每个硬件平台,在基座上的不同地方都会提供一个明显的参考点。
可以参考ros问答论坛上一个类似的答案:https://answers.ros.org/question/291600/base_link-vs-base_footprint/
base_link:the coordinate frame called base_link is rigidly attached to the robot root body.
base_footprint:The base_footprint is the representation of the robot position on the floor.