ROS2 FOXY 编译webots的相关问题

ROS2 FOXY 源码编译webots相关问题

环境:
软件

  1. Ubuntu20.04 focal
  2. ros2 foxy

硬件

  1. CPU:Intel Core i5-8279u Processor 6M Cache, up to 4.10
  2. 内存:12G
  3. 硬盘:联想SSD M.2 128G
  4. 显卡:核显:
    处理器显卡 英特尔锐炬 Plus 品牌 655
    显卡基本频率300 MHz
    显卡最大动态频率1.15 GHz
    显卡视频最大内存32 GB

by default:

编译源码安装–》webots R2021b
参考:https://github.com/cyberbotics/webots_ros2/wiki/Build-and-Install

使用软件包安装》》webots R2022a
sudo apt-get install ros-$ROS_DISTRO-webots-ros2

通过源码安装时,发现编译及相关的问题,以下具体展开。

复现

  1. 根据参考教程,执行到这步:colcon build
    ROS2 FOXY 编译webots的相关问题_第1张图片
    确保依赖:
    在这里插入图片描述

  2. colcon build 出现两个warning:
    Starting >>> webots_ros2_msgs
    Starting >>> webots_ros2_importer
    Finished <<< webots_ros2_msgs [2.48s]
    Starting >>> webots_ros2_driver
    Starting >>> webots_ros2_core
    WARNING:webots_ros2_core: This package will be removed with the release of Webots R2023a. Use “webots_ros2_driver” instead. 0.9s]
    Finished <<< webots_ros2_importer [4.75s]
    Finished <<< webots_ros2_driver [2.75s]
    Starting >>> webots_ros2_control
    Finished <<< webots_ros2_control [0.52s]
    Starting >>> webots_ros2_epuck
    Starting >>> webots_ros2_tiago
    Starting >>> webots_ros2_turtlebot
    Starting >>> webots_ros2_universal_robot
    — stderr: webots_ros2_core
    WARNING:webots_ros2_core: This package will be removed with the release of Webots R2023a. Use “webots_ros2_driver” instead.


Finished <<< webots_ros2_core [5.37s]
Starting >>> webots_ros2_mavic
Starting >>> webots_ros2_tesla
Finished <<< webots_ros2_epuck [8.08s]
Finished <<< webots_ros2_turtlebot [8.02s]
Finished <<< webots_ros2_tiago [8.34s]
Finished <<< webots_ros2_universal_robot [8.33s]
Finished <<< webots_ros2_tesla [5.73s]
Finished <<< webots_ros2_mavic [5.90s]
Starting >>> webots_ros2_tests
Finished <<< webots_ros2_tests [3.75s]
Starting >>> webots_ros2
Finished <<< webots_ros2 [3.85s]

