扫地小车(3)
硬件开发
基于ROS系统 ,串口读取数据并处理,最后以ROS消息形式发布。同时记录个人经历和成长。
- 3. 编码器读取里程计;
- 4. USB相机 ;
编码器读取里程计
串口读取编码器脉冲
size_t n = ros_ser.read (buffer,78) ;//根据不同数据包定义,会有不同情况,笔者数据处理较简单,具体情况可参照串口解析程序
memcpy(&left_enc,&buffer[25],4);
memcpy(&right_enc,&buffer[29],4);
通过脉冲数来计算实时Odometry信息并发布
double dt = (current_time - last_time).toSec();
ROS_INFO("serial dt: %d ", dt);
//right_enc是现在编码数据,enc_right是之前编码数据,dright、dleft为所取脉冲计数的轮子移动实际距离
dright = (right_enc - enc_right)*pi*wheel_diameter/Pulse_ratio;
dleft = (left_enc - enc_left)*pi*wheel_diameter/Pulse_ratio;
enc_right = right_enc;//现在脉冲值赋给之前,