• ROS1云课→15主题与坐标系


    ROS1云课→14可视化交互


    之前介绍中所涉及的二维三维可视化和交互,如果对应实际传感器,那么需要更多信息。

    1. 传感器发布频率
    2. 传感器时延
    3. 传感器固定在机器人上的位置和姿态
    4. ……

    其中,第三点和坐标系密切相关了。

    主题与坐标系的关系

    如果数据从真实世界中一个物理位置的特定传感器数据发布,主题必须有一个坐标系。例如,相对于机器人底盘的位置上有一个激光传感器(通常在轮式机器人两个轮子的轮轴中间)。如果需要用激光扫描数据去检测环境中障碍物或者构建地图,就必须对激光传感器和底盘所在的位置进行坐标转换。在ROS系统中,带有报文头的消息除了具有时间戳(在不同的消息间进行数据同步非常重要)之外,还要附上frame_id(坐标系标签)。坐标系标签用于区分消息所属的坐标系。

    坐标系自身并没有意义,需要的是它们之间的坐标变换。实际上,机器人的tf坐标变换树都会有一个base_link作为根坐标系(或是地图,如果运行导航包的话)。这样,就能够在rqt_tf_tree中通过对比根坐标系和其他坐标系查看机器人相对于真实世界坐标系的运动。

    启动如下stdr环境:

    roslaunch stdr_launchers server_with_map_and_gui_plus_robot.launch 

    机器人特写:

     

    rosrun rqt_tf_tree rqt_tf_tree  

    对应:

     

    而对于现在的示例,只需要知道它们能够在某个坐标系内进行计算从一个坐标系变换到另外一个坐标系,而且包含时间延迟即可。还需要了解tf在系统中会以某个特定的频率进行发布,这样它就会像子系统一样允许遍历坐标变换树以获取其中任意两个坐标系之间的转换,并且可以在系统的任意节点中通过调用tf进行变换。

    在rviz中查看一下:

     

    1. roslaunch stdr_launchers server_with_map_and_gui_plus_robot.launch
    2. ... logging to /home/shiyanlou/.ros/log/dac41a72-29f7-11ed-9d7c-0242ac110007/roslaunch-6310afb5667ca969528f210f-301.log
    3. Checking log directory for disk usage. This may take awhile.
    4. Press Ctrl-C to interrupt
    5. Done checking log file disk usage. Usage is <1GB.
    6. started roslaunch server http://6310afb5667ca969528f210f:44463/
    7. SUMMARY
    8. ========
    9. PARAMETERS
    10. * /rosdistro: kinetic
    11. * /rosversion: 1.12.14
    12. NODES
    13. /
    14. robot_manager (nodelet/nodelet)
    15. robot_spawn_6310afb5667ca969528f210f_301_673361009853165653 (stdr_robot/robot_handler)
    16. stdr_gui_node_6310afb5667ca969528f210f_301_6214498739113013351 (stdr_gui/stdr_gui_node)
    17. stdr_server (stdr_server/stdr_server_node)
    18. world2map (tf/static_transform_publisher)
    19. auto-starting new master
    20. process[master]: started with pid [311]
    21. ROS_MASTER_URI=http://localhost:11311
    22. setting /run_id to dac41a72-29f7-11ed-9d7c-0242ac110007
    23. process[rosout-1]: started with pid [324]
    24. started core service [/rosout]
    25. process[robot_manager-2]: started with pid [327]
    26. process[stdr_server-3]: started with pid [328]
    27. process[world2map-4]: started with pid [329]
    28. process[stdr_gui_node_6310afb5667ca969528f210f_301_6214498739113013351-5]: started with pid [330]
    29. process[robot_spawn_6310afb5667ca969528f210f_301_673361009853165653-6]: started with pid [340]
    30. [ INFO] [1662038003.277267214]: Loading map from image "/opt/ros/kinetic/share/stdr_resources/maps/sparse_obstacles.png"
    31. [ INFO] [1662038003.365821274]: Read a 775 X 746 map @ 0.020 m/cell
    32. [robot_spawn_6310afb5667ca969528f210f_301_673361009853165653-6] process has finished cleanly
    33. log file: /home/shiyanlou/.ros/log/dac41a72-29f7-11ed-9d7c-0242ac110007/robot_spawn_6310afb5667ca969528f210f_301_673361009853165653-6*.log
    34. [ WARN] [1662040231.980856267]: Map already loaded!
    35. [ERROR] [1662040231.981109167]: Could not load map, maybe already loaded...

    查看sonar数据:

     



        
        
        
        

        
        
        
        
        


  • 相关阅读:
    【教学类-41】翻页连环画4.0(双面2份,正反2种图案翻页)表情包
    gdb core调试实践
    数据结构第五章(一)二叉树部分代码
    KVM虚拟化常见问题汇总
    谷歌账号确认身份手机验证不了
    2024上海国际智慧城市展览会(世亚智博会)智慧城市,数字中国
    计算机网络初识
    SpringMVC异常处理
    距离相关系数的原理及其实现(Numpy代码+第三方包的实现)
    Linux进程替换实现一个简单的shell
  • 原文地址:https://blog.csdn.net/ZhangRelay/article/details/126651431