Summary: 13 packages finished [23.6s]
1 package had stderr output: webots_ros2_core

  1. 执行 ros2 launch webots_ros2_epuck robot_with_tools_launch.py rviz:=true

  2. 出现大量刷屏:
    [rviz2-8] [INFO] [1646790185.366637822] [rviz]: Message Filter dropping message: frame ‘odom’ at time 6.920 for reason ‘Unknown’
    [rviz2-8] [INFO] [1646790185.366751220] [rviz]: Message Filter dropping message: frame ‘odom’ at time 6.920 for reason ‘Unknown’
    [rviz2-8] [INFO] [1646790185.399252819] [rviz]: Message Filter dropping message: frame ‘laser_scanner’ at time 6.940 for reason ‘Unknown’
    [rviz2-8] [INFO] [1646790185.399423978] [rviz]: Message Filter dropping message: frame ‘odom’ at time 6.940 for reason ‘Unknown’
    [rviz2-8] [INFO] [1646790185.399530257] [rviz]: Message Filter dropping message: frame ‘odom’ at time 6.940 for reason ‘Unknown’
    [rviz2-8] [INFO] [1646790185.430814747] [rviz]: Message Filter dropping message: frame ‘laser_scanner’ at time 6.980 for reason ‘Unknown’
    [rviz2-8] [INFO] [1646790185.431341853] [rviz]: Message Filter dropping message: frame ‘odom’ at time 6.980 for reason ‘Unknown’

  3. 检查 Odom和map的tf
    cym@cym:~/ros2_webots_ws$ ros2 run tf2_ros tf2_echo odom map
    [INFO] [1646790754.425162129] [tf2_echo]: Waiting for transform odom -> map: Invalid frame ID “odom” passed to canTransform argument target_frame - frame does not exist
    [INFO] [1646790756.382762105] [tf2_echo]: Waiting for transform odom -> map: Invalid frame ID “map” passed to canTransform argument source_frame - frame does not exist
    [INFO] [1646790757.382766578] [tf2_echo]: Waiting for transform odom -> map: Invalid frame ID “map” passed to canTransform argument source_frame - frame does not exist
    [INFO] [1646790758.382791288] [tf2_echo]: Waiting for transform odom -> map: Invalid frame ID “map” passed to canTransform argument source_frame - frame does not exist

  4. 根据教程修改rviz2的frame为:odom
    ROS2 FOXY 编译webots的相关问题_第2张图片

  5. rviz 挂掉:(偶尔不挂)
    ROS2 FOXY 编译webots的相关问题_第3张图片
    rviz2: /tmp/binarydeb/ros-foxy-rviz-ogre-vendor-8.2.6/obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/include/OgreAxisAlignedBox.h:225: void Ogre::AxisAlignedBox::setExtents(const Vector3&, const Vector3&): Assertion `(min.x <= max.x && min.y <= max.y && min.z <= max.z) && “The minimum corner of the box must be less than or equal to maximum corner”’ failed.

总结:
上述过程发现两个问题:
问题1: 按照教程,webots编译出现warning
问题2: 按照教程,运行webot和rviz,rviz间歇性挂掉。

分析与处理

问题1 :webots编译出现warning

这个warning 不确定是否会影响后续功能的使用。如果是使用webot R2023a,可以尝试忽略webots_ros2_core的编译(在该包里放置:命名为COLCON_IGNORE的空文件即可忽略)

但为了避免这个warning会隐藏着巨大的坑,继续深入探究

为什么会产生这个warning呢?

潜意识里,我就先怀疑环境问题。因为之前这篇文章(
https://blog.csdn.net/intoforforever/article/details/123126915spm=1001.2014.3001.5502
https://blog.csdn.net/ZhangRelay/article/details/123135718 )提到的问题,就是由于版本环境问题导致。。

如:ROS2 FOXY 编译webots的相关问题_第4张图片

那先看一下包的版本:
git branch -vv

在这里插入图片描述
此时使用的包是主分支的,
打开git 看了下,master和foxy的分支内容还是有差异的
ROS2 FOXY 编译webots的相关问题_第5张图片
试着切换到foxy分支:

git checkout foxy

git pull

检查一下当前分支:已经是foxy了
在这里插入图片描述

重新编译:
ROS2 FOXY 编译webots的相关问题_第6张图片
warning 没有啦哈啊哈,O(∩_∩)O

在此过程,另外发现一个"彩蛋" ~:

紧接着上面的过程,我们先看下这个目录webots_ros2/webots_ros2_driver/webots的git版本信息:

在这里插入图片描述
在git上也找到对应目录:

ROS2 FOXY 编译webots的相关问题_第7张图片
两个commit是不一样的!

本地和master还是一样的:commitid一样:3c177d…
ROS2 FOXY 编译webots的相关问题_第8张图片

》》没有拉取foxy分支对应的webots文件夹

为什么会这样呢??继续往下看。

原来:
这里的webots_ros2/webots_ros2_driver/webots 文件夹关联到另一个独立分支。
而使用git checkout 无法拉取关联的其他独立分支

比如:
两个独立项目,一个项目分支A,另一个项目分支B。
A使用到B的内容,即分支A嵌套着分支B

git checkout A, 无法拉取关联的分支B

这里涉及到git submodules的概念,在一个项目中拉取关联另一个项目的内容
要使用:

git checkout --recurse-submodules

对应clone就是:

git clone --recurse-submodules

问题2:运行webot和rviz,rviz间歇性挂掉。

根据问题1的处理,版本环境都一一对应后,rviz依然出现间歇性挂掉。。

网上找到这个回答:https://blog.csdn.net/Electrical_IT/article/details/108316566

但是仍旧没有解决,如果是超出范围,应该是一直都不能用;而不是有时候rviz不挂,正常使用。

多次测试发现:

执行launch之后,等待一段时间(20s+),再把rviz上fixed frame 的map修改为odom,rviz大概率不会挂。如下图,没有挂的且正常使用的rviz:
ROS2 FOXY 编译webots的相关问题_第9张图片
如果执行launch,马上修改map为odom,直接挂掉:

ROS2 FOXY 编译webots的相关问题_第10张图片

这个问题还想不通┭┮﹏┭┮。。待解决┭┮﹏┭┮,只能暂时先测试了

以上问题,欢迎评论指教,感谢。

end!

你可能感兴趣的:(ROS2-学习笔记,自动驾驶,人工智能,机器学习)