背景:在gazebo的xacro文件中定义的depth_camera,还是用 ament_cmake编译的,我一个刚接触不到一个月的小白,在报错的时候,只能在网上一顿搜尝试,借助网络来连接亲人们的智慧。
报错信息:gazebo下的构建的world, ros2下定义的xacro文件,rviz2中一运行,显示不出来点云数据,并且控制台一直不断报下面这个错误。
[rviz2-2] [INFO] [1689150328.566431476] [rviz]: Message Filter dropping message: frame 'camera_link_optical' at time 8412.535 for reason 'discarding message because the queue is full'
目录
第5步:第3步后 ,通过更改rviz2里面的Grid参数也能正确显示结果。
解决办法参考(我同事发给我的):
上网上搜 的 :【转载】Realsense2深度相机的基本操作命令_惊涛骇浪前行的博客-CSDN博客
解决途径:
第1步:查看主题发布情况
ros2 topic list -t
/bt_navigator/transition_event [lifecycle_msgs/msg/TransitionEvent]
/camera/camera_info [sensor_msgs/msg/CameraInfo]
/camera/depth/camera_info [sensor_msgs/msg/CameraInfo]
/camera/depth/image_raw [sensor_msgs/msg/Image]
/camera/image_raw [sensor_msgs/msg/Image]
/camera/points [sensor_msgs/msg/PointCloud2] <---点云数据
/clock [rosgraph_msgs/msg/Clock]......
ros2 topic bw /camera/points
Subscribed to [/camera/points] 36.03 MB/s from 3 messages Message size mean: 9.83 MB min: 9.83 MB max: 9.83 MB ......
ros2 topic hz /camera/points
average rate: 1.129 min: 0.877s max: 0.897s std dev: 0.00871s window: 3 ......
ros2 topic echo /camera/points
header:
stamp: sec: 55679 nanosec: 727000000 frame_id: camera_link_optical height: 1 width: 307200 fields: - name: x offset: 0 datatype: 7 ......
ros2 topic info /camera/points
Type: sensor_msgs/msg/PointCloud2
Publisher count: 1 Subscription count: 1
我哐哐一顿搜,发现,主题里面的点云信息发出来了,并且rviz2软件add -> topic 后 ,它也订阅了,没办法,就接着查吧
第2步:查看rqt_graph和rqt_console
# install rqt_*
sudo apt install ~nros-galactic-rqt*
查查rqt_graph
rqt_graph
看着没啥毛病,主要是我也没看懂。
查查rqt_console
ros2 run rqt_console rqt_console
还是一无所获。 接着按着参考的链接里面查
第3步:查看frame_id的名称,并将两个坐标系对上。
我查了这个报错的,很多回答都指向rviz2的坐标系没对上导致显示不出来。
frame_id,相机的坐标系
map, 世界坐标系
# static_transform_publisher x y z yaw pitch roll frame_id child_frame_id
# 用坐标表示平移,用欧拉角表示旋转
ros2 run tf2_ros static_transform_publisher "0" "0" "0" "0" "0" "0" "map" "camera_link_optical"
然后重新启动rviz2, 点云显示出来拉,但是它这图立立着。
ros2 launch ultralytics_ros2 yolov8.launch.py
第4步:更改坐标系里面的数值,正确显示结果。
<origin xyz="0 0 0" rpy="0 0 ${-pi/2}"/>
我只在xxx.xacro文件里搜“camera“的关键字;搜到跟角度的看上去很有关的数据,改改试试:
ros2 run tf2_ros static_transform_publisher "0" "0" "0" "0" "0" "-1.57" "map" "camera_link_optical"
成功了。
第5步:第3步后 ,通过更改rviz2里面的Grid参数也能正确显示结果。
按着鼠标可以在图画里一顿转。