3️⃣Hardware Integration

  1. Launch the robot's motor and sensor drivers.

  2. Run rosnode list to find the names of the ROS nodes of the drivers.

  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]
    Publications: 
     * /odom [nav_msgs/Odometry]
     * /odom_euler [std_msgs/String]
     * /robot_batt_perc [std_msgs/Int16]
     * /rosout [rosgraph_msgs/Log]
     * /tf [tf2_msgs/TFMessage]
    
    Subscriptions: 
     * /cmd_vel [geometry_msgs/Twist]
  4. From the information displayed from running step 3, make sure that:

    1. The robot motor driver node subscribes to the topic /cmd_vel for velocity commands.

    2. The Lidar driver node publishes laser data to the topic /scan

  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"/>
    </node>
  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. 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. Broadcast a transformation refer to this link.

    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. With the driver nodes running, run RVIZ using: rosrun rviz rviz, do the following checks:

    1. Laser data ("/scan") can be seen and is orientated in the correct direction.

    2. Movement direction during teleoperation is correct.

    3. Robot odometry ("/odom") is updating correctly during teleoperation.

Last updated