gazebo 仿真阶段性问题汇总二

写在前面的话

以下问题是我在实验中遇到的,可能不是对谁都适用,具体问题具体分析,学会自己发现和解决问题。本文仅作参考,有问题欢迎加我微信一起探讨。

遇到的问题

问题一:启动了多个 robot_state_publisher

[ERRoR] [launch]: caught exception in launch (see debug for traceback): caught multiple exceptions when trying to load file of format [launch]:
InvalidfrontendLaunchfileError: caught multiple exceptions when trying to load file of format [launch]:
- ParseError:syntax error:line 1,column 0
- ScannerError: mapping values are not allowed here in "/home/xucg/car_exp_ws/install/car_urdf/share/car_urdf/launch/gazebo.launch", line 16, column 26
- XacroException: name 'base link point' is not defined
when evaluating expression 'base link point'

在这里插入图片描述

解决办法

删除掉 package.xml 里面的 robot_state_publisher 这行,再次编译运行即可。

在这里插入图片描述

问题二:rviz 启动报错

解决办法

将 .rviz 文件中 Gloabl Options 的 Fixed Frame 修改成 xacro 中已经声明的 Link (base link 或者 base_footprint),这个报错是我从其他地方复制的 rviz 文件会有问题。这个也可以在 rviz 界面的左上角参数自己修改。

在这里插入图片描述

在这里插入图片描述

问题三:rviz 中 wheel 一直指向 base_link

我的模型是四轮转向模型,转向器是跟base_link连接,车轮是跟转向器连接,所以这里的指向是不对的,它会出现下图的报错找不到 transform

[rviz2-10] Error:TF_NAN_INPUT: Ignoring transform for child frame id "left_front_wheel_Link" from authority "Authority undetectable" because of a nan value in the transform (nan nan nan)(nan nan nan nan)
[rviz2-10] at line 235 in ./src/buffer core.cpp
[rviz2-10] TF DENORMALIZED QUATERNION: Ignoring transform for child frame id "left_front_wheel_Link"
[rviz2-10] Error:from authority "Authority undetectable" because of an invalid quaternion in the transform (nan nan nan nan)

注意:修改.rviz文件中Tree是没用的,我尝试过

在这里插入图片描述
在这里插入图片描述

解决方法

上述报错的原因说是robot_state_publisher只能发布静态信息(fixed),不能发布动态信息(continues),解决办法是多启动一个 joint_state_publisher 就行

注意:如果还启动了 joint_state_broadcaster 还要把这个注释掉

在这里插入图片描述

    robot_state_publisher = Node(
        package='robot_state_publisher',
        executable='robot_state_publisher',
        parameters=[{
    
    'use_sim_time': True}, 
                    params, 
                    # {"publish_frequency":15.0},
                    ],
        output='screen'
    )

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

问题四:摄像头和opencv坐标系的问题

摄像头的坐标在 rviz 中是 Z 轴向上,X 向前,而在Opencv中是 Z 轴是向前,Y轴向上。

需要加上一个 camera_optical_jointcamera_link_optical,代码如下所示。

解决方法

        <link name="camera_link_optical"></link>
        <joint name="camera_optical_joint" type="fixed">
        <!-- these values have to be these values otherwise the gazebo cameraimage 
        won't be aligned properly with the frame it is supposedlyoriginating from -->
            <origin xyz="0 0 0" rpy="${-pi/2} 0 ${-pi/2}"/>
            <parent link="camera_link"/>
            <child link="camera_link_optical"/>
        </joint>

        <gazebo reference="${prefix}_link">
            <sensor type="camera" name="camera_node">
                <visualize>true</visualize>
                <update_rate>30.0</update_rate>
                <camera name="head">
                    <horizontal_fov>1.3962634</horizontal_fov>
                    <image>
                        <width>1280</width>
                        <height>720</height>
                        <format>R8G8B8</format>
                    </image>
                    <clip>
                        <near>0.02</near>
                        <far>300</far>
                    </clip>
                    <noise>
                        <type>gaussian</type>
                        <mean>0.0</mean>
                        <stddev>0.007</stddev>
                    </noise>
                </camera>
                <plugin name="gazebo_camera" filename="libgazebo_ros_camera.so">
				    <ros>
				        <!-- <namespace>stereo</namespace> -->
				        <remapping>~/image_raw:=image_raw</remapping>
				        <remapping>~/camera_info:=camera_info</remapping>
				    </ros>
				    <camera_name>${
    
    prefix}</camera_name>
				    <frame_name>camera_link_optical</frame_name>
				    <hack_baseline>0.2</hack_baseline>
                </plugin>
            </sensor>
        </gazebo>

在这里插入图片描述

问题五:雷达点很小显示不清晰

修改 Size 的显示大小,默认是0.01m,设置大点即可

在这里插入图片描述

问题六:在gazebo中显示雷达和图像

在这里插入图片描述

解决方法

增加 visualize 属性为 true 即可

 <visualize>true</visualize>

在这里插入图片描述

参考文章

1 No transform found between base link and wheels for the TF of my robot when setting odom as fixed frame. Robot steers just fine when sending twist messages to /cmd_vel
2 Rviz ERROR: No transform from [wheel_left_link] & [wheel_right_link] to [odom]
3 No transform from front_left_wheel to base_link

猜你喜欢

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