=====================1===================== temperature--> CPU : 72.8 (C) cpu frequency--> min cur max cpu0: 240000 1200000 1200000 cpu1: 240000 1200000 1200000 cpu2: 240000 1200000 1200000 cpu3: 240000 1200000 1200000 bpu status information----> min cur max ratio bpu0: 400000000 1000000000 1000000000 100 bpu1: 400000000 1000000000 1000000000 100
[ INFO] rviz version 1.14.19 [ INFO] compiled against Qt version 5.12.8 [ INFO] compiled against OGRE version 1.9.0 (Ghadamon) [ INFO] Forcing OpenGl version 0.
libEGL warning: DRI2: failed to authenticate
libEGL warning: MESA-LOADER: failed to open swrast(search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri) libEGL warning: MESA-LOADER: failed to open swrast(search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri) libEGL warning: DRI2: failed to authenticate libEGL warning: MESA-LOADER: failed to open swrast(search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri) libEGL warning: MESA-LOADER: failed to open swrast(search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri) Segmentation fault
正常的输出是这样:
1 2 3 4 5 6 7
[ INFO] rviz version 1.13.21 [ INFO] compiled against Qt version 5.9.5 [ INFO] compiled against OGRE version 1.9.0 (Ghadamon) [ INFO] Forcing OpenGl version 0. [ INFO] Stereo is NOT SUPPORTED [ INFO] OpenGL device: SVGA3D; build: RELEASE; LLVM; [ INFO] OpenGl version: 3.3 (GLSL 3.3) limited to GLSL 1.4 on Mesa system.
if(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h") # Found a PCL installation # pcl_message("Found a PCL installation") set(PCL_INCLUDE_DIRS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}") set(PCL_LIBRARY_DIRS "${PCL_ROOT}/lib/x86_64-linux-gnu") if(EXISTS "${PCL_ROOT}/3rdParty") set(PCL_ALL_IN_ONE_INSTALLER ON) endif(EXISTS "${PCL_ROOT}/3rdParty") elseif(EXISTS "${PCL_ROOT}/include/pcl/pcl_config.h") # Found a non-standard (likely ANDROID) PCL installation # pcl_message("Found a PCL installation") set(PCL_INCLUDE_DIRS "${PCL_ROOT}/include") set(PCL_LIBRARY_DIRS "${PCL_ROOT}/lib") if(EXISTS "${PCL_ROOT}/3rdParty") set(PCL_ALL_IN_ONE_INSTALLER ON) endif(EXISTS "${PCL_ROOT}/3rdParty") elseif(EXISTS "${PCL_DIR}/include/pcl/pcl_config.h") # Found PCLConfig.cmake in a build tree of PCL # pcl_message("PCL found into a build tree.") set(PCL_INCLUDE_DIRS "${PCL_DIR}/include") # for pcl_config.h set(PCL_LIBRARY_DIRS "${PCL_DIR}/lib/x86_64-linux-gnu") set(PCL_SOURCES_TREE "/build/pcl-OilVEB/pcl-1.8.1+dfsg1") else(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h") pcl_report_not_found("PCL can not be found on this machine") # 这里报错 endif(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")
segmentation-based。该类方法通常基于聚类,比如,Litomisky等人基于确定视角下的特征分布直方图(VFH, Viewpoint Feature Histogram)来从静态聚类中区分出动态聚类;Yin等人则认为相邻帧配准过程中匹配误差较大的点很可能是动态点,用这些点作为种子进行区域生长,搜索出的聚类既是动态聚类;此外,Yoon等人也提出了一种基于区域生长过滤动态聚类的方案。基于分割的方法中不得不提的还有基于深度学习的语义分割方法(deep-learning based semantic segmentation),语义分割直接label出了哪些点是动态物体,建图算法只需要直接弃掉这些点即可,简单粗暴。但是,深度学习只能分割出训练过的动态类别,对其它类别的动态物体则无能为力。
ray tracing based method 这类方法非常典型地要结合栅格去实现,可以是普通的占据栅格或者八叉树栅格。其基本原理是,激光点打到的cell,hits计数+1,激光光束穿过的cell,misses计数+1,通过hits和misses计算cell的占据概率,占据概率低于阈值,则抹除掉这个cell内的所有点。这种方法利用了动态点只会短暂地hit到某个cell,这个cell在随后的大部分时间里都会被miss的特点。这种方法的 缺点是消耗计算资源,因为一个激光点不仅产生了一个hit,同时又产生非常多的misses。当然,这个方法也可以用后处理的方式去做,比如Cartographer 3D
The obstacle_detector package provides utilities to detect and track obstacles from data provided by 2D laser scanners. Detected obstacles come in a form of line segments or circles. The package was designed for a robot equipped with two laser scanners therefore it contains several additional utilities.
resulting laser scan divides the area into finite number of circular sectors and put one point (or actually one range value) in each section occupied by some measured points
This node converts messages of type sensor_msgs/LaserScan from topic scan or messages of type sensor_msgs/PointCloud from topic pcl into obstacles which are published as messages of custom type obstacles_detector/Obstacles under topic raw_obstacles.
obstacle_tracker node
使用卡尔曼滤波追踪和过滤圆形障碍,订阅消息类型obstacle_detector/Obstacles from topic raw_obstacles and publishes messages of the same type under topic tracked_obstacles. The tracking algorithm is applied only to the circular obstacles, hence the segments list in the published message is simply a copy of the original segments. The tracked obstacles are supplemented with additional information on their velocity.
自定义的消息
CircleObstacle
1 2 3 4 5 6 7 8
// center of circular obstacle, geometry_msgs/Point center // linear velocity of circular obstacle, geometry_msgs/Vector3 velocity // radius of circular obstacle with added safety margin, float64 radius // measured radius of obstacle without the safety margin. float64 true_radius
SegmentObstacle
1 2 3 4
// first point of the segment (in counter-clockwise direction) geometry_msgs/Point first_point // end point of the segment geometry_msgs/Point last_point