怎么查看pcl点云库是否安装好linux

怎么查看pcl点云库是否安装好linux,第1张

命令行: net start PCL 如果能启动,那说明安装成功了。 如果想查询默认的数据库,你可以用PCLfont,或者直接命令行 *** 作 进入安装目录下的bin文件夹,或者配置好环境变量,然后 PCL -uroot -p

首先 linux *** 作系统是必不可少的

Linux系统如果是学习可以选用redhat或者centos,特别是centos在企业中用得最多,当然还会有其它版本的,比如ubuntu,suse, debian等在企业当中也用的相当多系统的基本使用、磁盘管理、软件包管理、进程管理、用户管理等等这些都是学习的重点

最常见的一些简单服务

服务的种类繁多,每家公司都会用到的服务个不相同,但基础的服务肯定要掌握,比如ssh,apache,at,crontab,ftp,dns,nfs,nginx等等,不光是部署,还要很熟悉里面的配置才行,因为公司最关键的绝对是Web服务器,所以nginx和apache要特别熟悉,有些公司还会用tomcat,这个也需要会。

bash脚本编程

shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本!这是最最最基本了,别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义

sed和awk是脚本编程过程当中的重中之重, 必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤Web内容时十分有用,不过在学shell的同时一般会经常结合用到的。

文本处理命令

各种小命令,比如sort , tr , cut, paste, uniq, tee等是必学的

数据库

MySQL,linux用得最多绝对是MySQL,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。

防火墙

不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而FILTER表用得最多,反正不学就肯定不合格。

监控工具

十分重要,zibbix、prometheus暂时可以2选1,但是企业用得最多是zibbix,因为prometheus是新一代监控,具体什么时候成熟应用还是不那么确定的,现在确定的是它在容器监控中绝对是重中之重。

集群和热备

很重要,必须要懂,集群工具很多,LVS、nginx等等,还有热备,这个就更多工具能实现了,比如keepalived、rhcs等等

数据备份

工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump, rsync等

自动化运维工具

ansible,puppet,saltstack等等都是非常流行的自动化运维工具,但是比较难掌握

云平台

Openstack,cloudstack等等,尤其是openstack是现在绝大部分公司采用的公有云或者私有云底层平台,在一个满世界都是云的it时代,不懂点云的东西还真是不行

容器平台

继云之后的又一新兴技术,现在火的一塌糊涂,docker,kubernetes等等,几乎可以说是现在想拿高薪,必学的东西

有些消息类型会带有一个头部数据结构,如下所示。信息中带有时间辍数据,可以通过这个数据进行时间同步

std_msgs/Header header

uint32 seq

time stamp

string frame_id

登录后复制

以下是一种同步的方式:Time Synchronizer

The TimeSynchronizer filter synchronizes incoming channels by the timestamps contained in their headers, and outputs them in the form of a single callback that takes the same number of channels. The C++ implementation can synchronize up to 9 channels.

#include <message_filters/subscriber.h>

#include <message_filters/time_synchronizer.h>

#include <sensor_msgs/Image.h>

#include <sensor_msgs/CameraInfo.h>

using namespace sensor_msgs

using namespace message_filters

void callback(const ImageConstPtr&image, const CameraInfoConstPtr&cam_info)

{

// Solve all of perception here...

}

int main(int argc, char** argv)

{

ros::init(argc, argv, "vision_node")

ros::NodeHandle nh

message_filters::Subscriber<Image>image_sub(nh, "image", 1)

message_filters::Subscriber<CameraInfo>info_sub(nh, "camera_info", 1)

TimeSynchronizer<Image, CameraInfo>sync(image_sub, info_sub, 10)

sync.registerCallback(boost::bind(&callback, _1, _2))

ros::spin()

return 0

}

另外一种是基于策略的同步方式,也是通过消息头部数据的时间辍进行同步。

Policy-Based Synchronizer [ROS 1.1+]:

The Synchronizer filter synchronizes incoming channels by the timestamps contained in their headers, and outputs them in the form of a single callback that takes the same number of channels. The C++ implementation can synchronize up to 9 channels.

The Synchronizer filter is templated on a policy that determines how to synchronize the channels. There are currently two policies: ExactTime and ApproximateTime.

当需要同步的所有消息都带有时间辍的头部数据:ExactTime

The message_filters::sync_policies::ExactTime policy requires messages to have exactly the same timestamp in order to match. Your callback is only called if a message has been received on all specified channels with the same exact timestamp. The timestamp is read from the header field of all messages (which is required for this policy).

#include <message_filters/subscriber.h>

#include <message_filters/synchronizer.h>

#include <message_filters/sync_policies/exact_time.h>

#include <sensor_msgs/Image.h>

#include <sensor_msgs/CameraInfo.h>

using namespace sensor_msgs

using namespace message_filters

void callback(const ImageConstPtr&image, const CameraInfoConstPtr&cam_info)

{

// Solve all of perception here...

}

int main(int argc, char** argv)

{

ros::init(argc, argv, "vision_node")

ros::NodeHandle nh

message_filters::Subscriber<Image>image_sub(nh, "image", 1)

message_filters::Subscriber<CameraInfo>info_sub(nh, "camera_info", 1)

typedef sync_policies::ExactTime<Image, CameraInfo>MySyncPolicy

// ExactTime takes a queue size as its constructor argument, hence MySyncPolicy(10)

Synchronizer<MySyncPolicy>sync(MySyncPolicy(10), image_sub, info_sub)

sync.registerCallback(boost::bind(&callback, _1, _2))

ros::spin()

return 0

}

