ros
若愚和小巧
懂深度学习、SLAM的软件工程师
展开
-
ros源码分析(四)service的实时反馈机制
服务(service)向来不是一个陌生的词汇,它在我们的领域一般成对存在,分为客户端和服务器,客户端提出请求,服务器处理并给予回应。在ros节点间的通信过程中,如果需要获取对面进程的一些信息,利用话题通信需要两次来回通讯来确认该次请求与回复(有点像TCP/IP的握手),而调用ros service则只需要一次通信,因此它也广泛使用在机器人等ros软件不同层级的指令调用中。那么,与话题通信的分析...原创 2020-03-01 18:13:17 · 3166 阅读 · 3 评论 -
ros源码分析(三)ros::spin( )背后发生的事
接收器subscriber的demo大家也耳熟能详,它和发布器一样,在nodehandle中调用subscribe函数,实现话题名与回调函数的注册,而在进程的main函数中,又在调用ros::spin函数,那么就从这两个部分依次分析接收器的原理。一、subscribe的声明在node_handle.cpp中,subscribe函数的声明如下,template<class M,...原创 2020-02-23 16:51:03 · 4562 阅读 · 1 评论 -
ros源码分析(二)topic调用了publish之后发生了什么?
隔了很久才写第二篇实在是抱歉。继续从ros wiki的角度下手,最开始接触的publisher和subscriber的demo十分经典,而进程间通信这一过程本身就是它的最大卖点,发布器、接收器这样的名词以及advertise、publish这样简单易懂的API更是焕然一新,回过头来研究它的实现方式,是从了解、掌握到熟悉ros的必要过程。publisher的实现,在demo中的实现为如下,那么N...原创 2020-01-20 19:18:25 · 3042 阅读 · 1 评论 -
ros源码分析(一)从ros::init开始
在初次接触ros时,roswiki告诉我们ros是一种通信中间件,能够通过近乎完美的封装,实现进程之间的通信,使得数据传输省略了冗长的socket编写。而之后的学习与应用中,我们主要是基于这一既定事实进行愉快的代码编写与GUI的使用,对它本身的实现机制并不需要了解,接触ros若干年的时间里,也没有考虑过打开它的头文件去阅读这一切,直到今年出现了ros话题与服务阻塞的巨大问题。有一说一,计算机在...原创 2019-11-29 01:02:31 · 4318 阅读 · 2 评论 -
ROS subscribe回调函数的多参数使用
ROS 的subscribe函数,它在api中的原型为template<class M , class T >Subscriber ros::NodeHandle::subscribe(const std::string & topic, uint32_t ...原创 2018-09-25 10:08:14 · 17509 阅读 · 0 评论 -
怎么利用InteractiveMarkers在rviz上画“曲线”
rviz是大家熟练玩转的界面,它是基于QT开发的一款比较成熟的平台,并留有一些接口给用户进行自定义功能的插入,例如基础的文本框输入、图形界面操作的cmd_vel速度下发插件(rviz plugin tutorials),但做一件可增删改查的曲线绘制工具目前在教程中还没有普及。首先要能轻松改变曲线端点位置,若是自己开发QT界面可以开心地使用QDrag制作拖拽图标作为曲线的可拖拽端点,但rviz仅...原创 2018-10-16 22:27:14 · 2229 阅读 · 2 评论 -
妄图用多线程控制ROS的消息回调函数的输出-_-!
今天需要用一个标志位来决定回调函数是否执行,那这边先写一个chatter的publish,10Hz外发;这边准备额外多一个线程控制唤醒回调函数。首先在接收节点程序中,写一个互斥锁和条件变量:std::mutex mut;std::condition_variable data_cond;线程函数:void data_processing_thread(){ int i=0;...原创 2018-10-16 23:01:20 · 1576 阅读 · 0 评论