iRobot作为turtlebot的基座之一,并没有内置的陀螺仪,只是依靠轮子上的编码器提供角度信息。由此造成运动一段时间后,角度信息出现偏差,进一步导致iRobot在/odom中的位置坐标与实际位置出现差异。针对这一问题,可以通过外部接入陀螺仪进行校准。
硬件设备:iRobot create2, GY-85芯片, Firefly-RK3288嵌入式开发板
开发板与GY-85芯片通过i2c接口通讯,从芯片中读取陀螺仪数据后,将数据以sensor_msgs/Imu的格式发送到主题/imu_data上。主题/imu_data上的数据与来自主题/odom上的数据都将被节点/robot_pose_ekf订阅,节点/robot_pose_ekf对两方数据进行融合处理。处理后的角度及坐标数据将以geometry_msgs/PoseWithCovarianceStamped的格式发送到主题/robot_pose_ekf/odom_combined上,并将odom→base_footprint的tf变换发送到/tf上(wiki上说是odom_combined→base_footprint,但实际应该是odom→base_footprint,待定)。
遇到的问题:
(1):最初几次读取时,陀螺仪数据误差很大