鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    通过源码fishbot_motion_control_microros构建的固件,话题odom发布失败

    已定时 已固定 已锁定 已移动 未解决
    FishBot二驱机器人
    micro-ros odom
    4
    5
    480
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • L
      lanshengzhi
      最后由 编辑

      我想请教一下两轮小车。

      1. 烧录了github上对应的fishbot_motion_control_v1.0.0.alpha1.240423.bin固件,odom是可以发布的。
      2. 而烧录自己编译对应的源码https://github.com/fishros/fishbot_motion_control_microros.git,
        提示发布odom话题失败,而imu的话题发布是成功的。

      代码和工程配置均没有修改,只是通过配置工具修改了wifi和server ip。
      这个大概什么原因?我看了社区,没找到有相关的问题。

      下面是打印的信息:

      [58]@53>D:first_startup=0
      =================================================
           wwww.fishros.com        
      fishbot-motion-control-v1.0.0
      =================================================
      
      [69]@53>D:first_startup=0
      $first_startup=0
      $serial_baud=921600
      $serial_id=0
      $wifi_ssid=TEST-WIFI
      $wifi_pswd=12345678
      $wifi_ap_ssid=FISHBOT_FDB0
      $wifi_ap_pswd=
      $microros_mode=udp_client
      $udpserver_ip=10.177.1.211
      $udpserver_port=8888
      $ros2_nodename=fishbot_motion_control
      $ros2_namespace=
      $odom_topic=odom
      $odom_frameid=odom
      $odom_c_frameid=base_link
      $twist_topic=cmd_vel
      $odom_pub_period=50
      $reducate_ration=40.50
      $pulse_ration=44
      $wheel_diameter=65
      $wheel_distance=172.75
      $pid_kp=0.62
      $pid_ki=0.13
      $pid_kd=0.00
      $pid_outlimit=100.00
      $board=motion_board
      $version=v1.1.0
      
      init motor param 0: 0.114592=65.000000*PI/(0*1078214656) speed_factor=44
      init motor param 1: 0.114592=65.000000*PI/(0*1078214656) speed_factor=44
      WIFI EVENT!
      WIFI EVENT!
      WIFI EVENT!
      WIFI EVENT!
      WIFI EVENT!
      [5931]@405>D:current_time:1074636612
      [5973]@517>D:Failed status on line 517: 1. Continuing.
      
      [6023]@517>D:Failed status on line 517: 1. Continuing.
      
      [6073]@517>D:Failed status on line 517: 1. Continuing.
      

      在ubuntu2204的ROS2环境下执行ros2 node list,得到如下信息:

      /fishbot_motion_control
      ros@ubuntu-ros:~$ ros2 node info /fishbot_motion_control
      /fishbot_motion_control
        Subscribers:
          /cmd_vel: geometry_msgs/msg/Twist
        Publishers:
          /imu: sensor_msgs/msg/Imu
          /odom: nav_msgs/msg/Odometry
        Service Servers:
          /fishbot_config: fishbot_interfaces/srv/FishBotConfig
        Service Clients:
      
        Action Servers:
      
        Action Clients:
      

      执行ros2 topic echo /imu

      header:
        stamp:
          sec: 1729659226
          nanosec: 115000000
        frame_id: imu
      orientation:
        x: -8.148830966092646e-05
        y: -0.0006152255809865892
        z: 0.10753974318504333
        w: 0.994200587272644
      orientation_covariance:
      - 0.0
      - 0.0
      - 0.0
      - 0.0
      - 0.0
      - 0.0
      - 0.0
      - 0.0
      - 0.0
      angular_velocity:
        x: 0.1942291259765625
        y: -0.23795455694198608
        z: 0.018565893173217773
      angular_velocity_covariance:
      

      执行ros2 topic hz /imu

      
      average rate: 20.790
              min: 0.021s max: 0.078s std dev: 0.01170s window: 22
      average rate: 19.814
              min: 0.021s max: 0.106s std dev: 0.01459s window: 42
      average rate: 20.244
              min: 0.020s max: 0.106s std dev: 0.01420s window: 64
      average rate: 20.233
              min: 0.009s max: 0.113s std dev: 0.01657s window: 85
      
      
      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        从你提供的信息来看,IMU话题能够正常发布,但odom(里程计)话题发布失败。这种情况通常与几个方面的配置或代码实现有关。以下是一些可能的原因和解决方法:

        1. 检查odom话题发布逻辑:

          • 查看源码中odom话题的发布逻辑是否完整无误。特别是检查odom消息是否在适当的地方被构造并发布。
          • 确认odom发布逻辑是否依赖于某些特定的传感器数据或计算结果,这些数据或结果可能未正确生成或传递。
        2. 检查ROS 2节点状态:

          • 虽然/fishbot_motion_control节点显示在ROS 2节点列表中,但ros2 node info显示odom为发布者,但实际上并未成功发布数据。这可能是因为发布过程中出现了异常或错误。
          • 尝试在源码中添加更多的日志输出,尤其是在odom消息发布前后,以便跟踪问题。
        3. 检查ROS 2网络通信:

          • 确保ROS 2网络设置正确,UDP通信没有问题。你已经设置了$microros_mode=udp_client和$udpserver_ip/$udpserver_port,但还需确认ROS 2主节点(通常是你的ROS 2环境)是否监听在指定的端口上,并且没有防火墙或网络配置阻止UDP通信。
          • 尝试使用tcpdump或类似的网络分析工具来监控UDP通信,看是否有数据从设备发送到ROS 2环境。
        4. 检查硬件和传感器数据:

          • 如果odom的发布依赖于编码器或其他传感器数据,请确保这些传感器正常工作并正确连接到设备。
          • 检查是否有任何硬件故障或传感器数据异常,这可能导致odom消息无法正确构造。
        5. 编译和配置问题:

          • 尽管你提到代码和工程配置没有修改,但有时候编译过程中的小错误或依赖问题可能导致最终固件的行为与预期不符。
          • 尝试清理并重新编译整个项目,确保所有依赖都是最新的并且没有遗漏。
          • 检查任何可能影响编译结果的配置设置,如编译器优化级别、宏定义等。
        6. 固件和ROS 2版本兼容性:

          • 确保你编译的固件与你的ROS 2环境版本兼容。不同版本的ROS 2可能在消息类型、服务接口等方面存在差异。
        7. 查看错误日志:

          • 你提到打印信息中有“Failed status on line 517: 1. Continuing.”这样的错误日志。尽管它说“Continuing.”,但这仍然可能是一个关键的错误线索。检查该行代码及其周围的逻辑,看是否有任何可能导致odom发布失败的因素。

        通过上述步骤,你应该能够更接近问题的根源,并找到解决odom话题发布失败的方法。如果问题仍然存在,可能需要更深入地分析代码或寻求来自项目维护者或社区的帮助。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • K
          kenggua211
          最后由 编辑

          我使用的四驱版也遇到的这个问题,请问你解决了吗

          1 条回复 最后回复 回复 引用 0
          • Q
            qwe123456
            最后由 编辑

            此回复已被删除!
            1 条回复 最后回复 回复 引用 0
            • Q
              qwe123456
              最后由 编辑

              6680a0cc-b85c-455d-b4aa-6f372e247ac0-image.png 改通信的服务质量就OK了

              1 条回复 最后回复 回复 引用 0
              • 第一个帖子
                最后一个帖子
              皖ICP备16016415号-7
              Powered by NodeBB | 鱼香ROS