The Forklift Odometry Project develops a ROS package to estimate the odometry of a Jungheinrich ETV216 forklift using CAN bus data and the robotβs kinematic model to publish accurate pose and velocity information.
-
cititruck_description
launch/
: RViz config filesmesh/
: 3D models of the forklift (.dae format)urdf/
: Xacro files for the forklift description
-
launch/
: All ROS launch files -
rviz_configs/
: RViz configurations -
scripts/
:Forklift_Kinematics_Odometry.py
: Final ROS nodeForklift_Kinematics_Odometry_1.py
: Development trials
-
CMakeLists.txt
-
package.xml
The ForkliftOdometry
ROS node:
- Subscribes to CAN frames for wheel travel and steering angles
- Calculates linear and angular velocities
- Updates the forkliftβs pose and orientation using kinematic equations
- Publishes odometry and path info as ROS messages
- Broadcasts transform between
odom
andbase_link
- π‘ CAN-based data input
- π Real-time odometry calculation
- π§ Path generation using PoseStamped messages
- π Transform broadcasting with TF
- βοΈ Configurable parameters (e.g. wheelbase, frame ID)
- Initialization: Publishers/subscribers setup
- Frame Handling: Parses CAN data and triggers calculations
- Odometry & Path Publishing: Uses kinematics for motion estimation
- TF Broadcasting: Keeps coordinate frames aligned
- Main Execution: Runs the node at a defined frequency