请选择 进入手机版 | 继续访问电脑版
查看: 22767|回复: 0

Nova-09应用参考案例1:(6)底盘

[复制链接]

11

主题

13

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2020-5-25 14:10:36 | 显示全部楼层 |阅读模式
本帖最后由 lixiang 于 2020-5-29 17:48 编辑

运动底盘是低速无人小车的重要组成部分,然而运动底盘不像IMU、摄像头这些通用部件,很难买到通用的底盘。市面上的底盘在尺寸结构和参数上差别很大,可以根据具体需求选取合适的底盘。
除此之外,底盘包含软硬件整套方案,不同底盘的实现方案也有很大差异。所以,本次不着重讨论底盘实现的算法和原理,而侧重于Nova-09和底盘之间的数据交互。
底盘提供里程计与运动控制,是低速无人小车SLAM建图和导航避障的基础。本次使用的底盘主要由电机控制板和带编码器的减速电机构成。电机控制板通过串口与Nova-09相连接,通过接收Nova-09下发的控制指令,利用PID算法对电机进行控制;同时,将单位采样时间内的编码脉冲累计值作为里程数据发送给Nova-09,Nova-09利用航迹推演算法求解出里程计信息。

通信协议
电机控制板与Nova-09之间采用串口通信。电机左、右轮期望转速被封装到串口的字符串中,作为控制命令发送给电机控制板;单位时间内采样到的电机编码脉冲累计值(等效为实际电机速度)作为里程数据,以同样的方式被封装到串口的字符串中发送给Nova-09。可以看出,控制命令与里程数据遵循一样的封装协议,协议具体形式如下:

数据帧由11个字节组成,如上表所示,从左到右依次定义为:
top[0],top[1]:帧头,固定取值ff ff;
enc1_sig:左轮速度符号位,速度为负时取0,否则取非0值;
enc1_val:左轮速度,依次是高、中、低位,三个字节;
enc2_sig:右轮速度符号位,速度为负时取0,否则取非0值;
enc2_val:右轮速度,依次是高、中、低位,三个字节;
checksum:前面所有字节累加求和取低8位;

使用底盘
底盘通过串口与Nova-09相连接,Nova-09中通过运行底盘控制ROS驱动,来实现读取串口的速度反馈,利用航迹推演算法计算得到里程计并发布到/odom这个主题;底盘控制ROS驱动订阅/cmd_vel主题的运动控制数据,并转换为速度控制指令通过串口发送给底盘。这样其它节点就可以通过发布/cmd_vel主题来对底盘进行控制,通过订阅/odom主题获取底盘的里程计。

将novacar这个驱动包拷贝到~/catkin_ws/src/中,编译后就可以使用了。novacar驱动包中含有两个ROS功能包novacar_bringup和novacar_description,驱动底盘、底盘PID整定、里程计标定这些功能包含在novacar_bringup中,底盘urdf模型包含在novacar_description中。底盘控制可配参数都放在novacar_bringup/launch/minimal.launch中。
  1. <launch>
  2.     <node name="novacar_bringup_node" pkg="novacar_bringup" type="base_controller" output="screen">
  3.         <!-- serial_com set-->
  4.         <param name="com_port" value="/dev/novacar"/>
  5.         <!-- motor param set -->
  6.         <param name="speed_ratio"          value="0.000084"/><!-- unit:m/encode -->
  7.         <param name="wheel_distance"       value="0.202"/><!-- unit:m -->
  8.         <param name="encode_sampling_time" value="0.04"/><!-- unit:s -->
  9.         <!-- velocity limit -->
  10.         <param name="cmd_vel_linear_max"   value="1.5"/><!-- unit:m/s -->
  11.         <param name="cmd_vel_angular_max"  value="2.0"/><!-- unit:rad/s -->
  12.         <!-- other -->
  13.         <param name="cmd_vel_topic"                value="cmd_vel"/>
  14.         <param name="odom_pub_topic"               value="odom"/>
  15.         <param name="wheel_left_speed_pub_topic"   value="wheel_left_speed"/>
  16.         <param name="wheel_right_speed_pub_topic"  value="wheel_right_speed"/>
  17.         <param name="odom_frame_id"                value="odom"/>
  18.         <param name="odom_child_frame_id"          value="base_footprint"/>
  19.     </node>
  20. </launch>
复制代码

驱动底盘

  1. roslaunch novacar_bringup minimal.launch
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册 微信登录

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

为你推荐

【Nova-09】开发工具下载页汇总
2020-05-25 / autozhuyuqi
1. 工具: [*]USB驱动:**** 本内容被作者隐藏 **** [*]烧写工具 ...<详情>
直播 02 | 车载智能计算平台行业概况分享暨
2020-06-09 / autozhuyuqi
...<详情>
【课堂05】汽车驾驶自动化分级标准与行业应
2020-05-24 / autozhuyuqi
视频链接:**** 本内容被作者隐藏 **** 课程内容 01 汽车驾驶 ...<详情>
直播 01 | 星空计划 · Novauto 低速智能驾
2020-06-03 / autozhuyuqi
...<详情>
Nova-09上源码安装opencv3.4.1
2020-05-13 / lixiang
1.下载源码 直接下载源码zip包,然后拷贝到Nova-09并解压。点击 ...<详情>
欢迎关注微信公众平台

扫一扫关注我们,了解更多最新动态

快速回复 返回顶部 返回列表