智能车仿真 —— 2020室外光电创意组线上仿真赛(二)

5241
15
2020年7月9日 16时17分

前言

上一节教程地址:室外光电仿真教程一
参考教程地址:https://www.guyuehome.com/6463
参考项目地址:点个star呗,都是免费教程

关于运动控制器

官方车模关节名字不同,你其实只需要把我的racecar包里面的racecar_control文件夹拷到你新建的工程下即可,然后修改一下画框内容适配官方车模:

gedit ~/smartcar_ws/src/racecar_control/config/racecar_control.yaml

智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图

gedit ~/smartcar_ws/src/racecar_gazebo/scripts/gazebo_odometry.py

智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(1)

关于建图

建图的画我尝试了gmapping好像会有点地图建立重叠的问题,推荐两种解决方法可以自己尝试:


  • 1建图的时候修改提高官方车模激光雷达,陀螺仪的发布频率,建图完再改回来,这样也没啥违规的吧.
  • 2尝试使用hector包建图,我试了效果好点.

效果:
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(2)

关于move_base配置

这个应该没啥难度直接抄我那个项目里的代码就行了,根据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应该就行了.

关于导航

之前公开的代码里面用的是纯路径追踪算法,算法只是追踪全局路径规划的轨迹,所以是没有壁障功能的,要实现壁障也很简单,提供两种思路:


  • 1teb局部路径规划器是配置好的,它发布的速度和方向的话题是默认的/cmd_vel话题,所以你要做的不就是将这个话题转换成阿克曼消息么?
  • 2修改path_pursuit.py脚本,加一个成员变量订阅局部路径规划的消息,优化纯路径追踪算法.

关于定位

定位可以用amcl,但是发布的频率最高10hz有点点慢,amcl的配置网上也有很多教程,我的工程里面是没有配置可用的amcl的,这里推荐大家先去网上搜搜ros机器人中关于这几个常用名字link的含义,最好有个了解:base_link base_footprint map odom,文末也有简单介绍,这里可以看看我的tf树做一个参考吧:
执行命令:

rosrun rqt_tf_tree rqt_tf_tree

智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(3)
amcl粒子云效果:
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(4)

关于.rviz文件

这种格式的文件是不用手写的,都是rviz软件的配置文件,生成过程写个教程吧:
首先打开空的rviz(默认你已经打开了一个机器人场景):

rosrun rviz rviz

点击左下角的add:
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(5)
这里我们添加一个机器人模型:
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(6)
还可以添加对应的话题(如果配置好了amcl会有一个粒子云的话题这里添加他):
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(7)
目前效果:
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(8)
这时候rviz配置好了点击左上角save config as就可以保存得到一个.rviz文件了:
智能车仿真 —— 2020室外光电创意组线上仿真赛(二)插图(9)

关于几个坐标系

世界坐标(map)

该map坐标系是一个世界固定坐标系,其Z轴指向上方。相对于map坐标系的移动平台的姿态,不应该随时间显著移动。map坐标是不连续的,这意味着在map坐标系中移动平台的姿态可以随时发生离散的跳变。
典型的设置中,定位模块基于传感器的监测,不断的重新计算世界坐标中机器人的位姿,从而消除偏差,但是当新的传感器信息到达时可能会跳变。
map坐标系作为长期的全局参考是很有用的,但是跳变使得对于本地传感和执行器来说,其实是一个不好的参考坐标。

里程计坐标系(odom)

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.

发表评论

后才能评论

评论列表(15条)

  • 静以致远 2020年8月24日 下午10:52

    学长 请问一下 建图的时候 RViz 中image 显示No image received如何解决呀 终端里面也没出现红色错误

  • 9xbv6_1671 2020年7月19日 上午3:17

    学长,想请问下关于运动控制器的部分,我racecar_control.yaml和gazebo_odometry.py都已按红框内修改,但运行racecar_control.launch时候依然会报错,每个关节都是这种类型的错误
    [INFO] [1595099729.842044, 0.000000]: Loading controller: left_rear_wheel_velocity_controller
    [ERROR] [1595099730.850231, 982.847000]: Failed to load left_rear_wheel_velocity_controller

  • fme1a_0810 2020年7月14日 上午1:54

    学长考虑写一下怎么配置amcl吗,现有的资料都是针对实体车的,很少有针对仿真车的资料啊…

  • 布剪刀石头 2020年7月11日 下午11:01

    古月居老师网站论坛开放了,可以在论坛发技术问题帖子,可能是古月老师本尊答疑解惑,比较nice~

  • 雨辰 2020年7月11日 下午2:55

    学长 你好 我在运行roslaunch racecar_gazebo slam_gmapping.launch 进行建图时没有地图 出现警告
    [ WARN] [1594449396.727328778]: MessageFilter [target=odom ]: Dropped 100.00% of messages so far. Please turn the [ros.gmapping.message_notifier] rosconsole logger to DEBUG for more information.
    [ WARN] [1594449412.685700833]: Shutdown request received.
    [ WARN] [1594449412.685727612]: Reason given for shutdown: [new node registered with same name]
    用tf树查看时发现odom与base_link没有连接 请问是哪里配置错了

  • 手可摘星辰不敢高声语 2020年7月10日 下午10:43

    大佬,我在移植path_pursuit.py程序到比赛文件,其他的yaml文件都修改过了,在rviz中选择目标点的时候,也出现科绿色的path路线,但是一旦运行path_pursuit.py程序,车车没有沿着rviz的规划的路径走,反而一直是左拐或者是右拐然后撞墙翻车,请问这个是什么元婴呢,感谢大佬回复.(运行大佬你的程序是没有什么问题的!)

  • 7djip_6698 2020年7月10日 下午8:28

    大佬 我现在在导航的时候有·全局路径 但是车子不能启动 好像就是你上面说的那个需要转化阿克曼消息 我也试了 不行 请指教一下