ROS采集无人机遥控器信号数据(含源码)

关注公众号“混沌无形”,右下角点击【作者资源】→选择【混沌小店】,找到【ROS采集无人机遥控器信号数据源码包】获取完整工程源码!或者直接点击链接:🍞正在为您运送作品详情

本文采用Arduino mega2560的6个外部中断来采集Microzone接收机的6个通道的PPM信号,主要是测量PPM信号中高电平的时间(单位是us),并将数据通过rosserial将数据发送给ROS,用于控制小车的运动

经本人开发的ROSMicrozoneBridge软件包,亲测有效,数据准确.

使用步骤

1.获取工程源码

2.为满足与ROS传输数据,需要自己创建消息文件(根据自己的需要创建)

make a file named selfmakemessage and a sub-file named msg

mkdir selfmakemessage/msg

touch Microzone.msg

编辑内容为:int ch1 int ch2 int ch3 int ch4 int ch5 int ch6

catkin_Make

3.下载安装rosserial

sudo apt-get install ros-indigo-rosserial-arduino

sudo apt-get install ros-indigo-rosserial

下载编译 rosserial  GitHub - ros-drivers/rosserial: A ROS client library for small, embedded devices, such as Arduino. See: http://wiki.ros.org/rosserial

主函数代码如下

#include <ros.h>
#include <selfmakemessage/Microzone.h>
#include <std_msgs/String.h>
#include <std_msgs/Empty.h>

#include "signalRead.h"

ros::NodeHandle nh;

selfmakemessage::Microzone  Microzone_msg;
ros::Publisher MicrozonePublish("Microzone", &Microzone_msg);

unsigned int* arr;

//*arr   *(arr+1) ...即为数组的元素
//Serial.print("\t");//输出元素之间有一定的间隔

void setup(){
//  Serial.begin(115200); // Serial for debug
  PWMReadInit();//PWMRead function initial
  
  nh.initNode();
  nh.advertise(MicrozonePublish);
}

void loop() {
  //Serial.println(singlePWMRead(1));
  arr = MixPWMRead();//read pwm signal

  Microzone_msg.ch1 = (*arr);
  Microzone_msg.ch2 = *(arr+1);
  Microzone_msg.ch3 = *(arr+2);
  Microzone_msg.ch4 = *(arr+3);
  Microzone_msg.ch5 = *(arr+4);
  Microzone_msg.ch6 = *(arr+5);

  MicrozonePublish.publish(&Microzone_msg);

  nh.spinOnce();
  //Serial.println(*arr);

//  nh.logdebug(debug);
     nh.loginfo("in loop");
//  nh.logwarn(warn);
//  nh.logerror(error);
//  nh.logfatal(fatal);
}

喜欢的话,请关注《混沌无形》,可阅读更多好文!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值