智能车竞赛——室外光电创意组仿真之脱缰的野马

10233
142
2020年5月7日 17时58分

一、前言

 

操作系统:ubuntu16.04

ROS版本:kinetic

Gazebo版本:7.0.0

本文介绍在MIT的racecar模型基础上搭建slam,仿真实现2019年室外光电创意组比赛。

 

二、效果

 

 

 

 

三、准备工作

 

3.1安装仿真环境

 

参考教程:北邮智能车仿真培训(一)—— 安装仿真环境

 

3.2 创建工作区间

 

mkdir -p ~/racecar_ws/src

cd ~/racecar_ws/src

catkin_init_workspace

git clone https://github.com/xmy0916/racecar.git

cd ..

catkin_make

 

 

创建成功如下:

 

p2

 

 

四、仿真介绍

 

4.1 阿克曼模型介绍

 

这个其实也没什么高大上的,就是我们常见的车模的样子,通过舵机改变前面两个转向轮的方向,后面的驱动轮方向始终不变,模型如下图(图片原文:http://www.rcfans.com/bbs/forum.php?mod=viewthread&tid=358236&ordertype=1 ):

 

p3

 

其中阿克曼角就是图中的 b – a,当阿克曼角越接近0的时候车子最适合漂移(老司机划重点),这种模型的设计就是为了让汽车在转向的过程中更加顺滑。而我们室外光电的车模就是基于这种车辆模型,但是钢铁侠官方给的驱动方式是差速控制,显然不是最合理的控制手段。

 

4.2 仿真文件介绍

 

4.2.1 racecar_contrl文件夹

这个文件主要是配置了车辆的关节运动,为什么说关节呢,这里设计racecar转向其实和机械臂的关节设计是一样的,他们的类型都是joint_state_controller

 

4.2.2 racecar_contrl/config文件夹

这个是关节参数的具体配置文件,里面有转向PID的参数配置,仿真其实就实际一样的。常用的舵机转向相当于是自带了位置环所以我们一般不去设计他的PID;但是仿真的转向没有位置环,因为我们是仿真世界的主人,我们可以知道关节转动了多少角度,也能控制转向速度,所以用角度作为反馈来控制转向速度从而让关节快速的转到我们所需要的角度,所以这里就必须配置关节的PID了,具体实现gazebo已经帮我们做好了,只要自己调参数就行。

 

4.2.3 racecar_contrl/launch文件夹

这个是配置了一些关节控制的启动文件。

 

4.2.4 racecar_contrl/scripts文件夹

这里面存放了一些控制的脚本,可以直接运行keyboard_teleop.py就可以控制小车运动。

 

4.2.5 racecar_description文件夹

这个是整个车模的描述文件夹,含有小车的xacro模型文件,和场地的模型文件,还有场地外观的材料文件。

 

4.2.6 racecar_gazebo文件夹

gazebo有关的文件

 

4.2.7 racecar_gazebo/config文件夹

里面是slam的配置文件,以及rviz启动的文件,gazebo文件夹下其他几个文件夹类似就不累述了

 

4.2.8 system文件夹

这里面主要用上的就是阿克曼消息的转换,文件中还有一些与硬件有关的驱动

 

五、启动仿真

 

5.1 使能环境变量:

echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

 

5.2 启动地图:

roslaunch racecar_gazebo racecar_runway.launch

 

p4

 

六、建图

 

6.1 启动slam和rviz:

roslaunch racecar_gazebo slam_gmapping.launch

 

p6

 

6.2 控制车辆(左侧有个控制窗口,图标是问号点开),WASD控制前左后右的运动就可以建图了:

 

p7

 

p8

 

大家建图可以把锥桶先删了在建图的时候!!!

 

6.3 保存地图:

rosrun map_server map_saver -f ~/racecar_ws/src/racecar_gazebo/map/map_runway

 

p10

 

6.4 关闭建图:

ctrl + c关闭所有窗口

 

七、导航

 

7.1 启动导航和环境地图:

roslaunch racecar_gazebo racecar_runway_navigation.launch

 

7.2 启动rviz:

roslaunch racecar_gazebo racecar_rviz.launch

 

p11

 

7.3 用2D Nav Goal发布目标:

 

p12

 

7.4 启动导航脚本

rosrun racecar_gazebo path_pursuit.py

或者

cd ~/racecar_ws/src/racecar_gazebo/scripts

python path_pursuit.py

 

p13

 

开始导航!

 

八、总结

 

本文完整源代码地址:github.com/xmy0916/racecar

 

感谢古月居老师邀请写这个教程,室外光电创意组的至此全部完成,当然大家直接git clone下来的工程运行起来没什么难度……在MIT的github官网只有车辆的gazebo文件没有配置amcl和gmapping,自己配置一遍参数才知道过程是多么的艰辛,之前在网上看到有2019年参加过室外光电创意组的同学实现了这个仿真,但是没有开源教程和代码,我自己费劲千辛万苦弄了三四天才搭建好完整的框架开源给大家,点个赞支持下呗~后续会推出其他组别(除了电磁组)的阿克曼车模仿真教程

 


九、后文

 

介绍下怎么自己场地建模

 

ground

 

9.1 ctrl + alt + t打开新的终端输入命令打开空的gazebo:

gazebo

 

9.2 点击左上角的Edit选择Building Edit:

 

p1

 

9.3 点击Create Walls下面的Wall:

 

p2

 

9.4 根据场地模型在白色区域绘制地图(我这里画过了就随便画下):

 

p3

 

9.5 画完后点击左上角的File选择save as:

 

p4

 

9.6 修改名字runway,路径随便放一个先:

 

p5

 

9.7 可以看见对应目录下有了模型的描述文件:

 

p6

 

9.8 重启gazebo,点击左上角的Insert可以看到刚刚建立的模型,点击一下拖到gazebo中:

 

p7

 

9.9 这里最好把坐标轴放到我们车的起点,如图画圈处(不改也没关系,可以在启动文件里定义车模的坐标):

 

p8

 

9.10 插入锥桶,点击Insert选择Construction Cone拖入gazebo(如果没下载锥桶模型,参考这里:下载教程):

 

p10

 

9.11 保存世界文件,点击左上角File选择Save World As放在刚才的目录下叫runway_world.world就行:

 

p11

 

9.12 文件内容如下:

 

p12

 

 

发表评论

后才能评论

评论列表(142条)

  • vsobx_8565 2020年8月10日 下午4:23

    老师您好,我启动racecar_runway_navigation.launch文件后提示一个警告
    [ WARN] [1597047167.178376806, 830.975000000]: Timed out waiting for transform from base_link to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 830.975 timeout was 0.1.
    再打开 racecar_rviz.launch后用 2D Nav Goal 发布指令后只会出现一条规划的绿线,但是小车不动,请问怎么解决?谢谢

    • vsobx_8565 回复 vsobx_8565 2020年8月10日 下午9:26

      启动path_pursuit.py文件提示Usage: rosrun [–prefix cmd] [–debug] PACKAGE EXECUTABLE [ARGS]
      rosrun will locate PACKAGE and try to find
      an executable named EXECUTABLE in the PACKAGE tree.
      If it finds it, it will run it with ARGS.
      后用 2D Nav Goal 发布指令后只会出现一条规划的绿线,但是小车不动

  • z3rm2_9011 2020年7月26日 下午5:17

    [racecar_spawn-4] process has died [pid 12000, exit code 1, cmd /opt/ros/kinetic/lib/gazebo_ros/spawn_model -urdf -param robot_description -model racecar -x -5.388334 -y -4.094883 -z 0.0 __name:=racecar_spawn __log:=/home/bai/.ros/log/d5c1ffec-cf1f-11ea-834c-3cf011e35f6c/racecar_spawn-4.log].
    log file: /home/bai/.ros/log/d5c1ffec-cf1f-11ea-834c-3cf011e35f6c/racecar_spawn-4*.log
    [gazebo_odometry_node-8] process has died [pid 12010, exit code 1, cmd /home/bai/racecar_ws/src/racecar/racecar_gazebo/scripts/gazebo_odometry.py __name:=gazebo_odometry_node __log:=/home/bai/.ros/log/d5c1ffec-cf1f-11ea-834c-3cf011e35f6c/gazebo_odometry_node-8.log].
    log file: /home/bai/.ros/log/d5c1ffec-cf1f-11ea-834c-3cf011e35f6c/gazebo_odometry_node-8*.log
    启动地图的时候产生了上面的错误

  • 真相只有一个 2020年7月25日 上午9:14

    老师您好,请问一下,在gazebo怎么可视化雷达的扫描范围(就是视频中的那个蓝色区域),关于这一点我百度找不到,还请告知,谢谢。

    • 布剪刀石头 回复 真相只有一个 2020年7月25日 上午11:35

      有啊,有一个参数设置true还是false就行了,你看我github项目的commit,有一个版本我把蓝色的激光关了找找那个文件

  • z3rm2_9011 2020年7月24日 下午9:52

    roslaunch racecar_gazebo racecar_runway.launch时出现这个错误No such file or directory

  • vsobx_8565 2020年7月23日 上午11:52

    老师您好,我运行roslaunch racecar_gazebo racecar_runway.launch时报错,[ERROR] [1595475202.238856271, 831.161000000]: Failed to load nodelet [/vesc/high_level/ackermann_cmd_mux] of type [ackermann_cmd_mux/AckermannCmdMuxNodelet] even after refreshing the cache: Could not find library corresponding to plugin ackermann_cmd_mux/AckermannCmdMuxNodelet. Make sure the plugin description XML file has the correct name of the library and that the library actually exists.
    [ERROR] [1595475202.239028777, 831.161000000]: The error before refreshing the cache was: Could not find library corresponding to plugin ackermann_cmd_mux/AckermannCmdMuxNodelet. Make sure the plugin description XML file has the correct name of the library and that the library actually exists.
    gazebo能打开模型也能出来,但是键盘控制不了,请问老师哪的问题,怎么解决,谢谢。

  • ZYLYM 2020年7月18日 下午9:33

    请问,执行roslaunch racecar_gazebo slam_gmapping.launch后,没有出现可以上下左右控制的那个,终端里只有一个警告:[ WARN] [1595077708.255346558, 869.789000000]: MessageFilter [target=odom ]: Dropped 100.00% of messages so far. Please turn the [ros.gmapping.message_notifier] rosconsole logger to DEBUG for more information.这是什么原因呢,应该怎么处理呢

  • 不是凛凛凛浩 2020年7月16日 下午3:48

    老师您好,请问,在运行导航脚本rosrun racecar_gazebo path_pursuit.py时,
    [ERROR] [1594884830.752178, 953.022000]: bad callback: >
    Traceback (most recent call last):
    File “/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/topics.
    py”, line 750, in _invoke_callback
    cb(msg)
    File “/home/lin1998/racecar_ws/src/racecar/racecar_gazebo/script
    s/path_pursuit.py”, line 93, in callback_read_current_position
    dist_array[i] = self.dist((path_points_x[i], path_points_y[i])
    , (x,y))
    IndexError: list index out of range
    报错但是可以正常导航时什么原因呢

    • 布剪刀石头 回复 不是凛凛凛浩 2020年7月18日 下午3:17

      没事,写个try except就好了

    • 不是凛凛凛浩 回复 布剪刀石头 2020年7月18日 下午4:16

      好的谢谢,但是今天我launch的时候发现了新的错误(之前是可以正常使用的),找不到模型,有点蒙
      No such file or directory: /home/lin1998/smartcar_ws/src/racecar_description/urdf/racecar.xacro None None
      while processing /home/lin1998/racecar_ws/src/racecar/racecar_gazebo/launch/racecar.launch:
      Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/kinetic/lib/xacro/xacro –inorder ‘/ho
      me/lin1998/smartcar_ws/src/racecar_description/urdf/racecar.xacro’] returned with code [2].

      Param xml is
      The traceback for the exception was written to the log file

    • 不是凛凛凛浩 回复 不是凛凛凛浩 2020年7月18日 下午4:50

      我好像知道是因为什么错误了,路径有点问题,谢谢

  • lovely_him 2020年7月14日 下午9:09

    在csdn看到差不多一模一样的教学,dalao在csdn也有帐号吗?

  • ef80v_1500 2020年7月14日 下午3:05

    请问我用自己的odom替换了gazebo的odom,还需要改system吗?

  • lovely_him 2020年7月14日 上午9:59

    弱弱问一句,导航脚本啥自己写的部分是么?下载文件里看到。

  • 星陨 2020年7月13日 下午8:13

    [gazebo-2] process has died [pid 40842, exit code 139, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode /home/riki/catkin_ws/src/racecar/racecar_gazebo/worlds/racecar_runway.world __name:=gazebo __log:=/home/riki/.ros/log/b88bdec6-c4fb-11ea-92e9-000c291751db/gazebo-2.log].
    log file: /home/riki/.ros/log/b88bdec6-c4fb-11ea-92e9-000c291751db/gazebo-2*.log
    楼主请问一下出现这种情况怎么解决,忙活一下午了其他问题都解决了就差这个了,gazebo我也升级到7.16.0了,以前打开的gazebo我也杀死了,还是一直出现这种问题

  • lovely_him 2020年7月13日 下午2:42

    上面那个那个场地是自己随手画的吗?我第一次打开没有那赛道模型

    • lovely_him 回复 lovely_him 2020年7月13日 下午3:29

      原来是我的gazebo卡主了而已。更新了模型后就没事了

    • 星陨 回复 lovely_him 2020年7月13日 下午11:30

      请问您是怎么更新模型的呢,可以教一下我吗

    • lovely_him 回复 星陨 2020年7月14日 上午10:00

      csdn搜gazebo打不开或更新模型,就有了

    • 星陨 回复 lovely_him 2020年7月16日 下午4:50

      感谢,但是我还是打不开,不知道是什么原因,唉

  • 手可摘星辰不敢高声语 2020年7月8日 上午8:15

    老师,我想问一下,在运行slam_gmapping的时候,启动了rviz,在运动小车的时候,rviz中的摄像头看到的画面是没有卡顿的,但是激光雷达的状态时好时坏,而且地图显示的画面也是卡顿的,总是慢半拍,请问这个是什么原因呢?

    • 使用rostopic echo /scan查看的时候,数据已经发布5want多条了,但是在rviz中显示接受的只有三千多条,这个是什么原因呢

    • 布剪刀石头 回复 手可摘星辰不敢高声语 2020年7月8日 上午11:58

      这个我也不知道,底下也有人出现gazebo和rviz不匹配的问题,但是我电脑上重建工程下载我的github代码直接跑是没有这个问题的我都试过好多遍了,很多小伙伴也跑成功了,你可以考虑检查下版本的不一样的问题

    • 手可摘星辰不敢高声语 回复 布剪刀石头 2020年7月8日 下午12:06

      谢谢大佬回复,两天前跑的还是匹配成功的,昨天和今天试了试都不行,诶哈哈哈哈

    • 手可摘星辰不敢高声语 回复 布剪刀石头 2020年7月8日 下午9:03

      大佬,可否再问一下哈哈哈哈
      我用你的程序,把里面的去年的地图换成了今年的比赛的地图,然后用你的程序跑,发现也会出现卡顿的现象,就是在rviz中激光雷达显示的粒子已经变了,但是栅格化地图出现慢很多导致地图画出来的样子很丑.可是我有把地图换回去,发现就不会有卡顿延迟的情况出现.然后在今年的比赛的地图中,要是我用比赛的模型的车车很慢慢(比大佬你的程序里面的速度慢了10倍去实验,发现效果会好一点,但是地图一大还是会有画图不准的情况)我使用gmapping的.
      大佬,请问这个是我的电脑的问题吗?
      谢谢大佬!

    • 布剪刀石头 回复 手可摘星辰不敢高声语 2020年7月8日 下午9:36

      今年车模我在建图也有这个问题,给你几个参考,我试了很多次差不多能用,方法一:建图的时候调高模型的激光雷达和imu发布频率,修改激光雷达的范围,官方模型给的是360度实际上只要车前方就行。方法二:使用hector包建图效果也会有很大改善

    • 手可摘星辰不敢高声语 回复 布剪刀石头 2020年7月9日 上午9:05

      谢谢大佬的建议哈哈哈,我再好好改改

  • vr4r5_8851 2020年7月7日 上午9:30

    请问这个小车的tf树的配置,在哪个文件呀?

  • Yuheng Zhang 2020年7月6日 下午3:48

    博主遇到过这种情况吗,怎么解决
    [ERROR] [1594021051.754423058, 236.530000000]: Ignoring transform for child_frame_id “base_link” from authority “unknown_publisher” because of an invalid quaternion in the transform (0.000000 0.000000 0.000000 0.000000)
    Error: TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id “base_link” from authority “unknown_publisher” because of an invalid quaternion in the transform (0.000000 0.000000 0.000000 0.000000)

    • 布剪刀石头 回复 Yuheng Zhang 2020年7月6日 下午5:12

      你是在弄智能车吧?他那个文件的基准是base_footprint我那个是base_link,你找找哪里漏了改了

    • 回复 Yuheng Zhang 2020年7月7日 下午8:49

      老哥,你解决了吗。我也是这个问题,但是我换了基准之后还是这样

    • 布剪刀石头 回复 2020年7月8日 上午11:59

      grep -r “base_link” .
      上面这个命令查文件夹所有文件关节字,你自己查查吧

  • 阿雄 2020年7月3日 下午11:24

    老师您好,我发现了一个错误:
    Timed out waiting for transform from base_link to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 831.033 timeout was 0.1.
    然后检查了以下tf树,发现没有odom坐标系。

    • 布剪刀石头 回复 阿雄 2020年7月4日 下午7:07

      好的这个警告我看到过,但是没有什么影响就没处理了,可以在launch文件里面加个tf静态发布应该就没问题了

    • 布剪刀石头 回复 阿雄 2020年7月6日 下午5:29

      关于这个odom坐标我也不是很理解,最近看rviz的时候发现rviz的机器人tf里面是有这个odom的,在tf树确实没有,然后看了下mit racecar的源码实在gazebo_odom.py里面发布的这个odom的坐标

  • 王浩 2020年6月29日 下午1:24

    我运行gazabo和rviz时没有报错。出现了一个问题:我能够在gazabo中控制小车移动,可是rviz界面里的小车不动,这是为什么啊?

    • my7mz_7006 回复 王浩 2020年7月4日 下午7:06

      兄弟我也是遇到这种问题,你后来解决了吗,我想看看怎么解决的。真的非常感谢。

    • 王浩 回复 my7mz_7006 2020年7月7日 上午12:40

      我没解决吖,直接略过建图去导航了。。。

    • 布剪刀石头 回复 王浩 2020年7月4日 下午7:08

      检查下有没有报错哦,我这里没碰到过这种情况

    • loading 回复 布剪刀石头 2020年7月5日 上午11:22

      老师 一打开rviz 前面的gazebo就死掉 是虚拟机显卡不行吗

    • loading 回复 王浩 2020年7月5日 上午11:21

      兄弟 你是打开rviz gazebo就报错死掉吗? [gazebo-2] process has died [pid 42370, exit code 134, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode /home/robotv/racecar_ws/src/racecar_gazebo/worlds/racecar_runway.world __name:=gazebo __log:=/home/robotv/.ros/log/8a4fa97c-be6e-11ea-ac30-732f3e7e4c4f/gazebo-2.log].
      log file: /home/robotv/.ros/log/8a4fa97c-be6e-11ea-ac30-732f3e7e4c4f/gazebo-2*.log

    • SpartanZ 回复 loading 2020年7月5日 下午2:54

      我的也死掉了,还没解决.

    • p28ty_6713 回复 SpartanZ 2020年7月5日 下午4:20

      我也是这个报错,现在有结果了吗

    • SpartanZ 回复 p28ty_6713 2020年7月5日 下午4:28

      搜了一圈,还没解决

    • SpartanZ 回复 SpartanZ 2020年7月5日 下午4:52

      在QQ群求助遇到作者了,给我提示了3点:
      情况一:你的launch问价里面加载了不存在的文件,比如你想加载模型在models文件夹下你输成了model就会出现这个。
      情况二:你的gazebo带不动,我之间仿真racecar用7.0.0的gazebo就会崩溃,升级7.16.0就不会了。
      情况三:你之前打开了gazebo进程没完全杀死又打开gazebo就会出现这个。
      我经过点拨,已经解决问题了~~~

    • SpartanZ 回复 SpartanZ 2020年7月5日 下午4:53

      解决打开rviz gazebo就报错死掉

    • p28ty_6713 回复 p28ty_6713 2020年7月6日 上午11:19

      要是有朋友遇到的是cmd139的问题,那可能是配套gazebo9的问题,只要将gazebo换成gazebo7即可解决问题!

    • 布剪刀石头 回复 p28ty_6713 2020年7月7日 上午11:01

      感谢

  • loading 2020年6月26日 下午8:11

    老师您好,我可以成功打开gazebo但在打开riviz时候输入roslaunch racecar_gazebo slam_gmapping.launch 时出现[ERROR] [1593173080.115425324, 876.610000000]: PluginlibFactory: The plugin for class ‘rtabmap_ros/MapGraph’ failed to load. Error: According to the loaded plugin descriptions the class rtabmap_ros/MapGraph with base class type rviz::Display does not exist. Declared types are rviz/Axes rviz/Camera rviz/DepthCloud rviz/Effort rviz/FluidPressure rviz/Grid rviz/GridCells rviz/Illuminance rviz/Image rviz/InteractiveMarkers rviz/LaserScan rviz/Map rviz/Marker rviz/MarkerArray rviz/Odometry rviz/Path rviz/PointCloud rviz/PointCloud2 rviz/PointStamped rviz/Polygon rviz/Pose rviz/PoseArray rviz/PoseWithCovariance rviz/Range rviz/RelativeHumidity rviz/RobotModel rviz/TF rviz/Temperature rviz/WrenchStamped rviz_imu_plugin/Imu rviz_plugin_tutorials/Imu
    之前小车还可以控制,现在不可以控制无法建图,请问是哪里的错误

    • 布剪刀石头 回复 loading 2020年6月27日 下午1:57

      哥哥们这种问题大概率是少了包,上wiki百科问问吧,我也不是ros开发人员……可以试试这个sudo apt-get install ros-kinetic-rtabmap-ros

    • loading 回复 布剪刀石头 2020年7月2日 上午10:27

      谢谢老师

  • 583a8_6915 2020年6月26日 下午2:14

    老师,您好,我运行到启动仿真和建图的步骤,打开Rviz和Gazebo后,不能加载地图,在输入roslaunch racecar_gazebo slam_gmapping.launch 的终端里,显示报错 [ERROR] [1593150444.612105029]: PluginlibFactory: The plugin for class ‘rtabmap_ros/MapGraph’ failed to load. Error: According to the loaded plugin descriptions the class rtabmap_ros/MapGraph with base class type rviz::Display does not exist. Declared types are rviz/Axes rviz/Camera rviz/DepthCloud rviz/Effort rviz/FluidPressure rviz/Grid rviz/GridCells rviz/Illuminance rviz/Image rviz/InteractiveMarkers rviz/LaserScan rviz/Map rviz/Marker rviz/MarkerArray rviz/Odometry rviz/Path rviz/PointCloud rviz/PointCloud2 rviz/PointStamped rviz/Polygon rviz/Pose rviz/PoseArray rviz/PoseWithCovariance rviz/Range rviz/RelativeHumidity rviz/RobotModel rviz/TF rviz/Temperature rviz/WrenchStamped rviz_imu_plugin/Imu rviz_plugin_tutorials/Imu。而且不能通过WSAD控制。

  • 容与 2020年6月23日 下午6:54

    您好!老师!运行roslaunch racecar_gazebo racecar_runway.launch
    出现Calling service /gazebo/spawn_urdf_model
    libGL error: failed to create drawable
    [WARN] [1592909442.092539, 0.000000]: Controller Spawner couldn’t find the expected controller_manager ROS interface.
    而且ros-kinetic-controller-manager 已经是最新版!按照您github上controller相关办法试了还是有问题!如何解决???

    • 布剪刀石头 回复 容与 2020年6月24日 上午10:42

      还解决不了你上ros_wiki去提问吧

    • 王浩 回复 容与 2020年6月29日 下午12:15

      有可能是gazabo显示速度慢,我的多等了一会就好了

    • Sciroccogti 回复 王浩 2020年7月4日 下午7:33

      我这也是这个报错,等了一会以后地图确实加载出来了,但是不能控制车,WASD没用(Q倒是有用

  • 猫南北 2020年6月19日 下午4:57

    您好,我通过将您的 path.py 发布的navigation话题直接(消息格式转换后)传递给 Cmd_vel ,发现机器人将以固定角度绕圈旋转,该固定线速度和角速度是您在 path.py 中的初始化定值,其对于我选定的任何目标点不做反应。在仿真中,我通过rostopic查看/vesc/low_level/ackermann_cmd_mux/input/navigation 消息输出,发现 angle 似乎是一个比例系数,angle_velocity 和 speed 仿佛在做真值判断,请问我该如何获取它发布真实的Cmd_vel信息。在实机测试中,该话题输出的值一直是默认值,已经排除话题订阅错误,请问 path.py 脚本中是否均采用的是虚值计算而非真实转弯角度和线速度。
    上次的问题已经成功解决,十分感谢您的回复与帮助。

    • 布剪刀石头 回复 猫南北 2020年7月4日 下午11:01

      没太理解你的意思,teb规划的速度和方向在纯路径追踪算法里是没用上的,春路径追踪是根据全局路径规划的速度和方向,如果你想要teb规划的速度需要做一个消息类型转换,而且/vesc/low_level/ackermann_cmd_mux/input/navigation这个话题不是速度相关的输出吧?

  • 0omob_9239 2020年6月7日 下午1:56

    老师您好,我有几点比较好奇:
    (1)您是直接在gazebo模型里已经完成了对里程计消息的粒子滤波了嘛?所以直接发布一个map to base的位姿与tf;
    (2)既然teb已经规划出线速度与角速度了,那纯跟踪的意义在哪呢?

    • 猫南北 回复 0omob_9239 2020年6月19日 下午4:36

      刚好实机测试中,因为Move_base package是基于二轮差速机器人的路径规划,它发布的Cmd_vel并不是线速度与角速度完全耦合的,这就会出现它可能会要求你先以一个速度直线走到某个地方,再原地旋转一个角度,而这是阿克曼机器人做不到的事情(不能原地旋转且存在转弯半径)。所以实际上该工程只借用了Move_base的全局规划,局部规划通过Path.py实现。

    • 猫南北 回复 猫南北 2020年6月23日 下午9:00

      不好意思,我理解错了,确实Teb已经规划出来了。”所以实际上“ 之前是错误的。

    • 布剪刀石头 回复 0omob_9239 2020年6月24日 上午10:43

      可以用teb的,我对这个没怎么研究,看到有现成的路径追踪代码就直接用了

  • 7jg6l_1321 2020年6月6日 上午11:52

    楼主您好,我建图扫了一周后无法保存地图,
    报错显示:Couldn’t save map file to /home/leon/racecar_ws/src/racecar_gazebo/map/map_runway.pgm
    请问下这个怎么解决呢

  • 猫南北 2020年6月4日 下午9:07

    您好,我试图自己搭建一个阿克曼模型的rviz模型,在前轮部分设置了连杆结构,而我将您的xacro重导入urdf,分析节点发现您也采用了这种设计,然而我在gazebo仿真见到的小车前轮部分是单杆结构,请问rviz的外观和物理模型是和gazebo的仿真模型是分开的吗?
    另外,我试图新建launch文件去单独打开racecar.xacro文件查看模型结构,终端中并没有报错,然而无法正确显示模型,只显示了底盘并为白色,fixed frame 固定为 map 无法选择 base_link, 各joint均显示缺少tf关系,使用重导入的urdf依然无法解决这种情况。
    十分感谢您的源码。

    • 布剪刀石头 回复 猫南北 2020年6月5日 上午10:09

      rviz和gazebo用的是同一个xcrao或者urdf,但是gazebo中显示的外观属性和物理属性实在.gazebo中另外配置的

  • thuur_8070 2020年6月2日 上午12:12

    好像不是move_base包的问提有,不断的重启navigation,会有一次好使的,终端最后打印是[ INFO] [1591027518.547909416, 832.523000000]: No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.
    [ INFO] [1591027519.326162127, 833.129000000]: Recovery behavior will clear layer obstacles
    [ INFO] [1591027519.330380152, 833.132000000]: Recovery behavior will clear layer obstacles
    但是大概10几次才会有一次Recovery behavior will clear layer obstacles,出现这句话导航就好使其余最后打印都是 No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.就很奇怪.

    • thuur_8070 回复 thuur_8070 2020年6月2日 上午12:15

      [ INFO] [1591027519.330380152, 33.132000000]: Recovery behavior will clear layer obstacles这句话有的是不会有打印出来,是不是可能是程序执行到这里之前卡死了.另外请问下D*算法的包不需要单独安装吧?

    • 布剪刀石头 回复 thuur_8070 2020年6月2日 上午12:32

      D* 在move_base里面

    • 布剪刀石头 回复 thuur_8070 2020年6月2日 上午12:35

      你看看激光是不是被遮挡了,车体前方有个白色是深度摄像头,我调过他的高度,如果挡住了激光雷达的前面就会认为前方有障碍规划不出路径

    • thuur_8070 回复 布剪刀石头 2020年6月2日 下午1:55

      刚看了下,摄像头好像没当遮挡激光雷达,用的是最新从github上下载的例程,导航终端最后打印一直是这个[ INFO] [1591027518.547909416, 832.523000000]: No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.

    • thuur_8070 回复 thuur_8070 2020年6月2日 下午2:05

      重复启动navigation,20次左右会有一次是会好用的

    • 阿雄 回复 thuur_8070 2020年7月1日 上午9:26

      兄弟我也是遇到这种问题,你后来解决了吗,我想看看怎么解决的。真的非常感谢。

  • thuur_8070 2020年5月31日 下午10:27

    导航的终端最后的info是这个: No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.

    • 布剪刀石头 回复 thuur_8070 2020年6月1日 上午12:27

      一般原因为下位机arduino连接不上,arduino固件受损,激光雷达连接不上,激光雷达内部出错等等。检查下激光雷达的话题有输出嘛,有一个版本的代码激光雷达数据被我不小心关了

    • thuur_8070 回复 布剪刀石头 2020年6月2日 上午12:12

      好像不是move_base包的问提有,不断的重启navigation,会有一次好使的,终端最后打印是[ INFO] [1591027518.547909416, 832.523000000]: No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.
      [ INFO] [1591027519.326162127, 833.129000000]: Recovery behavior will clear layer obstacles
      [ INFO] [1591027519.330380152, 833.132000000]: Recovery behavior will clear layer obstacles
      但是大概10几次才会有一次Recovery behavior will clear layer obstacles,出现这句话导航就好使其余最后打印都是 No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.就很奇怪.

    • 布剪刀石头 回复 thuur_8070 2020年6月1日 上午12:27

      参考底下的其他人的评论里有解决办法

    • 布剪刀石头 回复 thuur_8070 2020年6月1日 下午4:35

      全局路径规划用的是D*算法,在move_base包里面,接收rviz中2D Nav Goal命令的话题是/move_base_simple/goal,你可以检查下你的这个话题接收是否正确,大概率问题出在move_base包什少装了什么软件包

  • thuur_8070 2020年5月31日 下午10:09

    有安装了move_base,单击2DGOAL后,还是不显示绿色的规划路径,在导航的终端中有这个警告:
    [ WARN] [1590962849.738340012, 831.077000000]: Timed out waiting for transform from base_link to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 831.077 timeout was 0.1.

  • thuur_8070 2020年5月30日 下午9:15

    请问一下2Dgoal点击后,rviz上不显示绿色的路径规划线,这是什么情况?

    • 布剪刀石头 回复 thuur_8070 2020年5月30日 下午10:30

      你检查下点击发布导航命令后终端有没有报错吧,然后搜索对应的错误信息,你这说的我真不知道什么情况,我也没碰到过呀,而且我上传的代码本地是能跑的,实在不行你下载一下我之前commit的版本试试

    • 布剪刀石头 回复 thuur_8070 2020年5月31日 上午9:40

      你是不是没有安装move_base啊,试试sudo apt-get install ros-kinetic-move-base

    • 血大板 回复 thuur_8070 2020年6月1日 下午2:55

      您好,您打问题得到解决了吗,我这出现了同样的问题

    • thuur_8070 回复 血大板 2020年6月1日 下午11:52

      还是没有解决….

    • 猫南北 回复 thuur_8070 2020年6月19日 下午5:01

      没有绿色的线,如果大家都是新手的话,额我觉得是不是你们没有在 RVIZ 里点 ADD 添加 PATH 显示并且将其话题订阅选择 global 这一栏额。最后退出的时候点 SAVE 会保存你这一次的RVIZ配置,之后启动就不会再需要 添加显示了。

  • thuur_8070 2020年5月29日 下午11:42

    老师您好,请问导航2Dgoal点击后,运行python文件,小车不动,导航的终端中出现这个错,Failed to create the teb_local_planner/TebLocalPlannerROS planner,怎么解决呢?是要安装一个teb的包吗?这个怎么安装,麻烦帮忙看下可以吗?

    • 布剪刀石头 回复 thuur_8070 2020年5月30日 下午4:45

      没碰到过哦自己百度百度吧试试sudo apt-get install ros-kinetic-teb-local-planner ?

    • thuur_8070 回复 布剪刀石头 2020年5月30日 下午5:08

      您好,我使用这条指令安装teb planner后,导航命令终端不报错了,有一个movebase超时的警告,但是2Dgoal点击后,运行python文件,小车还是不动,请问是我的这个操作顺序有问题吗?

    • thuur_8070 回复 布剪刀石头 2020年5月30日 下午6:00

      问题好像是2Dgoal点击后,rviz上不显示绿色的路径规划线?

    • 血大板 回复 thuur_8070 2020年6月1日 下午2:55

      您好,您打问题得到解决了吗,我这出现了同样的问题

    • 布剪刀石头 回复 血大板 2020年6月1日 下午4:28

      全局路径规划用的是D*算法,在move_base包里面,接收rviz中2D Nav Goal命令的话题是/move_base_simple/goal,你可以检查下你的这个话题接收是否正确,大概率问题出在move_base包什少装了什么软件包

    • 布剪刀石头 回复 血大板 2020年6月1日 下午4:34

      apt-cache search ros-kinetic这个命令可以查看ros所有的包,然后用grep匹配下关键字搜搜看看

    • 猫南北 回复 thuur_8070 2020年6月19日 下午5:03

      额 这个问题 确实就是没有安装这个 teb 插件 ,它并不是 full 会安装的,需要自己 安装,百度即可。

  • m1hfb_7518 2020年5月20日 下午3:57

    请问导航时小车的速度应该怎么控制呢?不知道什么原因我在导航时小车运动得特别慢,跑完全程大概需要8、9分钟的样子……

    • 布剪刀石头 回复 m1hfb_7518 2020年5月20日 下午10:30

      不该吧….我上传的代码跑完就50s最多了

    • 布剪刀石头 回复 m1hfb_7518 2020年5月21日 上午12:23

      你可以检查下你电脑gazebo底下有一个仿真时间和实际时间的比例系数,可能是你电脑性能不行,程序里已经写好了寻线的代码,你可以自己参考的修改参数新增算法,我也就是帮你弄了个仿真平台,怎么提速是你自己的事,这不就是比赛的目的么。。。。。。

    • m1hfb_7518 回复 布剪刀石头 2020年5月21日 下午1:22

      好的,感谢,我再看着找一下问题。

  • Sunny 2020年5月17日 上午9:10

    老师,我想问一下在下载并成功编译您的源码后,在启动gazebo地图时报了几个这种形式的错误:
    [ERROR]: Could not load controller ‘joint_state_controller’ because controller type ‘joint_state_controller/JointStateController’ does not exist.
    [ERROR] : Use ‘rosservice call controller_manager/list_controller_types’ to get the available types
    [ERROR]: Failed to load joint_state_controlle
    并且在控制窗口点击WASD后gazebo和rviz的模型并没有动作,我在用echo看/racecar/left_front_wheel_velocity_controller/command等控制消息时发现其中的内容是可以正常变化的,但好像并没有成功接收到。
    非常希望和感谢老师能帮忙解惑!!!

    • 布剪刀石头 回复 Sunny 2020年5月17日 下午1:50

      重新git clone下代码,然后controller报错有关参考github工程下的readme文件有解决办法:https://github.com/xmy0916/racecar,可以关注下github仓库代码的更新和说明文件

    • Sunny 回复 布剪刀石头 2020年5月17日 下午2:39

      好的,多谢!!!问题已经解决了,但是readme解决方案的两句指令好像有点问题,说定位不到软件包,我是通过这两句解决的:
      sudo apt-get install ros-kinetic-effort-controllers
      sudo apt-get install ros-kinetic-joint-state-controller

    • 布剪刀石头 回复 Sunny 2020年5月17日 下午4:42

      可能我敲错了,有空再改过来

  • 3o481_1608 2020年5月15日 下午12:50

    老师您好,源码编译后报错racecar_ws/src/racecar-master/racecar_gazebo/src/findLine.cpp:7:43: fatal error: ackermann_msgs/AckermannDrive.h: No such file or directory
    compilation terminated.
    racecar-master/racecar_gazebo/CMakeFiles/findLine.dir/build.make:62: recipe for target ‘racecar-master/racecar_gazebo/CMakeFiles/findLine.dir/src/findLine.cpp.o’ failed
    make[2]: *** [racecar-master/racecar_gazebo/CMakeFiles/findLine.dir/src/findLine.cpp.o] Error 1
    CMakeFiles/Makefile2:4029: recipe for target ‘racecar-master/racecar_gazebo/CMakeFiles/findLine.dir/all’ failed
    make[1]: *** [racecar-master/racecar_gazebo/CMakeFiles/findLine.dir/all] Error 2
    Makefile:138: recipe for target ‘all’ failed
    make: *** [all] Error 2
    Invoking “make -j12 -l12” failed
    为什么会找不到头文件呢,devel/ackermann_msgs下有头文件

    • 3o481_1608 回复 3o481_1608 2020年5月15日 下午2:38

      老师已解决编译问题,现在是没有在建图时候rviz地图信息

    • 布剪刀石头 回复 3o481_1608 2020年5月15日 下午7:30

      rviz打开后拖到左上角找找?我这里是有的,参考此博客第六节第一张图

    • 布剪刀石头 回复 3o481_1608 2020年5月15日 下午7:32

      实在建不了直接用我留在工程里面的map目录下的图呗,反正都一样的

    • 布剪刀石头 回复 3o481_1608 2020年5月16日 下午3:09

      抱歉,前段时间在忙毕设,弄之前写四轮的博客把激光雷达给关了。。。所以收不到雷达数据建不了图。。。。~/racecar_ws/src/racecar_description/urdf/racecar.gazebo在这个文件中61行改成false即可。。。我傻逼了

  • ukq26_6484 2020年5月12日 上午10:59

    老师您好,请问一下我在melodic运行这个为什么无法建图,topic里面有image的信息,却没有laser的相关话题

    • 布剪刀石头 回复 ukq26_6484 2020年5月13日 上午12:20

      抱歉,不清楚哦,我用的是kinetic的ros

    • 布剪刀石头 回复 布剪刀石头 2020年5月16日 下午3:10

      抱歉,前段时间在忙毕设,弄之前写四轮的博客把激光雷达给关了。。。所以收不到雷达数据建不了图。。。。~/racecar_ws/src/racecar_description/urdf/racecar.gazebo在这个文件中61行改成false即可。。。我傻逼了

  • 57m6q_1097 2020年5月10日 下午10:20

    老师您好,我用了您的模型跑了一下hectorslam建图,能够建图,但是小车在rviz中不同位置一直闪烁,我的hector代码的base_frame 和odom_frame的值都给的是base_link,会是这个设置的问题吗?能否请您帮忙解答一下,非常感谢🙏!!!!

    • 布剪刀石头 回复 57m6q_1097 2020年5月11日 上午11:33

      抱歉,没有研究过

    • 布剪刀石头 回复 57m6q_1097 2020年5月17日 下午1:52

      我最近看一些资料看到如果你建图的同时开启了amcl就会有两个定位信息,从而导致小车在rviz闪烁的问题,仅供参考

    • 布剪刀石头 回复 57m6q_1097 2020年5月17日 下午1:55

      我代码里面写了两个launch文件一个是开启仿真环境不开启导航功能(racecar_runway.launch),这是给建图用的,还一个是开启导航和仿真环境这个是给自主导航用的,你是不是启动了racecar_gazebo包下的racecar_runway_navigation.launch文件建图呢?

    • 57m6q_1097 回复 布剪刀石头 2020年5月20日 下午12:12

      问题已经解决了,是因为hectormapping 和gazebo odometry node 都发布了baselink➡️map的变换,把后面的那个节点关掉就好啦,谢谢您啦~还有个问题想请教一下,我启动了navigation的launch文件,想在rviz看amcl定位的粒子云怎么配置呢?posearray配置的时候没有找到粒子云话题呀。

    • 布剪刀石头 回复 57m6q_1097 2020年5月21日 上午12:27

      rviz中点击ADD添加PoseArray,然后勾选对应的话题试试,然后保存rviz配置

    • 布剪刀石头 回复 57m6q_1097 2020年5月21日 上午12:29

      如果没有的话你看看修改下hukoyu激光雷达的gazebo配置添加对应的话题啥的,参考你用过的有粒子云话题的配置文件看看有啥不一样的地方

    • 布剪刀石头 回复 57m6q_1097 2020年5月21日 上午12:40

      我看了rviz打开是有的呀,话题是这个:/move_base/TebLocalPlannerROS/teb_poses,虽然我不太懂这个是干嘛用的

    • 57m6q_1097 回复 布剪刀石头 2020年5月21日 上午11:09

      我打开了那个,好像是沿着路径规划的位姿,我想看到amcl的全局定位的过程,但是找不到粒子云的话题……

    • 57m6q_1097 回复 布剪刀石头 2020年5月21日 下午12:18

      我看tf里面没有发布Odom
      ➡️Map的变换,老师您导航程序里有配置amcl吗

    • 布剪刀石头 回复 57m6q_1097 2020年5月21日 下午12:39

      没有哦

    • 57m6q_1097 回复 布剪刀石头 2020年5月21日 下午5:06

      老师,我刚刚启动了known map localization的launch文件,里面是amcl定位,请问为什么在rviz里posearray选中粒子云话题但是没显示粒子呢?

    • 布剪刀石头 回复 57m6q_1097 2020年5月21日 下午5:14

      那不是我写的哦这你估计得去mit racecar的github的issue里问问了,或者你自己研究研究吧

    • 57m6q_1097 回复 布剪刀石头 2020年5月21日 下午5:51

      好的,谢谢你啦

  • vr4r5_8851 2020年5月10日 下午3:09

    老师,你好,雷达信息为什么无法在rviz上显示啊,就是无法建图了?还有启动gazebo以后,那些蓝色的激光扫描线怎么设置啊?非常感谢你能回答

    • vr4r5_8851 回复 vr4r5_8851 2020年5月10日 下午3:12

      已经查了好多资料,用了几种方法还是无法解决,哎

    • 布剪刀石头 回复 vr4r5_8851 2020年5月10日 下午4:27

      蓝色激光被我关了,你可看github上我的commit日志那个关闭gazebo激光的文件里面找找一个参数改成true就行了

    • vr4r5_8851 回复 vr4r5_8851 2020年5月10日 下午4:40

      好的,当时也看到了那个,但是没注意,一直以为是雷达的事,还找了hokuyo的源码,对比了一下,害

    • ukq26_6484 回复 vr4r5_8851 2020年5月12日 上午10:56

      请问一下你的能建图了吗?我的打开之后可以有image,但是topic里面没有关于laser的,rviz里面也没有地图信息

    • 布剪刀石头 回复 ukq26_6484 2020年5月16日 下午3:10

      抱歉,前段时间在忙毕设,弄之前写四轮的博客把激光雷达给关了。。。所以收不到雷达数据建不了图。。。。~/racecar_ws/src/racecar_description/urdf/racecar.gazebo在这个文件中61行改成false即可。。。我傻逼了

  • 古月光翟氵青 2020年5月10日 上午1:02

    老师您好,我用你的源代码试了试,启动slam建图命令roslaunch racecar_gazebo slam_gmapping.launch之后,rviz启动不正常,左侧显示Global Status: Error,界面和文章中roslaunch racecar_gazebo slam_gmapping.launch这句命令正下方第一张图片一样,命令行中会提示以下内容:
    [ERROR] [1589043509.799348316, 844.477000000]: PluginlibFactory: The plugin for class ‘rtabmap_ros/MapGraph’ failed to load. Error: According to the loaded plugin descriptions the class rtabmap_ros/MapGraph with base class type rviz::Display does not exist. Declared types are moveit_rviz_plugin/MotionPlanning moveit_rviz_plugin/PlanningScene moveit_rviz_plugin/RobotState moveit_rviz_plugin/Trajectory rviz/Axes rviz/Camera rviz/DepthCloud rviz/Effort rviz/FluidPressure rviz/Grid rviz/GridCells rviz/Illuminance rviz/Image rviz/InteractiveMarkers rviz/LaserScan rviz/Map rviz/Marker rviz/MarkerArray rviz/Odometry rviz/Path rviz/PointCloud rviz/PointCloud2 rviz/PointStamped rviz/Polygon rviz/Pose rviz/PoseArray rviz/PoseWithCovariance rviz/Range rviz/RelativeHumidity rviz/RobotModel rviz/TF rviz/Temperature rviz/WrenchStamped rviz_plugin_tutorials/Imu
    可以在Gazebo中控制小车,但是在Rviz中显示不了,请问应该如何解决呢?谢谢老师

    • 布剪刀石头 回复 古月光翟氵青 2020年5月10日 下午1:10

      应该是我之前保存的rviz的一些配置无效,rviz不会显示小车。不影响建图呀……我就没改了,你可以自己打开空的rviz然后生成新的.rviz文件然后看你想要啥功能就打开啥功能

    • 布剪刀石头 回复 古月光翟氵青 2020年5月17日 下午1:57

      显示问题已经修复了,可以git clone下载代码,原因是我保存的rviz配置文件和提供的仿真包不匹配,话题的名字多了/racecar