X100 UGV - Mobile Robotics Research Platform for Indoor and Outdoor Applications


ROS software maintainer: XMachines

Official website: https://www.xmachines.ai/x100

X100 is a UGV platform (Unmanned Ground Vehicle) for mobile robotics research & development. It comes equipped with an array of latest sensors along with a flexibility to add additional sensors and actuators. Its rugged build quality makes it an ideal tool for venturing into Research & Development of Delivery Robots, Space Robotics, Self Driving Cars and various other advanced robotics applications

X100 is built out of high quality stainless steel which withstands harshest terrain. The lug-tread tires and powerful motors gives X100 ample torque to move in challenging terrain.

Getting Started

First Run Teleoperation

In this tutorial you will learn how to move x100 for the first time. Make sure the batteries are plugged in properly. Also make sure the battery doors are closed. please refer to user manual for more information.

Turning on the robot

  • push the main power button to switch on the robot.
  • Next, turn on the computer, by pushing the computer power button.
  • Now you should be able to see the display turining on.
  • wait till you see the XMachines homescreen.

Connecting the Joystick

Note: The joystick that comes with robot is already paired to the robot.

click the playstation button to connect to the robot. please refer to user manual for more information.

Runinng the program

Warning !!!

This approach uses ros & rosbridge to launch the neccessary files. Please make sure to click the stop button after usage. if not, the roscore and launch file keeps running in the background.

  • Double Click on x100.php.html, This will open the web browser.
  • Click on start teleop.
  • wait untill you see the battery voltage and current displayed on the screen.

Network setup

First connection

By default x100 netwrok is in Hotspot mode. The SSID of x100's network is xmachines-x100, and the default password is xmachines. You can connect it with your PC using SSH. The default IP of x100 is

  • After you have connected to the X100's hotspot. Now you can access it through ssh. open new terminal and enter the follwing command.

      ssh -X xmachines_x100@

you will be asked for the password. enter the password.

Now, you are logged into x100

Connecting to the Internet

You can use the touch screen display to turn off the Hotspot, and connect to your wifi.

  • on the top right corner click on the wifi symbol
  • click on disconnect as shown below.


  • Now you will be able to see all the networks available.
  • select your wifi network, and enter the password.

Turning on and off the Hotspot (CLI)

once you have connected to your own wifi. follow the below steps to turn on and off the hotspot with simple commands.

  • navigate to /etc/NetworkManager/system-connections.

    cd /etc/NetworkManager/system-connections
  • type ls and hit enter, this will print all the know network connections. as shown below
  • you should see your network name visible in the list. Now copy the name of your network.
  • type following command to turn off the hotspot.

    sh hotspot_off.sh --ssid="yourWifiSSID"
  • to turn the Hotspot back on.

    sh hotspot_off.sh --ssid="yourWifiSSID"


Gazebo Simulation

X100 can also be used in simulated environments.

  • Clone the x100_gazebo repository to your catkin_ws/src/ or to the exsisting x100_robot/ workspace(x100_robot workspace is default workspace of the physical robot).

git clone https://github.com/XMachines-ai/x100_gazebo.git
  • run catkin_make command from catkin_ws folder.
  • run the following command in a new terminal to launch x100 in gazebo.

  roslaunch x100_gazebo x100_sim.launch

you should be able to see x100 in gazebo. gazebo.png

Launch Files


Subscribed topics

  • /cmd_vel (geometry_msgs/Twist)

    • twist.linear.x to move robot forward and backward. twist.angular.z to rotate robot left and right. all the other velocities are ignored.

    /x100/front_lights (std_msgs/Int16)

    • This topic is used to control the brightness of front leds. input range - (0, 100). input is in terms of percentage. 0 is off , 100 is full brightness.

Published topics

  • /x100/odom (nav_msgs/Odometry)

    • raw odometry generated from wheel encoders.

    /x100/voltage (std_msgs/Float32)

    • This topic publishes the voltage of the batteries in Volts.

      Make sure to subscribe to the topic & monitor the battery voltage frequently. Make sure to not discharge the battery less 20V for better battery health.

    /x100/current (std_msgs/Float32)

    • This topic publishes the overall current consumed by the robot in Ampere.
    • This topic publishes data related to joystick controlls.

    /x100/motor_controller_1_temp (std_msgs/Int16)

    /x100/motor_controller_2_temp (std_msgs/Int16)

    /x100/motor_controller_3_temp (std_msgs/Int16)

    /x100/motor_controller_4_temp (std_msgs/Int16)

    • All the above topics have similar properties. These topics publishes the temperature status of the motor controllers. the values ranges from 1 - 4
    • 1 - Temperature is Normal (typically below 35C)
    • 2 - Temperature is mediumly Hot (typically in between 35C to 45C)
    • 3 - Temperature is Hot (typically in between 50C to 60C)
    • 4 - OverHeat (above 60C) The controllers are equiped with dc fans, which will act accrding to the temperature rise. typically it takes less than 2 mins to cool down when reached to 60C. DO NOT run the robot for long durations when the topics publishes 4.

  • Warning !!!

under heavy loads (greater than 50kgs) the motor controller temperatures may rise rapidly on continuous run. In such cases, pause the activity and let the controllers cool down. Make sure to subscribe to these topics and monitor the temperatures frequently.

Wiki: Robots/x100 (last edited 2022-12-10 10:17:40 by xmachines)