登录后复制

由于该同步策略是当所有需同步的话题的时间辍严格相等时,才会触发回调函数。这就会导致以下一些问题:

回调函数的触发频率必然小于等于这些话题中最小的发布频率;

回调函数的触发并不十分稳定,有时候甚至会出现长时间不被触发的情况。如下图所示,某一次的间隔甚至长达10s左右。

ROS提供了另外一种方法来实现数据的同步:ApproximateTime。与需要时间辍完全相同的ExactTime不同,该方法允许话题之间的时间辍存在一定的偏差。

The message_filters::sync_policies::ApproximateTime policy uses an adaptive algorithm to match messages based on their timestamp.

#include <message_filters/subscriber.h>

#include <message_filters/synchronizer.h>

#include <message_filters/sync_policies/approximate_time.h>

#include <sensor_msgs/Image.h>

using namespace sensor_msgs

using namespace message_filters

void callback(const ImageConstPtr&image1, const ImageConstPtr&image2)

{

// Solve all of perception here...

}

int main(int argc, char** argv)

{

ros::init(argc, argv, "vision_node")

ros::NodeHandle nh

message_filters::Subscriber<Image>image1_sub(nh, "image1", 1)

message_filters::Subscriber<Image>image2_sub(nh, "image2", 1)

typedef sync_policies::ApproximateTime<Image, Image>MySyncPolicy

// ApproximateTime takes a queue size as its constructor argument, hence MySyncPolicy(10)

Synchronizer<MySyncPolicy>sync(MySyncPolicy(10), image1_sub, image2_sub)

sync.registerCallback(boost::bind(&callback, _1, _2))

ros::spin()

return 0

}

登录后复制

从下图可以看出,虽然该方法允许时间之间存在偏差,但实际上偏差并不大。而且比起上一种方法,这个方法的回调函数的触发频率快多了。

关于ApproximateTime,我还有一个不解的地方,这里做一下记录:

If not all messages have a header field from which the timestamp could be determined, see below for a workaround.

If some messages are of a type that doesn’t contain the header field, ApproximateTimeSynchronizer refuses by default adding such messages.

以上这两句话,似乎自相矛盾。不知道是不是我理解的问题。。。从时间同步的角度看,话题消息内容中应该必须要带上时间辍信息才能进行同步,但第一句话却说可以允许一些消息不带时间辍?

[补充于2021.2.11: 今天在使用ApproximateTime时同步了一个自定义的消息类型,发生了如下图所示的错误。后来查阅资料才发现是没有加header的原因,即没有时间辍,程序就无法根据时间进行同步。换句话说,该方法也是必须需要时间辍信息的。加上header后错误就没有了。]

另外需要注意的是,使用message_filters时,需要在CMakeLists.txt和package.xml中添加相关依赖:

# CMakeLists.txt

find_package( catkin REQUIRED COMPONENTS

...

message_filters

)

# package.xml

find_package( catkin REQUIRED COMPONENTS

<build_depend>message_filters</build_depend>

<build_export_depend>message_filters</build_export_depend>

<exec_depend>message_filters</exec_depend>

)

登录后复制

c++

衡阳市民请关注领取补贴!

巨摩互动

广告

ROS之订阅多个话题并对其进行同步处理(多传感器融合)

2.0W阅读·11评论·22点赞

2019年7月26日

ROS回顾学习(5): 订阅多个话题并对其进行同步处理

1963阅读·0评论·0点赞

2020年2月4日

ros_多消息同步回调(Synchronizer)

5149阅读·2评论·10点赞

2019年10月17日

【ros】message_filters同步点云和图像数据

1442阅读·9评论·6点赞

2020年4月21日

ROS MessageFilter订阅多个激光雷达话题进行同步处理

2690阅读·1评论·7点赞

2021年1月19日

关于不同传感器时间同步----ROS提供的时间同步函数message_filters【ROS下linux源码,】

1174阅读·2评论·4点赞

2020年7月25日

ROS多Topic接收的时间同步

1052阅读·1评论·2点赞

2020年9月20日

将时间戳不同的点云和图像进行时间戳同步;把bag包里的图像和点云分割成一帧一帧的;把pcd转成bin格式。

1491阅读·9评论·5点赞

2021年4月19日

ROS多传感器数据时间戳同步方案——message_filters::TimeSynchronizer

1539阅读·0评论·1点赞

2022年7月6日

ROS官方教程[翻译]---message_filter的使用

2.4W阅读·3评论·23点赞

2017年8月22日

ROS学习记录(二):订阅多节点时间同步

518阅读·0评论·3点赞

2020年9月18日

ROS自学实践(10):ROS节点同时订阅多个话题并进行消息时间同步

8118阅读·19评论·10点赞

2020年5月23日

ros-多订阅

551阅读·0评论·0点赞

2022年5月12日

ROS知识点——生成点云,发布、订阅ROS点云话题

1795阅读·0评论·2点赞

2022年8月9日

使用Publish/Subscribe 设计模式达到对象间数据同步

1257阅读·0评论·1点赞

2004年4月18日

message_filters学习笔记

805阅读·0评论·0点赞

2021年8月13日

ROS 搞懂多话题回调机制以及消息队列


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7283001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存