古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法

2023-05-16

   最近想在Gazebo中开发一些仿真内容,于是购买了古月学院的《如何在Gazebo中实现阿克曼转向车的仿真》课程,但是由于ROS 版本的更新,拿到手的课程资料不能直接在ROS Noetic版本中运行,经过我这几天的探索,对遇到的错误及解决方法进行了整理,方便后面购买课程的小伙伴更快的成功运行程序


   在文章正式开始之前,先放一下我之前为了寻找该资料报错的原因,而写的两篇与该课程相关的文章链接,感兴趣的可以自行阅读

   以阿克曼转向车为例对URDF和XACRO文件进行解读(点击可跳转)
   将xacro格式文件转换为urdf格式并对其进行检查格式,并生成机器人模型的结构图(点击可跳转)


一、执行roslaunch bringup racecar_gazebo.launch指令时的错误及解决方法

   在执行roslaunch bringup racecar_gazebo.launch指令时,会报以下错误

   [platform_link] of joint [camera_joint] not found. This is not valid according to the URDF spec. Every link you refer to from a joint needs to be explicitly defined in the robot description. To fix this problem you can either remove this joint [camera_joint] from your urdf file, or add “” to your urdf file.
   [robot_state_publisher-5] process has died [pid 17225, exit code 1, cmd /opt/ros/noetic/lib/robot_state_publisher/robot_state_publisher /joint_states:= /racecar/joint_states __name:=robot_state_publisher __log:=/home/jzx /.ros/log / c36c7514 -28da-11ec-9477-05 e88 1bcd2 be/robot_state_p ublisher-5.log].
log file: /hom e/jzx/.ros /log/c36c7514-28da -11ec-9477-05e 881bcd2 be/robot_st ate_publisher-5*.log

   [ERROR] [1634112531.464757364]: Failed to build tree: child link [imu_link] of joint [imu_joint] not found[robot_state_publisher-5] process has died [pid 8989, exit code 1, cmd /opt/roseticb/robot_st ate_publisher/robot_state_publisher /join t_s tates:=/racecar/joint_states __name:=robot_state_publisher _l og:=/home/jzx/.ros/log/cc0d1be0-2bfc-11ec-8f3c- 4d8e4603 a785/robot_state publisher-5.log].log file : /home /jzx/.ros/log/cc0d1be0-2bfc-11ec8f3c-4d8e4603a785/robot_state_publisher-5*.log

  

  

   等等一系列错误

  要消除执行roslaunch bringup racecar_gazebo.launch指令时,所报的一系列错误,需要对几个XACRO文件进行修改,具体修改如下:

  1、对racecar.urdf.xacro的修改

  打开该文件,我用的Visual Studio Code打开的,拖到第420行,标签visual后面有个W,将这个W删去,估计是作者不经意间敲上的

  将473、475、477、479行的layer前加上 xacro:

  这是因为在ROS Noetic版本中即使是调用文件内部的宏,也需要在其前面加上xacro:


  2、对imu.xacro的修改
  打开该文件,我用的Visual Studio Code打开的,拖到第20行,将下图红框处的black,改为tire_mat

  不改的话,会报一个警报,是因为在文件中并没有定义颜色black,而在racecar. urdf .xacro文件中,定义了颜色tire_mat(其实就是黑色的),所以在这里我们用其来代替未定义的black

  将文件拖到最后,在下图红色框所示位置添加以下语句:

    <xacro:imu prefix="imu"/>

  在该文件中定义了宏imu,但是没有调用,需要通过以上语句来调用该宏,生成imu_link等结构


  3、对lidar.xacro的修改
  打开该文件,我用的Visual Studio Code打开的,拖到第20行,将下图红框处的black,改为tire_mat

  不改的话,会报一个警报,是因为在文件中并没有定义颜色black,而在racecar. urdf .xacro文件中,定义了颜色tire_mat(其实就是黑色的),所以在这里我们用其来代替未定义的black

  将文件拖到最后,在下图红色框所示位置添加以下语句:

  <xacro:lidar prefix="laser"/>

  在该文件中定义了宏lidar,但是没有调用,需要通过以上语句来调用该宏,生成laser_link等结构

  到这里这几个XACRO文件就改完了,此时去运行语句roslaunch bringup racecar_gazebo.launch 就不会报错了,如果能够启动Gazebo,但是加载不出模型,那么需要在执行这条语句之前,先执行以下语句:

    export SVGA_VGPU10=0

二、执行roslaunch bringup racecar_gazebo.launch指令时的错误及解决方法

   在成功执行roslaunch bringup racecar_gazebo.launch指令之后,再执行roslaunch bringup racecar.launch指令时,会报以下错误:

   (1)这其实是一类错误,Could not load controller…

  以上错误是由于没有安装ros-noetic-effort-controllers导致的,需要运行以下指令进行安装

   sudo apt-get install ros-noetic-effort-controllers

   (2)除了上面的错误还有以下错误:/usr/bin/env: “python”: 没有那个文件或目录

在这里插入图片描述

   导致以上错误的原因可能有两个,一是没有安装python3.8,可运行以下指令安装

     sudo apt-get install python3.8

   第二个原因是,你虽然装了但是没有设置软连接,依次输入以下指令进行设置

    whereis python3.8
    cd /usr/bin
    ln -s /usr/bin/python3.8 python

   解决完以上两个主要错误后,可能还会有个错误[servo_commands-7] process has died

   这个错误可以先忽略,等我们启动后面的节点后,这个错误就自动消失了


三、执行rosrun racecar_description servo_commands.py指令时的错误及解决方法

   执行rosrun racecar_description servo_commands.py指令时,会报以下错误:

   执行以下指令,安装缺失的msgs,就可以了

     sudo apt install ros-noetic-ackermann-msgs

四、执行rosrun racecar_description keyboard_teleop.py指令时的错误及解决方法

   执行rosrun racecar_description keyboard_teleop.py指令时,会报以下错误:

   这个错误是由于python版本的发展导致的语法差异,在python3中,使用print时需要加括号,根据错误里的路径提示,去找到这个文件并打开,按照提示,找到71行,将print ‘error’,改为print (‘error’),如下图所示:


   到这里就可以使用键盘在rviz或者gazebo中去控制小车运动了,如下所示:

在这里插入图片描述


在这里插入图片描述


  文章处于持续更新中…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法 的相关文章

随机推荐