利用rosserial_windows实现Windows和ROS的通信

最近由于项目需要,需要让ROS和windos进行数据的交互,在CSDN查找到了rosserial这个功能包,参考了各位大佬的博客,一步一步来之后发现仍然通信不了,经过长时间的排雷终于实现了这个功能,具体配置参考:

https://blog.csdn.net/weixin_45589062/article/details/115024232

以及其他各位大佬的博客,这里仅发布我遇到的坑。

1、网络配置,我使用的是LINUX虚拟机,一定要讲虚拟机网络配置好,保证虚拟机与Windos能够互ping,非常推荐各位看这个博主的:

​​​​​https://blog.csdn.net/weixin_39148042/article/details/81208274?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2.pc_relevant_default&utm_relevant_index=42、将网络配置完成后,就可以尝试通信了。不知道有没有小伙伴和我一样,按照教程一步一步配置完成过后,发现rosserial通信不了。记住!!记住!!记住!!一定要在LINUX中把防火墙关闭或者将11411端口打开,不然无法通信!! ​​​​​​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1. 安装rosserial库 在ros工作空间中运行以下命令: ``` $ sudo apt-get install ros-kinetic-rosserial-arduino $ sudo apt-get install ros-kinetic-rosserial ``` 2. 配置Arduino开发环境 将Arduino连接到计算机上,并在Arduino IDE中选择正确的板子和端口。然后,在“示例”菜单中选择“Firmata”,并上传到Arduino板子上。 3. 配置ROS节点 创建一个ROS节点来与Arduino通信。在ros工作空间中创建一个新的包,并在包中创建一个新的节点。 ``` $ cd ~/catkin_ws/src $ catkin_create_pkg my_robot roscpp rospy std_msgs $ cd my_robot $ mkdir include $ cd include $ touch my_robot_node.h $ cd .. $ touch CMakeLists.txt ``` 在my_robot_node.h文件中,添加以下内容: ```c++ #include <ros.h> #include <std_msgs/Int16.h> ros::NodeHandle nh; void messageCb(const std_msgs::Int16& msg) { // 处理接收到的消息 } ros::Subscriber<std_msgs::Int16> sub("my_topic", messageCb); void setup() { nh.initNode(); nh.subscribe(sub); } void loop() { nh.spinOnce(); } ``` 在CMakeLists.txt文件中,添加以下内容: ``` cmake_minimum_required(VERSION 2.8.3) project(my_robot) find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs ) catkin_package() include_directories( ${catkin_INCLUDE_DIRS} ) add_executable(my_robot_node src/my_robot_node.cpp) target_link_libraries(my_robot_node ${catkin_LIBRARIES} ) install(TARGETS my_robot_node RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) ``` 4. 配置Arduino代码 在Arduino IDE中打开Firmata代码,并添加以下内容: ```c++ #include <ros.h> #include <std_msgs/Int16.h> ros::NodeHandle nh; std_msgs::Int16 msg; ros::Publisher pub("my_topic", &msg); void setup() { nh.initNode(); nh.advertise(pub); } void loop() { msg.data = // 获取需要发送的数据 pub.publish(&msg); nh.spinOnce(); } ``` 5. 编译和上传代码 打开一个新的终端窗口,在ros工作空间中编译代码。 ``` $ cd ~/catkin_ws $ catkin_make ``` 然后,在Arduino IDE中上传代码到Arduino板子上。 6. 运行节点 在一个新的终端窗口中,运行ROS节点。 ``` $ rosrun my_robot my_robot_node ``` 现在,ROS节点和Arduino板子之间已经建立了串口通信。可以发送和接收数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值