完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我们在之前的教程中已经创建了一个ROS发布者,在这里我们将创建一个订阅者,在Arduino每次收到消息的时候闪烁LED。通过在Arduino examples菜单选择ros_lib->Blink,你会打开下面的代码: 现在,我们来分析下面的代码。 如之前一样,我们需要在任何ROS Arduino程序里包含ros.h。我们也需要为消息包含头文件,在这个例子下,为Empty消息。 接着,我们需要实例化一个节点句柄,允许我们的程序创建发布者和订阅者。节点句柄需要串口通信。 然后,我们为订阅者创建回掉函数。这个回掉函数必须将一个消息的常量引用作为它的参数。在我们的回掉函数中,消息类型是std_msgs::Empty,消息名是toggle_msg。在我们的回掉函数内部,我们可以引用toggle_msg,但是因为它是空的,所以不需要这么做。我们只是在Arduino每次收到消息的时候闪烁LED。 我们需要实例化我们要使用的发布者和订阅者。这里我们实例化名为“toggle_led”的主题的订阅者,消息类型为std_msgs::Empty。你必须知道基于消息的订阅者模板。它的两个参数是它要订阅的主题和它要使用的回掉函数。 在Arduino setup函数,你需要初始化你的ROS节点句柄,广播将要发布的主题,订阅想监听的主题。
最后,在loop函数里,我们调用ros::spinOnce()函数,处理所有的ROS通信回掉函数。在loop()函数里,我们不需要其他额外的处理,因为,ros::spinOnce()会将传递的消息传到订阅者回掉函数。
分析完代码,下面需要编译上传。接着,在新的终端窗口,启动roscore: 然后,运行rosserial客户端应用程序, 其中为你安装rosserial的工作空间,确保使用正确的串口: 最后,你可以使用rostopic转换你的LEd状态。
原作者:liuyu-419812
发布
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
1070 浏览 0 评论
rk3588 canfd发送部分数据失败的问题
1248 浏览 1 评论
给安卓11系统的RK3566主板搭建一体机
981 浏览 1 评论
RK3588 OV sensor出现条纹问题
2263 浏览 1 评论
RK3588的ISP流程问题
3586 浏览 1 评论
电子发烧友网
电子发烧友论坛
查看 »
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 06:40 , Processed in 0.441064 second(s), Total 33, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com