RadioLink T8S 遥控信号使用R8EF接受器解析sbus协议转发rostopic

附图:

首先R8EF和T8S需要对码操作 B站有视频

完成后可选择 通信协议 有三种 S.BUS , PPM ,PWM

我选择的是 S.BUS

我只需要拿到 前后左右的数据,做成 geometry_msgs/Twist Message类型的数据就可以了

于是我将R8EF接收器接个DB9的串口转usb

然后用个串口工具就可以看到完整的数据了,但是想象很美好,之前在看SBUS协议的时候,就老是听到一个操作“硬件取反”好像是需要接一个三极管电路,这玩意我不太懂

果然用串口工具解析的都是乱码数据!!!

还是得用钞能力,买了一个转好的模块,插上即用非常方便

SBUS调试助手 sbus解析,sbus协议_sbus转串口_沨_的博客-CSDN博客

附带调试工具!!!(工具要在window里边使用)

我买的是转115200波特率的那款,非常的好用,直接就解析出来了

根据实际情况设置参数,我的是直接转成115200了,无校验,1停止位

如果连接一切正常的话就可以,读到数据了

然后我根据遥杆上下,左右 试出来

CH1 是控制左右数据的,CH3 是控制前后数据的

于是我只需要解析这两个通道的数据,根据数据的范围,确定一个线速度和角速度

让他们能响应起来就可以了

因为我是要用到ros上的,所以需要在linux系统下,解析串口数据

ros解析串口可以参考博客:

ROS系统的串口数据读取和解析_ros serial.read_afeik的博客-CSDN博客原帖地址:https://blog.csdn.net/Tansir94/article/details/81357612一、Ubuntu下的串口助手cutecom下载:sudo apt-get install cutecom打开:sudo cutecom查看电脑链接的串口信息(名称):dmesg | grep ttyS*二、使用ROS提供的serial包实现串口通信..._ros serial.readhttps://blog.csdn.net/afeik/article/details/91997758?ops_request_misc=&request_id=&biz_id=102&utm_term=ros%E8%A7%A3%E6%9E%90%E4%B8%B2%E5%8F%A3%E5%8D%8F%E8%AE%AE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-91997758.nonecase&spm=1018.2226.3001.4187按照这个来稿基本上就可以解析到串口数据了,但是需要解析的是 sbus 协议数据格式

所以还需要参考一下sbus数据解析,可以参考guithub源码

https://github.com/bolderflight/sbusicon-default.png?t=N7T8https://github.com/bolderflight/sbus看完就知道这个东西是回事了,不过这只是参考!还是得自己写一下

写出来的东西我也放到github上了

https://github.com/ORBslam2-3/serialPort_wsicon-default.png?t=N7T8https://github.com/ORBslam2-3/serialPort_ws就是解析了一下 通道数据 并自定义成了gemotry/Twist Message 类型

将发布出去的话题,改成/turtle1/cmd_vel 名字就可以用小乌龟做实验了

附带一个subs协议资料:

SBUS协议:使用的是串口的通讯,直接可以用串口发出,但有几点仍需要注意:
1.串口配置:100k波特率,8位数据位(在stm32中要选择9位),偶校验 (EVEN),2位停止位,无控流,25个字节。

2.协议格式:(每字节8位)
[startbyte] [data1][data2]…[data22][flags][endbyte];
startbyte=0x0f;
endbyte=0x00;

flags标志位是用来检测控制器与px4是否断开的标志位:
flags=1:控制器与接收器保持连接;
flags=0:控制器与接收器断开(失控),px4会控制电机停转。

data1…data22:对应16个通道(ch1-ch16),每个通道11bit(22X8=16X11=176)
数据范围在282~1722之间,中值为1002;

ch1的11位=data2的低3位+data1的8位;
例如:data1=00110110,data2=11001111;
这时ch1=111 00110110=1846;通道1 的值就为1846;
ch2=data3的低6位+data2的高5位;
ch3=data5的低1位+data4的8位+data3的高2位;
ch4=4 7;
ch5=7 4;
ch6=2 8 1;
ch7=5 6;    
ch8=8 3;
ch9=1 8;
ch10=4 7;
ch11=7 4;
ch12=2 8 1;
ch13=5 6;
ch14=8 3;
ch15=3 8;
ch16=8 5;

3.用stm32中给px4发时,需要取反,并且是硬件取反,软件取反是无效的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值