Objectives

This homework will demonstrate your understanding of odometry on differential drive robots. You will create your own package, node, and launch file to interact with a package provided in the class repo. A ROS bagfile has been provided that contains the distances two wheels on a differential drive robot have traveled at each time step. Note that this is the incremental update to the distance traveled by the wheels, not the wheel ticks. Another node has been provided that takes in world x, y, theta points and graphs them. You need to fill in the gap. Assume that the baseline between wheels 2L=0.1m (so L=0.05m) and wheel distances are given in meters.

  1. Create a new ROS package in your repo for this assignment.
  2. Create a node in this package that
    1. Subscribes to the output topic of the node described below: dist_wheel. This topic gives you the distance each wheel travels in that time step.
    2. Publishes the pose of the robot after this time step to the topic pose.
  3. Create a launch file that starts your code and the launch file provided in the odometry_hw package.

Given ROS Package

A ROS package, odometry_hw, has been provided for you in the class template repo in the EECE5560 folder. You should not need to modify this package. The package contains:

    1. wheel_tick_pub.py: A node to output distance for each wheel on “dist_wheel” topic
      NOTE: this node will wait until the ROS parameter “odom_ready” is set to the string “ready”. Your code needs to set this param when it is ready to receive odom data.
    2. odom_graph.py: A node for receiving the output of this assignment and graphing it on the screen. It subscribes to the “pose” topic. The output from your node should publish to this topic.
    3. odom_hw.launch: A launch file that starts the above nodes.
    4. Two message types:
      1. DistWheel.msg: the output type from the rosbag and input to your node
      2. Pose2D.msg the output type from your node and input to odom_graph.py

Submission Instructions

Turn in to Qualtrics:

  1. The URL for your git repo
  2. The git tag for this submission
  3. The name of the package you created
  4. The roslaunch command that starts your solution
  5. The graph generated by your code (screenshot is ok)

Rubric

10 points: Submission details (tag, instructions, etc)
5 points: Single launch file to start everything
10 points: Node connected to correct topics
10 points: Correct math/algorithm for odometry
5 points: Correct output graph