ROS2中解决rqt_graph不显示系统结构以及interface不能查看数据类型具体的数据结构问题

背景:

在上篇博客中,详细介绍了安装ROS的过程,参考链接:https://blog.csdn.net/zhangzhangshu/article/details/135701875

安装完成后,跟着古月大佬学习ROS2,在这个过程中,遇到了不少问题,今天这篇博客主要介绍其中的两个,以及对应的解决方案。

遇到问题及解决办法

先放上两个问题的报错内容:
问题一:rqt_graph可视化工具不能正常显示网络形态
显示空白
问题二:使用interface查看数据类型具体的数据结构报错
报错内容:

Traceback (most recent call last):
  File "/opt/ros/humble/bin/ros2", line 33, in <module>
    sys.exit(load_entry_point('ros2cli==0.18.7', 'console_scripts', 'ros2')())
  File "/opt/ros/humble/lib/python3.10/site-packages/ros2cli/cli.py", line 89, in main
    rc = extension.main(parser=parser, args=args)
  File "/opt/ros/humble/lib/python3.10/site-packages/ros2interface/command/interface.py", line 35, in main
    return extension.main(args=args)
  File "/opt/ros/humble/lib/python3.10/site-packages/ros2interface/verb/show.py", line 201, in main
    _show_interface(
  File "/opt/ros/humble/lib/python3.10/site-packages/ros2interface/verb/show.py", line 148, in _show_interface
    for line in _get_interface_lines(interface_identifier):
  File "/opt/ros/humble/lib/python3.10/site-packages/ros2interface/verb/show.py", line 116, in _get_interface_lines
    yield InterfaceTextLine(
  File "/opt/ros/humble/lib/python3.10/site-packages/ros2interface/verb/show.py", line 43, in __init__
    msg_spec = parse_message_string(
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/parser.py", line 544, in parse_message_string
    msg = MessageSpecification(pkg_name, msg_name, fields, constants)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/parser.py", line 388, in __init__
    self.base_type = BaseType(
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/parser.py", line 205, in __init__
    raise InvalidResourceName(
rosidl_adapter.parser.InvalidResourceName: 'Spawn.srv' is an invalid message name. It should have the pattern '^[A-Z][A-Za-z0-9]*$'

问题一:rqt_graph可视化工具不能正常显示网络形态

在“理解话题”这篇教程中,教程地址:https://www.guyuehome.com/10560 ,在终端输入下面指令可以启动小海龟仿真器,

ros2 run turtlesim turtlesim_node

运行结果:
启动小海龟程序
ctrl + alt + t 打开一个新的终端,输入下面命令可以控制小海龟的移动。

ros2 run turtlesim turtle_teleop_key

运行结果:
控制小海龟运动
下面我们希望通过rqt_graph这个可视化工具来查看整个系统的状态。 但是在终端中输入指令后,并没有看到系统的状态。

rqt_graph

运行结果如下图:
可视化界面是空白

解决办法

在终端中输入下列命令:

ros2 run rqt_gui rqt_gui

运行结果:
运行界面还是空白
发现这时候运行界面还是空白,此时把Node Graph 这个窗口关掉,然后根据下图依次选择。
选择系统图
执行结果:
只看节点图
通过选择不同的选项,可以看到不同层次的系统图,如下图:
只看节点和话题

问题二:使用interface查看数据类型具体的数据结构报错

在“理解服务”这篇教程中,https://www.guyuehome.com/10721,我们希望查看数据类型具体的数据结构,执行教程上的命令后,会报错。如下图:
报错分析
通过报错: rosidl_adapter.parser.InvalidResourceName: 'Spawn.srv' is an invalid message name. It should have the pattern '^[A-Z][A-Za-z0-9]*$', 可以看出来报错的原因是:无效的消息名字,Spawn.srv 不符合后面的正则表达式要求的形式。解决方案:
解决方案图片
我猜想版本更新之后,不需要.后缀来表示文件的类型,ROS应该有自己的区分办法(一点不成熟的猜想)。
类似的问题,在后面理解动作的教程中也出现了,https://www.guyuehome.com/10898
如下图:
理解动作中的报错
解决之后的结果图:
解决之后的结果图

小结:

在学习的过程中,总会遇到这样那样的问题,不要气馁,仔细分析,总是可以解决的,大家一起加油!

版权声明:本文为博主作者:zhangzhangshu原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/zhangzhangshu/article/details/135764020

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2024年2月19日
下一篇 2024年2月19日

相关推荐