gazebo 遇到的阶段性问题汇总一

1 gazebo中碰撞模型崩坏或者飞的问题

主要原因:惯性(质量和惯性矩阵)设置不准确

个别零件质量太大,个别零件质量太小,同样的速度发生碰撞

  1. 弹性碰撞(或称完全弹性碰撞),如果在弹性力的作用下,只产生机械能的转移,系统内无机械能的损失,称为弹性碰撞(或称完全弹性碰撞)。此类碰撞过程中,系统动量和机械能同时守恒。

  2. 非弹性碰撞,如果是非弹性力作用,使部分机械能转化为物体的内能,机械能有了损失,称为非弹性碰撞。此类碰撞过程中,系统动量守恒,机械能有损失,即机械能不守恒。

  3. 完全非弹性碰撞,如果相互作用力是完全非弹性力,则机械能向内能转化量最大,即机械能的损失最大,称为完全非弹性碰撞。碰撞物体粘合在一起,具有同一速度。此类碰撞过程中,系统动量守恒,机械能不守恒,且机械能的损失最大。

2 编译报错

大致意思就是编译了不必要的包(gazebo)

CMake Warning (dev)at /usr/share/cmake-3.22/Modules/FindPackageHandlestandardArgs.cmake:438(message):The package name passed to find package handle standard args*(PkgConfig)does not match the name of the calling package (gazebo). This can lead toproblems in calling code that expects find package  result variables(e.g.,FOUND`)to follow a certain pattern.all stack(most recent call first):
/usr/share/cmake-3.22/Modules/Findpkgconfig.cmake:99 (find package handle stanard args)/usr/lib/x86 64-linux-gnu/cmake/gazebo/gazebo-config.cmake:72 (include)CMakeLists.txt:20(find package)This warning is for project developers. use -Wno-dev to suppress it.

报错截图

在这里插入图片描述

解决方法

在 CMakeLists.txt 中删除 find_package(gazebo REQUIRED) 这行,重新编译就行

在这里插入图片描述

3 控制器无法正常启动

[ERROR] [gzserver-1]: process has died [pid 8858, exit code 255, cmd 'gzserverhome/xucg/car exp ws/install/gazebo simulation/share/gazebo simulation/worlds/4ws world,model slibgazebo ros init,so "slibgazebo ros factory.so -slibgazebo rosforce system.so'l.
[ros2-8] could not contact service /controller manager/load controllerERROR] [ros2-8]: process has died [pid 8872, exit code 1, cmd 'ros2 control loacontroller "set-state active joint state broadcaster'].ros2-7] Could not contact service /controller manager/load controllerERROR] 
[ros2-7]: process has died [pid 8870, exit code 1, cmd 'ros2 control loacontroller .set-state active forward velocity_controller'].
[ros2-6] Could not contact service /controller manager/load controllerERROR] 「ros2-6l: process has died 「pid 8868, exit code 1, cmd 'ros2 control loacontroller .set-state active forward position controller']

在这里插入图片描述

解决方法

修改如下所示,把原本的 ExecuteProcess 函数注释,改用 Node 函数。

    forward_position_controller = Node(
            package="controller_manager",
            executable="spawner",
            arguments=["forward_position_controller"],
        )


    forward_velocity_controller = Node(
            package="controller_manager",
            executable="spawner",
            arguments=["forward_velocity_controller"],
        )

    joint_state_broadcaster = Node(
            package="controller_manager",
            executable="spawner",
            arguments=["joint_state_broadcaster"],
        )


    # forward_position_controller = ExecuteProcess( 
    #     cmd=['ros2', 'control', 'load_controller', '--set-state', 'active', 'forward_position_controller'], 
    #     output='screen'
    # )

    # forward_velocity_controller = ExecuteProcess(
    #         cmd=['ros2', 'control', 'load_controller', '--set-state', 'active', 'forward_velocity_controller'], 
    #         output='screen'
    #     )
    
    # # gazebo在加载urdf时,根据urdf的设定,会启动一个joint_states节点
    # # 关节状态发布器
    # joint_state_broadcaster = ExecuteProcess(
    #         cmd=['ros2', 'control', 'load_controller', '--set-state', 'active', 'joint_state_broadcaster'], 
    #         output='screen'
    #     )

4 xacro:macro 定义函数

函数里面不能引用外部变量,只能使用函数定义的内部变量

在这里插入图片描述

5 xacro:property 定义变量的值

注意:不能使用小数的分数表示形式(1/100)

[ERROR] [launch]: caught exception in launch (see debug for traceback): caught multipLe exceptions when trying to load file of format flaunch]:. InvalidfrontendLaunchfileError: caught multiple exceptions when trying to load file of format [launch]:
ParseError:syntax error:line 1,column ScannerError: mapping values are not allowed herein "/home/xucg/car exp_ws/install/car_urdf/share/car urdf/launch/gazebo,launch", line 16,column 26
.XacroException: can't multiply sequence by non int of type 'floatwhen evaluating expression'948.91 * ratio'

报错截图

在这里插入图片描述

解决方法

#<xacro:property name="ratio" value="1/1000"/>

<xacro:property name="ratio" value="0.001"/>

6 gazebo 模型视觉穿模(已设置碰撞体积)

解决方法

需要设置更大的 kp 值(刚性系数)

<xacro:property name="kp" value="1000000"/>

穿模截图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42899627/article/details/142284390