一、背景
由于任务需要,需要利用ros进行四轮小车的设计。在github上面进行寻找,查询到一个项目十分符合我的任务需求。但是在ubuntu20.04上面ros-noetic版本难以运行这个项目。遇到许多的报错。ros_car_control_laser_scanhttps://github.com/prath1996/ros_car_control_laser_scan 针对其中几个报错,已经查询到解决方式。因为能力有限,这些解决方式,不足以完全解决剩下所有问题。期待能解决剩余问题。
在查询过程中,发现了一个针对此项目的一个问题讨论帖。希望可以有所帮助。
https://github.com/richardw05/mybot_ws/issues/4https://github.com/richardw05/mybot_ws/issues/4
二、问题解决
(一)针对xacro.py报错
这里解决方法是找到mybot_description功能包下的mybot.xacro文件,找到下面这行代码。
"$(find xacro)/xacro.py $(find mybot_description)/urdf/mybot.xacro'"
出现问题的原因在于前半句xacro.py的问题,需要将其更改为xacro,即可解决此报错。
"$(find xacro)/xacro $(find mybot_description)/urdf/mybot.xacro'"
(二)针对惯性矩阵报错
在运行文件过程中,会发现查找不到一些变量。解决方法为:
在\ros_car_control_laser_scan-master\mybot_description\urdf文件夹下macros.xacro文件。
<macro name="cylinder_inertia" params="m r h">
<inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
izz="${m*r*r/2}" />
</macro>
<macro name="box_inertia" params="m x y z">
<inertia ixx="${m*(y*y+z*z)/12}" ixy = "0" ixz = "0"
iyy="${m*(x*x+z*z)/12}" iyz = "0"
izz="${m*(x*x+z*z)/12}" />
</macro>
<macro name="sphere_inertia" params="m r">
<inertia ixx="${2*m*r*r/5}" ixy = "0" ixz = "0"
iyy="${2*m*r*r/5}" iyz = "0"
izz="${2*m*r*r/5}" />
</macro>
将上面的代码更改为下面,可以解决问题。
<macro name="cylinder_inertia" params="m r h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
izz="${m*r*r/2}" />
</inertial>
</macro>
<macro name="box_inertia" params="m x y z">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(h*h + l*l)/12}" ixy = "0" ixz = "0"
iyy="${m*(w*w + l*l)/12}" iyz= "0"
izz="${m*(w*w + h*h)/12}" />
</inertial>
</macro>
<macro name="sphere_inertia" params="m r">
<inertial>
<mass value="${m}" />
<inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
iyy="${2*m*r*r/5}" iyz="0"
izz="${2*m*r*r/5}" />
</inertial>
</macro>
(三)针对xacro:的问题
除上面之外,还有一些变量也可能会找不到,需要在其标签前添加,即可全部查询到。
xacro:
三、说明
因为能力有限,其余报错仍然无法解决。