# xiaoqiang quick start guide

## Quick start

### Start Using

This chapter describes how to quickly use the platform. If you are not familiar with the ROS system and Ubuntu system, please read the first tutorial of the second chapter.

### Set up the network

First, connect monitor to Xiaoqiang's host pc（Xiaoqiang Pro users please use the included HDMI to VGA adapter to connect, Xiaoqiang Mini users please use vga directly）。Xiaoqiang's default password is xiaoqiang，Please change the default password。Enter the OS and set up Xiaoqiang's wifi network connection。It is recommended to set up the router so that Xiaoqiang can use static ip, which is convenient for future connections. Setting up static IP tourial.

### Product assembly

The main part of Xiaoqiang is shown in the figure below.

Place the battery flat on the free area in front of the host (the battery is blocked by two small black blocks).Connect the platform power cord according to the wire label. Installing computer host wifi antenna. USB camera and platform USB communication cable can be connected to the host's USB interface

### State check

After the assembly is complete, you can start using Xiaoqiang. Turn on the Xiaoqiang host computer switch and wait for the host blue light to turn on. Xiaoqiang left power data display is normal（The normal range of battery voltage cannot be lower than 10V,The normal range of battery voltage can not be less than 10V or it will automatically shut down）

Remote connection through ssh, where xxx.xxx.xxx.xxx is Xiaoqiang's IP

ssh xiaoqiang@xxx.xxx.xxx.xxx


Check that the program is working properly and execute the following commands

rostopic list


Normally, all current ROS topics will be displayed.

/ORB_SLAM/Camera
/ORB_SLAM/Frame
/camera_node/image_raw
/orb_scale/scaleStatus
/rosout
/rosout_agg
/system_monitor/report
/tf
/usb_cam/brightness
/xqserial_server/Odom
/xqserial_server/Power


If the topic is not displayed properly, you can try to restart the service.

sudo service startup restart


Check system status

rostopic echo /system_monitor/report


If it is normal, the display is as follows

imageStatus: True
odomStatus: True
orbStartStatus: False
orbInitStatus: False
orbScaleStatus: False
brightness: 0
power: 12.34432


Where imageStatus indicates whether the camera is working properly. odomStatus indicates whether the underlying driver is working properly. The three Orb-related variables are visual navigation-related states that can be temporarily ignored（If you are interested in this area, you can communicate in the forum）. brightness is the brightness of the camera. Power is the voltage value of the current battery, If the voltage cannot be read, 0 is displayed.

### remote control

Connect through ssh

ssh xiaoqiang@xxx.xxx.xxx.xxx


Start remote control program

rosrun nav_test control.py


Now you can use the arrow keys to control the movement of Xiaoqiang. Spacebar is stopped. Ctrl + C exits the program.

### Software overall structure and description

Xiaoqiang's software is built on ROS. The program mainly contains the driver, navigation algorithm and slam algorithm. For robots, the software is a whole, and the dependence of each part is relatively high. For ease of management, The basic functions in the system are operated by one service. That is, the startup service mentioned earlier. This service starts the driver package and camera. Startup package is located /home/xiaoqiang/Documents/ros/src/startup. This service is automatically started when the system starts. If you want to change the content of this service, you can modify the launch file in this package. For detailed operations, please refer to here. The system's navigation program uses the navigation package that comes with ROS. However, the navigation parameters are modified according to Xiaoqiang's own parameters. Navigation parameters have a great influence on the performance of navigation. You can also try to modify the parameters yourself to improve performance. The slam algorithm uses ORB_SLAM. This algorithm is currently not available in the actual production environment, but its use performance is also very good. The last is some tool software. For example, nav_test control.py related to control platform movement.，System monitor that shows the system status.

### ROS Primer

Learning ROS for Robotics Programming - Second Edition.pdf. This tutorial is very basic and comprehensive, Although taking the Hydro version as an example, But it is also fully compatible with the Kinetic version, In the code example in the book, just replace the string hydro with kinetic. Please read the second and third chapters of this book in detail.