ROS2中解决rqt

背景:

在上篇博客中,详细介绍了安装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 
    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

如下图:

理解动作中的报错

解决之后的结果图:

解决之后的结果图


小结:

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

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/5a456c4929.html