测距,IMU和机器人定位包源码

  • 测距,IMU和机器人定位包源码已关闭评论
  • 232 views
  • A+
所属分类:AGV设计资料
摘要

测距,IMU和机器人定位包源码,仅适用于初学者学习参考。

关于包装0.1。包装基本上是为bot使用,即3个传感器值0.1.0.Odometry_data 0.1.1.Imu_data 0.1.2.Visual_Odometry

<1> .EKF机器人姿势如何工作(http://wiki.ros.org/robot_pose_ekf)

1.1.姿势解释 - <根据相对使用而不是绝对的姿势计算>

所有向过滤器节点发送信息的传感器源都可以有自己的世界参考帧,并且这些世界参考帧中的每一个都可以随时间任意漂移。因此,不同传感器发送的绝对姿态不能相互比较。该节点利用每个传感器的相对姿态差来更新扩展卡尔曼滤波器。

1.2.协方差解释 - <姿态和导数(即速度)的协方差的使用>

随着机器人四处移动,其在世界参考系中姿态的不确定性会越来越大。随着时间的推移,协方差会无限增大。因此,在姿势本身上发布协方差是没有用的,相反,传感器源发布协方差如何随时间变化,即速度上的协方差。

1.3.时间 - <插值的使用>

假设机器人姿势过滤器最后一次更新是在时间t_0。该节点将不会更新机器人姿态滤波器,直到每个传感器的至少一个测量值到达,时间戳晚于t_0。例如,当收到时间戳为t_1>t_0的Odom主题和时间戳为t_2>t_1>t_0的IMU_数据主题的消息时,过滤器将更新到有关所有传感器的信息可用的最新时间,在这种情况下更新到时间t_1。直接给出T_1的ODOM姿态,通过T_0和T_2之间IMU姿态的线性插值得到T_1的IMU姿态。机器人姿态滤波器将更新为T_0和T_1之间的ODOM和IMU的相对姿态。

<2>节点

2.1.robot_pose_ekf

robot_pose_ekf实现了用于确定机器人姿势的扩展卡尔曼滤波器。

2.2.附加主题

2.2.1.odom(nav_msgs / Odometry)2D姿势(由车轮测距法使用):2D姿势包含机器人在地平面中的位置和方向以及该姿势的协方差。发送此2D姿势的消息实际上代表3D姿势,但是简单地忽略z,roll和pitch。2.2.2.imu_data(sensor_msgs / Imu)3D方向(由IMU使用):3D方向提供有关机器人基础框架相对于世界参考框架的Roll,Pitch和Yaw角度的信息。Roll和Pitch角度被解释为绝对角度(因为IMU传感器具有重力参考),并且偏航角度被解释为相对角度。协方差矩阵指定方向测量的不确定性。当机器人姿势ekf仅收到关于该主题的消息时,它将不会启动;

2.3.传感器数量的灵活性及其数据发送的灵活性

robot_pose_ekf节点不需要所有三个传感器源始终可用。每个源都给出姿势估计和协方差。来源以不同的速率和不同的延迟运行。源可以随着时间的推移而出现和消失,节点将自动检测并使用可用的传感器。

<3>.来自robot_pose_ekf的移植

(http://wiki.ros.org/robot_localization/Tutorials/Migration%20from%20robot_pose_ekf)

3.1.源消息中的变量

对于robot_pose_ekf,让过滤器忽略测量的常用方法是给出它是一个大规模膨胀的协方差,通常在10 ^ 3的数量级。但是,robot_localization允许用户指定测量中的哪些变量应与当前状态融合。

3.2微分参数<微分积分>

默认情况下,机器人姿态ekf将在时间t进行测量,确定它与时间t-1的测量值之间的差异,将该差异转换为当前帧,然后将该测量值集成。在两个传感器测量相同姿态变量的情况下,这很聪明地有助于:随着时间的推移,每个传感器报告的值将开始发散,最终导致滤波器在测量值之间来回跳跃。通过进行微分积分,可以避免这种情况,并且测量结果始终与当前状态一致。

3.3对于机器人定位

首选的方法是向其提供速度信息,并让过滤器使用其运动模型整合值。如果这是不切实际的(例如,对于您无法控制的其他包的测量),那么用户可以使用xxx_差分设置。通过将给定变量的值设置为“真”(默认值为“假”),robot定位以与robot pose ekf相同的方式集成该传感器的姿态数据。希望集成GPS数据的用户应注意:对于来自的数据,将差分参数设置为“真”,例如,navsat变换节点将导致失去了测量的“全局”性质。换句话说,每次测量都不会完全融合,因此仍会偏离真正的GPS轨道。希望融合GPS数据的用户应确保其差分参数设置为假。

1.协调框架1.1。=> GPS世界帧是固定的,假设移动平台相对于地图帧不会随着时间的推移而显着漂移。地图是非连续的,这意味着GPS的读数会有离散跳跃,但不适合转换为局部帧即作为离散跳跃的帧使其成为局部感测和动作的不良参考。但是地图框架对于长期全球参考非常有用。1.2。=> IMU,Odometry,Visual Odometry Odometry框架是连续的但是在整合期间出现的小误差在整个时间内累积并且在长期内变得非常不稳定.Odom框架可能随时间漂移。并且引导该帧的功能是连续且平滑的并且对于局部帧参考是有用的,因为其读数是近似准确的但是漂移使其成为长期参考的不良参考。1.3。 =>机器人自己的平台,如传感器安装刚性连接到移动机器人基座.base_link可以任意位置或方向连接到基座,就像每个硬件平台一样,会有不同的地方在提供adn参考点的基础上。2.框架之间的关系2.1。map - > odom - > base_link对于frame,frame是parent,类似于 frame frame是父。base_link可以任意位置或方向连接到基座,就像每个硬件平台一样,底座上将有一个不同的位置,提供adn参考点。2.框架之间的关系2.1。map - > odom - > base_link对于frame,frame是parent,类似于 frame frame是父。base_link可以任意位置或方向连接到基座,就像每个硬件平台一样,底座上将有一个不同的位置,提供adn参考点。2.框架之间的关系2.1。map - > odom - > base_link对于frame,frame是parent,类似于 frame frame是父。

1.建议方式1.1。仅使用连续数据(IMU,Odometry,Visual Odometry)并将world_frame设置为odometry框架,并在此框架中执行本地路径计划和运动。1.2。然后在此使用所有可用的源,包括GPS,然后将world_frame设置为map_frame并全局执行运动。2.Required Inputs 2.1。 =>它包含原始GPS坐标2.2。 =>带有绝对航向2.3的消息。 =>包含机器人当前位置估计的消息由其起始位置指定的框架()3.REP 103 Link :: http://www.ros.org/reps/rep-0103.html 3.1。它为ROS 3.2中使用的单位和坐标约定提供了参考。所有坐标框架都应遵循此惯例。4.需要在中进行更改,例如,需要设置参数,如滚动俯仰和偏航偏移值以及主题和5.odomN参数需要更改为特定输入值,例如值给出的那样设置那些参数为真。对于高度(z)为零的2D定位,需要进行2次设置,5.1。将navsat_transform_node的zero_altitude参数设置为true,然后将odomN_config的第三个值设置为true。5.2。将two_d_mode设置为true。

抱歉,此资源仅限赞助会员下载,请先
注意:本站资源多为网络收集,如涉及版权问题请及时与站长联系QQ:2766242327,我们会在第一时间内与您协商解决。如非特殊说明,本站所有资源解压密码均为:agvba.com。
weinxin
微信公众号
agvba是一个分享AGV知识和agv案例视频的网站。