Hardware Integration

  1. 1.
    Launch the robot's motor and sensor drivers.
  2. 2.
    Run rosnode list to find the names of the ROS nodes of the drivers.
  3. 3.
    Run rosnode info <node> , where <node> is the name of the nodes determined from step 2. Sample output:
    $ rosnode info /motors_ctrl
    Node [/motors_ctrl]
    * /odom [nav_msgs/Odometry]
    * /odom_euler [std_msgs/String]
    * /robot_batt_perc [std_msgs/Int16]
    * /rosout [rosgraph_msgs/Log]
    * /tf [tf2_msgs/TFMessage]
    * /cmd_vel [geometry_msgs/Twist]
  4. 4.
    From the information displayed from running step 3, make sure that:
    1. 1.
      The robot motor driver node subscribes to the topic /cmd_vel for velocity commands.
    2. 2.
      The Lidar driver node publishes laser data to the topic /scan
  5. 5.
    If the topic names are not set as in step 4, remap them in the launch files of the drivers by adding a line in the launch files in the following format:
    <node ...
    <remap from="<original topic name>" to="/cmd_vel"/>
  6. 6.
    While the robot base and lidar are launched, run rosrun rqt_tf_tree rqt_tf_tree and check that the frames are linked in this order: odom → base_link → laser.
  7. 7.
    If the frames of base_link and laser are not linked correctly, there are two options you can link them. You can select one of them. (Prefer use Broadcast a transformation)
    1. 1.
      Broadcast a transformation refer to this link.
    2. 2.
      Create static transformation. Add the following line in the launch file of the lidar drivers:
      <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.22 0 0.1397 0 0 0 base_link laser 100" />
      In “args”, x = 0.22, y = 0, z = 0.1397, yaw = 0, pitch = 0, roll = 0 for this example. This should provide a transformation between the base_link and laser frame If you use static transformation, there will be several issues, one of the most is localizer mode, the UI won't visualize a laser scan in localizer mode.
  8. 8.
    With the driver nodes running, run RVIZ using: rosrun rviz rviz, do the following checks:
    1. 1.
      Laser data ("/scan") can be seen and is orientated in the correct direction.
    2. 2.
      Movement direction during teleoperation is correct.
    3. 3.
      Robot odometry ("/odom") is updating correctly during teleoperation.