# Hardware Integration

1. Launch the robot's motor and sensor drivers.<br>

2. Run `rosnode list` to find the names of the ROS nodes of the drivers.<br>

3. Run `rosnode info <node>` , where \<node> is the name of the nodes determined from step 2. \
   Sample output:

   <pre><code>$ rosnode info /motors_ctrl 
   <strong>--------------------------------------------------------------------------------
   </strong><strong>Node [/motors_ctrl]
   </strong>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]
   </code></pre>

4. From the information displayed from running step 3, make sure that:&#x20;
   1. The robot motor driver node subscribes to the topic `/cmd_vel` for velocity commands.&#x20;
   2. The Lidar driver node publishes laser data to the topic `/scan`<br>

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***.<br>

   <figure><img src="/files/yQK044DjaAP941ER4QbP" alt=""><figcaption></figcaption></figure>

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](http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF#Broadcasting_a_Transform).
   2. **Create static transformation**. Add the following line in the launch file of the lidar drivers:

      ```yaml
      <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:&#x20;
   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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.movel.ai/new-collection/seirios-rns/documentation/installation-and-integration-1/initialising-seirios-rns.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
