Robotics 2017: Control of the Omni-direction Robot

A project of the Robotics 2017 class of the School of Information Science and Technology (SIST) of ShanghaiTech University. Course Instructor: Prof. Sören Schwertfeger.

Liu Junda and  Jiang Yiwen


The robot is designed to do complicated job in a narrow space swiftly. It is driven by four 24V DC motor and 4 mecanum wheels. It can move to any 2D direction with the pose remain unchanged.


4 dc motor controlled by 2 roboclaw control board which connected to rasberry PI with serial mode. The rasPi send the control message. The rasberry Pi can be control remotely by using the and ssh function then we have a remote robot. Roboclaw can be set by a PC application named IONmotion which is used to set pid parameter and other, the user manual and all the setting issues can be found on official website of roboclaw.


The roboclaw receive control message from rasPi to do complex work and action.We use ros to send and receive message with roboclaw.

There are 3 part of program to control the roboclaw.


run roscore ------- run roboclaw_control.cpp ------- run your own control_program(mostly in python)


This program interprete the control message into serial number sent to roboclaw.

You can change the parameter inside to control the velocity multiplying power or the control mode of different motors.

System evaluation

The test we have already done is to run the robot in a certain speed and stop it after reaching a certain cycle of the wheels / distance. The pid system perfectly overcome the effect of inertance could adjust the robot to the right position. As well as the stability of the platform and the swiftness in a small space. We have the picture of the trajectory of the robot when it move in a certain way with four block near the wheels of the robot. The deviation of the designed trajectory and the real one was controlled in 10% at first( by divide the deviation distance with the whole robot diameter) which means it did not touch the block. And we have the data of space taken when the robot is rotating in different speed to measure if it can move swiftly in a narrow space. It took only 107% of the acreage of the circle it draw when perfectly rotating around the geometry heart of the robot.