现象描述
一个和底盘通讯的代码和ros包,总是发现当控制车体运行一段距离,rviz里面scan的数据更新会过一秒才能跟着运动走,同时发现tf的base_link也是过一秒才更新
调试过程
起初,以为是串口堵塞,没有及时的接受和处理底盘上行发布的轮速信息导致,之后写了一个串口缓存程序,但是发现并不是串口堵塞导致,而且odom更新是实时的。
之后发现map到base_footprint的tf的变换是卡顿的,起初跳动一下,之后才跳动成与odom差不多的数值。
此时认为是odom的更新不正确,在odom轮速的累加过程中,把轮速取相反数,发现可以解决这个问题,但是这是不正常的,轮速是正确的。
//计算odom
//vx_ 是未处理前的x方向速度
//vy_ 未处理前的y方向速度
//vth_未处理前的x方向角速度
//th_ 未处理前的imu获取的角度
//上面四个是全局变量,是从底盘的串口获得的
//下面四个是用于odom计算的局部变量
//vx vy vyaw taw 对应上面的全局变量
ros::Time curr_time;
curr_time =
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)