ROS学习笔记:关于ROS与rduino之间数据传输的一点心得

        刚接触ROS操作系统的时间并不多,对ROS里的了解也十分有限。ROS下的编程我主要是用C++来写。(但感觉很虚,因为自己只是了解的下C++,之前的代码都是用C写的。现在正在抓紧时间学习C++)。

      下面是我的一些收获:

        $ rostopic echo /turtle1/cmd_vel//查看相应的主题参数   主题改为自己需要的即可

        $ rostopic type /turtle1/cmd_vel //主题数据类型查看   可找到对于的头文件<geometry_msgs/Twist.h>
          eg:geometry_msgs/Twist
        $ rosmsg show geometry_msgs/Twist //消息内容查看  可找到对于的头文件 <geometry_msgs/Vector3.h>
          eg:
               geometry_msgs/Vector3 linear
               float64 x
               float64 y
               float64 z
               geometry_msgs/Vector3 angular
               float64 x
               float64 y
               float64 z

例子:
#include<ros.h>
#include<geometry_msgs/Vector3.h>
#include<geometry_msgs/Twist.h>
ros::NodeHandle nh;
geometry_msgs::Twist canshu;//定义变量,采集对应参数;
void cmd_velCB(const geometry_msgs::Twist&  car_move)//回调函数  car_move为有效参数的类。
{
  canshu.linear.x= car_move.linear.x;//采集此刻数据
  canshu.angular.x=car_move.angular.x;
  digitalWrite(13, HIGH-digitalRead(13));   // blink the led
  if(canshu.linear.x == 2)   {
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
  }
  else if  (canshu.linear.x == -2)   
 {
   digitalWrite(8,HIGH);
    digitalWrite(9, HIGH);
 }
  else   digitalWrite(9, LOW);
}
ros::Subscriber<geometry_msgs::Twist> sub("/turtle1/cmd_vel",&cmd_velCB); //订阅所需的相应主题  <类型>+实例化(主题)("主题",&回调函数)
void setup()
{
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(13,OUTPUT);
  nh.initNode();//初始化节点句柄
  nh.subscribe(sub);//订阅主题
}
void loop()
{
  nh.spinOnce();//消息处理循环
  delay(100);
}


 1、运行  roscore

 2、rosrun rosserial_python serial_node.py /dev/ttyACM0

 3、rosrun turtlsim turtlsim_node //打开乌龟窗口
 4、rosrun turtlsim turtle_telop_key//打开控制键盘

5、 rostopic echo /turtle1/cmd_vel//查看相应的主题参数

完成就可以获得参数的变化。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值