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

    ft_sensor如何创建六维力传感器

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ftsensor ros2
    2
    2
    230
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 9
      924630994
      最后由 编辑

      有关于在机器人的末端法兰,建立了一个link,并将末端法兰与link之间的关节定义为fixed,想要通过ft_sensor来获取这个关节的力和力矩信息。
      bb290b57-ce97-4423-bc04-2a09f64b4dc3-image.png
      目前网上的资料,多使用gazebo插件,libgazebo_ros_ft_sensor.so来完成,这个库来自于gazebo_ros_pkg这个功能包,但是以及停止维护,相关的官方文档在wiki上无法获得,网上只能找到ros1版本的相关配置,以及一个官方的ros1移植ros2的示例文件。
      也有相关文章使用ros2_contorl的Force Torque Sensor Broadcaster控制器来进行的,但是会找不到gazebo中的interface,有博主提供的解决方法:https://blog.csdn.net/weixin_49638178/article/details/140585820
      可以实现。
      同理,我使用libgazebo_ros_ft_sensor.so来进行,配置如下
      8b5a48d7-bc23-47b1-860e-1fc987f3d7d3-image.png
      运行后发布了fr_sensor_topic话题,并也能读取到数据。

      问题:

      数据的准确性似乎有问题?且会受到gazebo中的physic的影响?
      具体表现为:将机器人竖直起来
      4022cd7f-2acf-4266-bce4-2ad1e7bc4e9a-image.png
      随后,查看传感器数据,发现力和力矩的跳变很严重,且基本都是相反数一般的跳变
      d59ca0a1-029a-4110-81ab-a44bd5ce8ae4-image.png
      当关闭physic时,数据不在跳变,但是sensor的力和力矩分别是:
      daf4b66d-e891-434f-aa07-6f5d07e7fa50-image.png
      但是这个数据很奇怪,我的sensor_link的质量是1kg,根据计算,在Z方向施加的力应当只有重力9.8N,但是现在在X Y Z方向上都有力,且数值都很大。力矩倒是不明显。
      初步怀疑是否是这个力和力矩的参考坐标系有问题? 但是如果坐标系有问题,力矩应该也会有误差。

      是否有小伙伴做过相关的内容,能否提供一些资料,或者进行相关的探讨。帮助解决这个问题。或者有其他的思路和方法能够完成末端六维力传感器的仿真实现。感激不尽!!!!!

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        在使用 Gazebo 和 ROS 进行六维力传感器仿真时,确实会遇到一些问题,尤其是数据准确性和参考坐标系的问题。以下是一些可能的解决步骤和思路,希望能帮助你解决这些问题。

        1. 确认参考坐标系

        首先,确保你清楚理解力/力矩数据的参考坐标系。在 Gazebo 中,通常力/力矩数据是基于传感器的本地坐标系发布的。如果你的传感器是固定在末端法兰上的,那么这个本地坐标系应该是与末端法兰的坐标系一致的。

        • 检查传感器和 link 的坐标系:确保传感器和 link 的坐标系设置正确。你可以在 Gazebo 的模型中检查这些坐标系的设置。
        • 理解数据输出:阅读相关的 Gazebo 插件代码(如 libgazebo_ros_ft_sensor.so 的源代码),理解它是如何计算和发布力/力矩数据的。

        2. 验证物理设置

        物理仿真中的不准确数据往往与物理设置有关。

        • 调整物理参数:检查 Gazebo 的物理设置,如重力、摩擦系数、刚体质量、惯性矩等。确保这些参数设置合理。
        • 关闭/开启物理引擎:你已经注意到,关闭物理引擎后数据不再跳变。这可能是物理引擎计算中的数值不稳定问题。尝试调整物理引擎的步长(time step)或其他相关参数,看是否有所改善。

        3. 使用 ROS 2 和 Gazebo 的新特性

        由于 libgazebo_ros_ft_sensor.so 已经停止维护,考虑使用 ROS 2 和 Gazebo 的新特性或替代方案。

        • ROS 2 Control 和传感器广播:你已经尝试使用 ROS 2 Control 的 Force Torque Sensor Broadcaster,但遇到了问题。检查你的 ROS 2 Control 配置和 Gazebo 的 interface 设置,确保它们正确匹配。
        • 自定义插件:考虑编写一个自定义的 Gazebo 插件来读取力/力矩数据,并通过 ROS 2 发布。这样可以更灵活地控制数据的计算和发布方式。

        4. 数据后处理

        如果数据仍然不准确,考虑在 ROS 节点中进行数据后处理。

        • 滤波:应用滤波器(如卡尔曼滤波器)来平滑力/力矩数据。
        • 校准:通过实验校准传感器数据,找到数据中的偏差并进行补偿。

        5. 社区和资源

        • 查阅文档和社区:虽然官方文档可能有限,但 ROS 和 Gazebo 社区中可能有其他用户遇到过类似问题,并分享了解决方案。
        • 参与讨论:在 ROS 论坛、Gazebo 讨论组或相关社区中提问,寻求帮助。

        结论

        解决六维力传感器仿真中的问题可能需要一些试错和调试。通过仔细检查参考坐标系、物理设置、ROS 2 和 Gazebo 的配置,以及考虑数据后处理,你应该能够找到改善数据准确性的方法。同时,保持对社区资源的关注,以便及时获取最新的解决方案和最佳实践。


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

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

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