Is ROS using velocity motion model or odometry motion model?
Hi, I've been reading Probabilistic Robotics by Thrun et al, and in Chapter 5 Robot Motion, the book describes two different motion models: velocity motion model which assumes that control ut specifies the velocity commands given to robot's motors and odometry motion model, which assumes that one has access to odometry information like (wheel angle change).
I've been using ROS for a while with a differential drive robot which uses DC motors with quadrature encoders. So I have the access to the wheel angle change, but I'm also using this information to deduce the velocity of the wheels, also the commands to the robot are twist commands. So I'm confused which motion model does ROS use?
My best guess is it should be a velocity model, as the control ut is the twist commands we send to the robot, which are velocity commands, and wheel encoder ticks are used to deduce the current robot state xt.
Would appreciate more accurate answers.
Asked by parzival on 2020-08-19 09:16:37 UTC
Answers
Assuming you are talking about the AMCL package (which implements Adaptive Monte Carlo Localization and is the default localization included with the navigation stack in ROS1), it uses the odometry model.
See AMCLOdom::UpdateAction in amcl_odom.cpp which even calls out page 136 of Probabilistic Robotics.
Asked by fergs on 2020-08-22 22:42:05 UTC
Comments
Thanks, super useful! I also found on page 133 that odometry models are used for localization/mapping, while velocity models are used for motion planning(so maybe by DWA?)
Asked by parzival on 2020-08-24 08:40:59 UTC
Comments
What package are you referring to here?
Asked by praskot on 2020-08-20 18:25:53 UTC