In this assignment, you will modify your code from Homework 3 and connect it in between the mystery_node and unit_listener. This is intended to show you 1) how to work with third-party packages you may want to use in the future and 2) how to use parameters to make your code more flexible. You may choose to modify the same unit conversion code file as you created in Homework 3 or make a new one. Do not modify your publisher from Homework 2, the Mystery Node or Unit Listener! Here are the detailed specifications:

  • Your new/revised conversion node should be able to convert to a third unit: smoots (1.7018 meters or 5.5833 feet, ref: https://www.larsondesigngroup.com/understanding-smoot/)
  • Each time your node receives a measurement to convert, it should check a parameter (name of your choice) to determine which unit it should convert to:
    • Meters (no conversion, output the same message as the input)
    • Feet
    • Smoots
  • You should make a new launch file that starts the following nodes:
    • mystery_node (Note: you probably CANNOT include the mystery_package launch file here)
    • unit_listener
    • Your Homework 2 publisher
    • Your new/revised conversion node
  • Without changing any code in unit_listener, remap the output2 topic in the launch file so that it listens to the output of your new/revised conversion node. See slides for a diagram of this.
    • To be clear: unit_listener should subscribe to output2 still.
    • Your node should listen to output2 from mystery_node and publish to unit_listener.
    • Alternatively, you can place the remap such that mystery_node publishes to a different topic, as long as your conversion node is between mystery_node and unit_listener.
  • Also, in the launch file, set the parameter used by your new/revised node to produce an output in Smoots as an initial default.

At the end of this, unit_listener should log statements to the console in whatever units your conversion code publishes. See slides for an example graph of the end product.

Test your code thoroughly by changing the parameter on the command line and watching the output from your conversion node and the console. It should start as Smoots and then change as you change the parameter on the command line.

Submission Instructions

Submit a PDF to blackboard with:

  1. Your name, repo URL, and the tag for this assignment
  2. The command that starts your nodes for this assignment, ie:
    roslaunch <package> <launch_file>
  3. The name of the node you created
  4. The parameter you created and the valid values you can use.
  5. Any difficulties you had with this assignment


6 points – Added new unit smoots
10 points – Parameter to switch units
10 points – Successful remap
10 points – All nodes started in launch file, launcher script correct
2 points – Tag applied in git
2 points – Answers given in PDF