自动驾驶系列(十)编写电动车ROS节点(刹车)

本文详细介绍了使用ROS(Robot Operating System)与特定硬件交互的过程,包括CAN控制转向、串口控制油门和刹车的协议设计,以及如何在ROS节点中实现这些功能的代码示例。通过实际操作步骤,展示了如何编写节点监听速度指令并转化为控制信号发送到硬件设备上。

一、硬件控制协议

       对于不同的设备,底层的通讯方式都不一致,因此需要根据具体硬件具体分析。本系统 采用了1个CAN盒子控制转向,1路DA控制油门,另外一路DA控制刹车。

1,转向协议

      CAN协议获取当前状态的帧ID是0x322,发送控制指令的ID是0x215。500kbps。

     一条十六进制控制码是 00 31 X1 X2 Y1 00 00 00。

     其中X1*256+X2=控制角度 Y1控制角速度。

2,油门协议

      串口转DA控制模块,设置波特率9600bps。

      一条十六进制控制码是 01 06 00 00 X1 X2 Y1 Y2。

     其中,X1*256+X2控制DA输出电压。空载测试大约 5km/h对应 01 99,10km/h对应 03 33。

     Y1和Y2分别是对前八位数据进行CRC校验后的输出结果。

3,刹车协议

     串口转DA控制模块,设置波特率9600bps。

     启动刹车:01 06 00 00 0c cd 4d 5f。

     取消刹车:01 06 00 00 00 00 89 ca。

二、ROS节点接收速度控制消息

     对于ROS节点的编写规则,可以参考本系列第二讲中推荐的ros基本教程。

    首先创建功能包,实现监听cmd_vel消息,命名为bjtucar:

cd ~/catkin_ws/src
catkin_create_pkg bjtucar std_msgs std_msgs roscpp

 创建节点订阅文件myCar.cpp

cd ~/catkin_ws/src/bjtucar/src/
gedit myCar.cpp

在文件中粘贴以下内容:

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
void cmd_vel_callback(const geometry_msgs::Twist& vel_cmd)
{
    ROS_INFO("I heard: [%f]", vel_cmd.linear.y);
     ROS_INFO("I heard: [%f]", vel_cmd.linear.x);
    std::cout <
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值