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

    ros2适用tf2报错

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

      5c17b842-e4c8-4e55-b91b-90dccd3743eb-image.png
      如图,创建的world帧 一直说不存在,求助各位大佬,这是怎么回事

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @scy123
        最后由 编辑

        @scy123 你把你的用法贴上来,命令行还是代码?

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        scy123S 2 条回复 最后回复 回复 引用 0
        • scy123S
          scy123 @小鱼
          最后由 编辑

          @小鱼 就用的官方的命令行 ros2 run tf2_ros tf2_echo world turtle1

          小鱼小 1 条回复 最后回复 回复 引用 0
          • scy123S
            scy123 @小鱼
            最后由 编辑

            @小鱼 我跑官方的demo也会有错😵

            1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @scy123
              最后由 编辑

              @scy123 要有发布才行,你要不先看看我的教程

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              scy123S 1 条回复 最后回复 回复 引用 0
              • scy123S
                scy123 @小鱼
                最后由 编辑

                @小鱼 我运行了broadcaster 而且一开始跑ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py这个demo的时候也出错c782b15c-2c56-4b4d-87fd-c732ef59d454-image.png

                小鱼小 1 条回复 最后回复 回复 引用 0
                • 小鱼小
                  小鱼 技术大佬 @scy123
                  最后由 编辑

                  @scy123 emmm,只看错误看不出来

                  @小鱼 在 提问前必看!一定要看!必须看一下! 中说:

                  尽量提供更多的信息(大多数问题不是别人不知道如何解决,而是不知道你的问题是什么)

                  新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                  scy123S 1 条回复 最后回复 回复 引用 0
                  • scy123S
                    scy123 @小鱼
                    最后由 小鱼 编辑

                    @小鱼
                    这是broadcaster的

                    import math
                    from geometry_msgs.msg import TransformStamped
                    import numpy as np
                    import rclpy
                    from rclpy.node import Node
                    from tf2_ros import TransformBroadcaster
                    from turtlesim.msg import Pose
                    
                    
                    def quaternion_from_euler(ai, aj, ak):
                        ai /= 2.0
                        aj /= 2.0
                        ak /= 2.0
                        ci = math.cos(ai)
                        si = math.sin(ai)
                        cj = math.cos(aj)
                        sj = math.sin(aj)
                        ck = math.cos(ak)
                        sk = math.sin(ak)
                        cc = ci*ck
                        cs = ci*sk
                        sc = si*ck
                        ss = si*sk
                    
                        q = np.empty((4, ))
                        q[0] = cj*sc - sj*cs
                        q[1] = cj*ss + sj*cc
                        q[2] = cj*cs - sj*sc
                        q[3] = cj*cc + sj*ss
                    
                        return q
                    
                    
                    class FramePublisher(Node):
                    
                        def __init__(self):
                            super().__init__('broad')
                    
                            
                            self.turtlename = self.declare_parameter('turtlename', 'turtle').get_parameter_value().string_value
                    
                            self.tf_broadcaster = TransformBroadcaster(self)
                    
                            self.subscription = self.create_subscription(Pose,'broad1',self.handle_turtle_pose,10)
                            
                    
                        def handle_turtle_pose(self, msg):
                            t = TransformStamped()
                    
                            t.header.stamp = self.get_clock().now().to_msg()
                            t.header.frame_id = 'world'
                            t.child_frame_id = self.turtlename
                    
                            
                            t.transform.translation.x = msg.x
                            t.transform.translation.y = msg.y
                            t.transform.translation.z = 0.0
                    
                            
                            q = quaternion_from_euler(0, 0, msg.theta)
                            t.transform.rotation.x = q[0]
                            t.transform.rotation.y = q[1]
                            t.transform.rotation.z = q[2]
                            t.transform.rotation.w = q[3]
                    
                            
                            self.tf_broadcaster.sendTransform(t)
                    
                    
                    def main():
                        rclpy.init()
                        node = FramePublisher()
                        try:
                            rclpy.spin(node)
                        except KeyboardInterrupt:
                            pass
                    
                        rclpy.shutdown()
                    
                    launch的
                    
                    from launch import LaunchDescription
                    from launch_ros.actions import Node
                    
                    
                    def generate_launch_description():
                        return LaunchDescription([
                            Node(
                                package='turtlesim',
                                executable='turtlesim_node',
                                name='sim'
                            ),
                            Node(
                                package='scy',
                                executable='broad',
                                name='broadcaster1',
                                parameters=[
                                    {'turtlename': 'turtle1'}
                                ]
                            ),
                        ])
                    

                    然后我运行launch后在命令窗口运行命令行ros2 run tf2_ros tf2_echo world turtle1
                    就出错
                    [tf2_echo]: Waiting for transform world -> turtle1: Invalid frame ID "world" passed to canTransform argument target_frame - frame does not exist

                    小鱼小 1 条回复 最后回复 回复 引用 0
                    • 小鱼小
                      小鱼 技术大佬 @scy123
                      最后由 编辑

                      @scy123 再贴一下rqt tf的图

                      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                      scy123S 2 条回复 最后回复 回复 引用 0
                      • scy123S
                        scy123 @小鱼
                        最后由 编辑

                        @小鱼 图上说 no tf data received

                        1 条回复 最后回复 回复 引用 0
                        • scy123S
                          scy123 @小鱼
                          最后由 编辑

                          @小鱼 小鱼老师,我还想再问一下,我的功能包老是本来能成功运行,然后过一段时间修改代码,然后重新编译再运行,就会说找不到功能包,这是怎么回事呀

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