ROS使用常用总结

导读:本篇文章讲解 ROS使用常用总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

该篇博客主要汇总我在使用ROS过程中经常用到的一些操作和小技巧,这些操作和技巧能够为我们更好的掌握ROS的使用起到很大的帮助!

1、ROS中catkin_make单独编译指定包方法

在我们开发大型ROS项目时,往往会包含多个ROS包,而大部分时候我们可能只会专注开发其中的一些包甚至其中一个包。而使用catkin_make命令进行编译时默认会编译在工作空间src下的所有ROS包。因此有没有什么方法可以让我们指定编译某个包呢?

之前有看到说可以使用下面的指令:

catkin_make --pkg pkg1

但实际上这种方法仍然编译了所有ROS包,正确的方法应该是:
https://answers.ros.org/question/54178/how-to-build-just-one-package-using-catkin_make/

# "List of ';' separated packages to build"
catkin_make -DCATKIN_WHITELIST_PACKAGES="foo;bar"

这样就可以只编译foo包和bar包。

2、获取某个ros包的路径,可以方便用来载入该包下的某些文件

使用ros::package::getPath指令可以完成此功能:

std::string pkgPath = ros::package::getPath("sensor_driver");//获取sensor_driver包的完整路径
std::string calibdirpath = pkgPath + "/config/extrinsicparameter/" + calibdirname_; 

3、循环获取没有数据时减慢频率打印消息

在ROS中经常会在主程序中进行循环处理,并且会检查是否获取到传感器数据,如果没有数据,需要打印一些提示消息。
那么如何减慢这些打印消息的频率呢:

while(ros::ok())
{
  bool succeed = ecumodule.process();
  if(!succeed)
  {
    cout<<"[ERROR] Cannot get ecu data!!!"<<endl;
    ros::Duration(1).sleep();
    continue;
  }
}

4、终端手动模拟发布ROS消息

发布一次消息,在Ubuntu终端中输入以下命令:
rostopic pub -次数 topic名称 message名称 – 消息值
例如:

rostopic pub -1 turtle1/cmd_vel geometry_msgs/Twist -- '[1,0,0]' '[0,0,1]'

周期性发布消息,在Ubuntu终端中输入以下命令:
rostopic pub -r 频率 topic名称 message名称 – 消息值
例如:

rostopic pub -r 1 turtle1/cmd_vel geometry_msgs/Twist -- '[1,0,0]' '[0,0,1]'

5、根据是否有节点订阅所需话题,决定是否发布对应话题

使用getNumSubscribers()函数

ros::Publisher pubOriginCloud = nh.advertise<sensor_msgs::PointCloud2>("lidar_cloud_origin", 2);
if(pubOriginCloud.getNumSubscribers()>0)
{
  pcl::toROSMsg(lidar.gettotalorigincloud(), cloudmsg);
  LOG(INFO)<<" time:"<<(ros::Time::now() - ros::Time(cloudmsg.header.stamp)).toSec();
  if(fixframe)
    cloudmsg.header.frame_id = "global_init_frame";
  else
     cloudmsg.header.frame_id = "vehicle_frame";
    pubOriginCloud.publish(cloudmsg);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121246.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!