ROS mini-project


We want to make sure that you

  • are comfortable with Linux, ROS1 and git
  • have basic programming skills
  • know you to document code and follow style guides

Preliminary tasks

$ sudo apt install ros-noetic-gazebo-ros-* ros-noetic-lms1xx
$ cd ~/catkin_ws/src   
$ git clone
$ cd ..
$ rosdep install --from-path src --ignore-src  
$ catkin build
$ source devel/setup.bash

Run the simulation

Start the main launch file for the husky robot using:

roslaunch husky_gazebo husky_empty_world.launch  

The estimated location of the robot is provided by the Extended Kalman Filter output: it is published on /odometry/filtered.

$ rostopic echo /odometry/filtered

The robot velocity can be set by publishing a Twist message to /twist_marker_server/cmd_vel by:

  • writing rostopic pub /twist_marker_server/cmd_vel geometry_msgs/Twist
  • pressing tab twice
  • setting a rate of 10 hz

You can set a forward velocity, s.a.:

$ rostopic pub /twist_marker_server/cmd_vel geometry_msgs/Twist "linear:
  x: 0.2
  y: 0.0
  z: 0.0
  x: 0.0
  y: 0.0
  z: 0.0" -r 10


Write a C++ node which makes the robot drive to the point at position x = 10.0 and y = 1.0 in the odom frame.

Your node has to

  • subscribe to /odometry/filtered
  • publish to /twist_marker_server/cmd_vel

The correct location is reached when the robot is within 0.5 m of the target location, e.g.

$ rosrun tf tf_echo odom base_link
- Translation: [10.254, 1.324, 0.000]
- Rotation: ...

Do not write something too complex: please keep it simple.

And please follow code styles described in, and

Add a

Add a file describing:

  • how to install the required dependencies
  • what your node does
  • how to use it

Upload on

  • Create a private repository
  • Push your code (you should have have more than one commit for this mini-project)
  • Add maug (Maurice Gohlke) and ddimarco (Daniel Di Marco) as collaborators

Send us the link to the repository via email at