User Manual
Segway RMP(Robot Mobile Platform)

RMP Lite 220©2021 Segway-Ninebot All Rights Reserved1General Information
The Robot Mobile Platform（RMP）provides general or integrated
robot chassis solutions for enterprises or third-party developers,with versatility, durability and performance in mind. RMP Lite 220(hereinafter referred to as RMP) is a mobile robot chassis productdesigned for indoor and outdoor distribution, inspection, service,cleaning, and warehousing AGV. It is designed to provide
large-scale and customized services for companies in the robotics
field such as special application robots.
Main features of RMP：
• Hardware: compact and equipped with a large-capacity
battery;• Software: compatible with ROS and Isaac operating systems;• Hardware modular design, interface with software SDK,
support secondary development or customized service;• Support extension kits include: light strips, sensor mounting
rods, and so on.

2

Safety
Incorrect use of RMP may cause loss of control, collision or fall of
the RMP, resulting in property damage, personal injury, and evendeath. Therefore, in order to reduce risks and avoid injury, please
read and follow all instructions and warnings in this manual.
The following secure messaging conventions are used in thisdocument：
Warning！

Warns you of operations that may cause serious
injury or even death

Attention！

Warns you of operations that may cause minor ormoderate injuries

Please note

Indicates important information, but does not
involve personal injury

Warning！
Please keep RMP out of the reach of children and pets.
Accidental movement of RMP may cause injury or even death.

Please do not sit, stand or ride on the RMP. Doing so may cause
injury or even death.

Please do not control RMP to hit people or animals. Collision may
cause injury or even death.
3When RMP is running, remind people nearby at all times.
Accidental collision with RMP may cause injury or even death.

Avoid power failure on slopes. RMP cannot maintain its positionon the slope when the power is off. The power off will cause RMP
to slide, which may cause injury or even death.



RMP can accelerate quickly. It is recommended that using low
speed to practice until the you are familiar with controlling RMP.
Accidental movement of RMP may cause injury or even death.

Please do not try to disassemble the battery, it may cause electric
shock, burns or even fire. Attempting to open the battery case will
damage the battery case, release toxic and harmful substances,
and also render the battery unusable.



The same with all rechargeable batteries, please do not charge
near flammable materials, which may cause a fire.



If the battery case is damaged or the battery emits peculiar smell,smoke, overheating or leakage, please do not continue to use thebattery and do not contact with any substances leaking from thebattery to avoid poisoning.



Strictly observe and follow all safety information on the warninglabel on the battery. Failure to do so may result in injury or evendeath.

4

Please do not use cables that have been seriously worn or
damaged, which may shock yourself or damage the RMP.

Attention！


The performance parameters should be set correctly andcarefully. RMP follows the commands issued to it, users are
responsible for implementing correct and safe performanceparameters.



Do not charge the battery may cause permanent damage to thebattery.

Only can use the charger that is provided with RMP Lite 220 tocharge the batter.



Before operating RMP, please be sure to read the user’s manualand be familiar with the operation of RMP and various
precautions.

Please Note

If the user modifies the chassis without communication with
Segway-Ninebot and causes an accident, Segway-Ninebot
does not assume any responsibility.

5Table Of Contents
1 Product introduction ............................................................................................................7
1.1Product diagram ........................................................................................................ 7
1.2 Component description ............................................................................................ 8
1.3 Remote control ......................................................................................................... 9
1.3.1 Remote control diagram ................................................................................. 9
1.3.2 Receiver pairing ............................................................................................10
1.3.3 Remote control control car instructions ........................................................ 11
1.3.4 Upper computer control car instructions ...................................................... 12
2 Software introduction ........................................................................................................ 16
2.1 Documents provided to users ............................................................................... 166
2.2 Interface function introduction .............................................................................. 166
2.2.1 C/C++ Interface introduction .......................................................................166
2.2.2 ROS Interface introduction—SmartCar ........................................................20
2.2.3 Error code information table ........................................................................ 23
3 Firmware upgrade and version upgrade .......................................................................... 25
3.1 Firmware upgrade .................................................................................................. 25
3.2 Version upgrade .....................................................................................................28
Appendix I System parameters and mode switching logic ...................................................31
Appendix II Connector welding instructions ........................................................................ 34
Appendix III Connector pin angle definition instructions ...................................................... 37
Appendix IV C/C++ APIReference documents .................................................................... 37

6

1 Product introduction
1.1Product diagram

Figure 1

Figure 271.2

Component description

Table 1
No.

Component name

Description
On：Hold down, when power button and indicator light arealways on and accompanied by a beep, chassis boots
successfully. At this time, the chassis is in lock mode, and the1Power button

indicator light is steady yellow.
Off：Hold down until the prompt sound starts，release thebutton，chassis shut down successfully. At this time, power
button and indicator light are always off.
Colors and status of the indicator light represent different

2

Indicator light3

Driving wheel

4

Universal wheel

Super Artificial rubber, lightweight and shock absorption.

5

Mounting hole

Use to install upper equipment.

6

Battery

7

Emergency stop
buttonmodes of the product.
11 inch high adhesion pneumatic tire with good shock
absorption and design with drainage tank.

Power supply to chassis and upper system.
Use to switch the chassis to emergency stop mode in an
emergency.

8

Charging port

Connect the charger to charge the device.

9

Battery lock

Used to fix the battery, need to use the matching key to open.

10
11
12

Upper computer

It supplies power to the upper computer, with a maximum

power supply port

current of 10A.

Electric control box

Use to install circuit module to control the chassis.

Upper computer
power supply port

It supplies power to the upper computer.

8

1.3 Remote control
1.3.1 Remote control diagram

Figure 3*The forward or backward of the remote control input (throttle orrudder) can be realized by flipping the enable switch under the T8FB.

Coach interface / Simulator interface /Firmware upgrade interface

Battery cover

Figure 4
9*The alarm voltage of the remote control is adaptive to 2S, 3S, 4S
lithium batteries and 4 NI-MH batteries. That is, if T8FB is poweredby 2S, 3S, 4S lithium batteries or 4 NI-HM batteries, after connecting
the battery, T8FB will automatically set the low voltage alarm value
according to the battery type.

1.3.2 Receiver pairing
Each transmitter has an independent ID code. Before starting to
use the device, receiver must pair the code with the transmitter. Afterpairing the code, the ID code is stored in the receiver, and there is noneed to pair it again, unless the receiver is used with anothertransmitter. When you have a new receiver, you must pair the code
again, otherwise the receiver will not work normally.
（ 1 ） Place the remote control and receiver horizontally with aspacing of about 50cm；（ 2 ） Turn on the power switch of the remote control to supply
power to the receiver, and the receiver ’ s LED light starts to flash
slowly；（3）Press the pairing code button （ID SET）on the side of thereceiver for more than 1 second, the LED light starts to flash quickly,that means the code is being paired, and the receiver will look for the10nearest remote control to pair the code;（4）When the receiver’s LED light stops flashing, it means thatpairing the code is completed. If the receiver ’ s LED light flashes
slowly, it means that pairing the code has failed, the code needs tobe paired again.

1.3.3 Remote control control car instructions（1）Turn on the RMP chassis: press the RMP power button;
Note: Please check the RMP status. Press and hold until thebuzzer sounds and there is no continuous beeping, the indicator lightis steady yellow.
（2）Turn on the remote control: push up the power switch of theremote control;
Note: ensure that the remote control is not in the emergency stop
state and enters the enable state.That is, the emergency stop switch
is not at the bottom, and the enable switch is dialed from the top to
the bottom.
（3）At this time RMP is in Normal mode , see the table below for
specific operations:11

Table 2: Car control and remote control operation
Car control
Turn left/ rightMove
forward/backward
Emergency stop/ exit
emergency stop

Remote control operation
Rudder lever
Throttle lever
Emergency stop switch：At the top: exit the emergency stop;
At the bottom: start the emergency stop

Maximum angular velocity adjustment knob: Turn left: theAdjust the maximum
value of angularmaximum

angularvelocity

decreases,Turnright:

velocity

increases.

Adjust the maximum
value of linear velocity

Enable/Disable

Maximum linear velocity adjustment knob: Turn left: themaximum linear velocity decreases, Turn right: increases.
Turn the enable switch from the top to the bottom: Enable;
Turn the enable switch from the bottom to the top: Disable.

1.3.4 Upper computer control car instructions
The host computer is the control computer, which can directly
issue control commands and display various information changes on
the screen. The upper computer controls the lower computer andprovides some necessary operating environment for the lower
computer, and extends the man-machine control or demonstration
function that the lower computer can provide. The upper computer
has the characteristics of leading management, coordinating
resources, monitoring agency, and controlling RMP.
（1）Turn on the RMP chassis: press the RMP power button;
12Note 1 : Please check the RMP status. Press and hold until thebuzzer sounds and there is no continuous beeping, the indicator lightis steady yellow.
Note 2: When the upper computer controls the car, the remotecontrol cannot be turned on. Or if the remote control is turned on,turn its enable switch upward.
（2）Ensure that the RMP serial line or CAN line is connected tothe upper computer；（ 3 ） In the upper computer, give permissions to “ /sdcard/
segway/ hardware_log/”folder, otherwise it will fail to create a newlog file; give permissions to all files in the “/catkin_ws/ src/ RosCode/segwayrmp/ lib/”directory（no need to reset after first setup） :`cd /sdcard/segway/hardware_log``sudo chmod 777 /sdcard/segway/hardware_log/``cd $PRO_HOME$/catkin_ws/src/RosCode/segwayrmp/lib/``sudo chmod 777 *（4）In ”catkin_ws/ src/ RosCode/ segwayrmp/ Cmakelists.txt”
file ， according to the upper computer in x86_ 64 or arm platform,
select the compilation option,as shown below when compiling in
x86_64 platform, comment out “ libctrl_arm64-v8a.so ” with thesymbol “#”, （no need to reset after first setup）:

13

`target_link_libraries(SmartCar``${catkin_LIBRARIES}``#${PROJECT_SOURCE_DIR}/lib/libctrl_arm64-v8a.so//in

x86_64 platform ， comment out this line ， in arm platform, do notcomment out this line``${PROJECT_SOURCE_DIR}/lib/libctrl_x86_64.so//in arm

platform，comment out this line，in x86_64 platform, do not commentout this line`（5）Enter ROS system，run the following command to compile
the “segway_msgs” package message.
cd catkin_ws
catkin_make-DCATKIN_WHITELIST_PACKAGES='segway_msgs'（6）Enter ROS system，run the following command to compile
the “segwayrmp” package message.
cd catkin_ws
catkin_make-DCATKIN_WHITELIST_PACKAGES='segwayrmp'（7）Control car in ROS system:
1）Create a new terminal，run the following command:
cd catkin_ws

14roscore2 ） Create a new terminal ， run the following command, run
SmarCar node:
cd catkin_ws
source devel/setup.bash
rosrun segwayrmp SmartCar
3 ） Create a new terminal ， run the following command, runroutine test node:
cd catkin_ws
source devel/setup.bash
rosrun segwayrmp ChassisResponseTest

15

2 Software introduction
This chapter introduces relevant documents, software interfacefunctions and fault code information provided by RMP.

2.1 Documents provided to users

Table 3 Documents provided

Document

Function

Libctrl_x86_64.so

Provide C/C++ chassis-related
interfaces in x86 platform
Provide C/C++ chassis-related

Libctrl_arm64-v8a.sointerfaces in arm platform
Comm_ctrl_navigation.h

C/C++ API interface header file

ROS package

Provide chassis control ROS
nodes

2.2 Interface function introduction
2.2.1 C/C++ Interface introduction
Table 4 callback data type
Callback type
Chassis_Data_Speed

Callback No.
1

Function description

Data structure

Chassis speed

typedef struct{

information

int16_t l_speed;16int16_t r_speed;
int16_t car_speed;
int16_t turn_speed;}chassis_speed_data_t;
typedef struct{
Chassis_Data_Ticks

2

Chassis encoder

int32_t l_ticks;

information

int32_t r_ticks;}motor_ticks_t;
typedef struct{

Chassis_Data_Odom_
Pose_xy

Odom pose3

float pos_x;

information

float pos_y;}odom_pos_xy_t;
typedef struct{

Chassis_Data_Odom_
Euler_xy4

Odom Euler

float euler_x;

x/y axis information

float euler_y;}odom_euler_xy_t;

Chassis_Data_Odom_
Euler_z

typedef struct{

Odom Euler

5

float euler_z;

Z axis information}odom_euler_z_t;
typedef struct{

Chassis_Data_Odom_
Linevel_xy6

Odom speed

float vel_line_x;x/y axis information

float vel_line_y;}odom_vel_line_xy_t;
typedef struct{

Chassis_Data_Imu_G
yr7

Gyroscope data

int16_t gyr[3];}imu_gyr_original_data_;typedef struct{

Chassis_Data_Imu_AccAccelerometer

8

data

int16_t acc[3];}imu_acc_original_data_;Note 1：Odomdata：The default heading angle is 0 degrees at start up.
Note 2：IMU（gyroscope and accelerometer）data：the carrier coordinate
systemXYZ corresponds to the right front up.
Table 5 event definition
Event type

Event No.

Function description

ChassisBootReadyEvent

1

Chassis central control

17

board start up completed
PadPowerOffEvent

2

Chassis shutdown

OnEmergeStopEvent

3

Enter emergency stop

OutEmergeStopEvent

4

Exit emergency stop

OnLockedRotorProtectEvent

5

Locked rotor event occurs

OutLockedRotorProtectEvent

6

OnLostCtrlProtectEvent

7

Lost control event occurs

OutLostCtrlProtectEvent

8

Lost control event removes

CalibrateGyroSuccess

9

CalibrateGyroFail

10

CalibratePasheCurrentSuccess

11

CalibratePasheCurrentFail

12

Locked rotor event
removes

Calibrate the gyroscope
success
Calibrate the gyroscope failCalibrate phase current
success
Calibrate phase current fail

Table 6 get/set interface

Interface nameget_err_state

Interface description
Get the error code of the upper computer/central control
board/motor board/battery

get_bat_soc

Get the percentage of battery remaining

get_bat_charging

Get battery charge status（1: charging; 0: non-charging）

get_bat_mvol

Get battery voltage (unit: millivolt (mV))

get_bat_mcurrent

Get battery current (unit: mA)

get_bat_temp

Get battery temperature (unit: degrees Celsius (˚ C))

get_chassis_work_modelGet chassis work model（0：Unload；1：Onload）

get_chassis_load_state

Get chassis load state （0：empty；1：full）

get_chassis_mode
get_ctrl_cmd_src

Get chassis mode（0：Locked； 1：Control； 2：Push；
3：Emergency stop; 4：Error）
Get the current chassis control source (0: remotecontrol; 1: upper computer)get_vehicle_meter

Get chassis mileage (unit: meter(m))

get_host_version

Get the upper computer version number

get_chassis_central_version
get_chassis_motor_version
get_line_forward_max_vel_fb
get_line_backward_max_vel_fb
get_angular_max_vel_fb

Get the control board

version number

Get the motor board version number（Reserved）
Get the forward speed limit value of the chassis (unit:
meter per hour(m/h))
Get the backward speed limit value of the chassis (unit:
meter per hour(m/h))
Get the limit value of chassis angular velocity (unit:
18

milliradian per second(mrad/s))
getIapTotalProgress

Get IAP progress

iapCentralBoard

Upgrade the central control board IAP

iapMotorBoard

Upgrade the motor board IAP

isHostIapOver

Check if IAP is over

getHostIapResult

Get the IAP result (3: completed; 4: failed: 5:
interrupted;

getHostIapErrorCode
get_chassis_hang_mode
get_charge_mos_ctrl_status
set_cmd_vel
set_line_forward_max_vel
set_line_backward_max_vel
set_angular_max_vel
set_enable_ctrl

0: meaningless)Get IAP error code
Get whether the chassis is in the hang mode (0: not in
the hang mode; 1: in the hang mode)Get charging MOS status (1: charging MOS is on, 0:
MOS is off) (temporarily reserved)
Set the chassis linear velocity and angular velocity (unit:
meter per second(m/s) and radian per second(rad/s))
Set the forward speed limit value of the chassis (unit:
meter per second(m/s))
Set the backward speed limit value of the chassis (unit:
meter per second(m/s))
Set the limit value of chassis angular velocity (unit: radianper second(rad/s))
Set the enable state of the upper computer control caron the chassis (1: enable; 0 disable)

init_control_ctrl

Chassis initialization interface

exit_control_ctrl

Chassis exit initialization interface

set_smart_car_serial
set_comu_interface

Set the serial port name used by the upper computer
dynamic library
Set the communication interface for communication withthe chassis (0: serial port; 1: CAN)

set_chassis_load_state

Set chassis load state (0：empty；1：full)

set_chassis_poweroff

Set chassis shutdown command

set_remove_push_cmd

Remove chassis push command

setHostIapCanceled

Cancel the upper computer IAP command

set_chassis_hang_mode
set_charge_mos_ctrl

Set chassis hang mode（1：enter

the hang mode：0：

exit the hang mode）
Set charging MOS switch（1：turn on MOS, 0: turn off
MOS）(temporarily reserved)

2.2.2 ROS Interface introduction—SmartCar
Table 7 news release
Topic Name

Function
Description

Message Type19

Message Type Info

Frequency

int16 bat_soc
int16 bat_charging

Battery related

Bms_fb

Segway_msgs/ Bms_fb

information

int32_src_fb

Chassis control

Segway_msgs/

commandChassis_ctrl_src_fb

sourceChassis_mil

Chassis_mileage_meter

mileage_fb
Chassis_mo
de_fb

Segway_msgs/

Chassiseage_meter1

int32 bat_current
int16

Chassis_ctrl

bat_vol_fb
Segway_msgs/

Chassis mode

Chassis_mode_fb

bat_temp

uint16chassis_ctrl_cmd_sr1cuint32
vehicle_meters
uint16chassis_mode

1

1

uint32 host_error
uint32 central_error
Error_code_

Chassis error

fb

Segway_msgs/

code

Error_code_fb

uint16
left_motor_error

1

uint16right_motor_error
uint32 bms_error
uint16

Motor_work

ChassisSegway_msgs/_mode_fb

working mode

Motor_work_mode_fb

motor_work_mode#0: no output

1

torque 1: output
torquefloat32 car_speed
float32 turn_speed

Speed_fb

Chassis speed

Segway_msgs/

float32 l_speed

Speed_fb

float32 r_speed

40

uint64speed_timestamp
int32 l_ticks

ChassisTicks_fb

encoder

Segway_msgs/ Ticks_fb

information

int32 r_ticks
uint6440

ticks_timestamp

Odom

Odom data

Nav_msgs/odom

40

Imu

Imu data

Sensor_msgs/imu

40

Table 8 News Subscription
TopicName
Cmd_velFunction
Description
Control

Message Type

Message Type Info

Geometry_msgs/twist

Angular.z //rad/s

20

chassis

Linear.x //m/s

movement

Table 9 service client
Service namechassis_send_event_s
rv

Function

Message type

Description
Send

time

numberMessage type info
chassis_send_ev

Segway_msgs/chas

ent_idsis_send_event

ros_is_received

Table 10 Service server
Service name

Function

Message type

Description

ros_get_load_pa

Get load

ram_cmd_srv

parameter
Get chassis

ros_get_charge_

charging

mos_ctrl_status_

MOS status

cmd.srv(reserved
temporarily)

Segway_msgs/
ros_get_load_par
am_cmdSegway_msgs/
ros_get_charge_
mos_ctrl_status_c
md

Message type info
ros_get_load_param--get_load_param#0:no_load, 1: full_load
ros_get_chassis_charge_ctrl_status # 1: MOS opened; 0:
MOS closed--chassis_charge_ctrl_status
ros_get_sw_version_cmd

ros_get_sw_vers
ion_cmd_srv

Get software
versionSegway_msgs/---

ros_get_sw_versi

uint16 host_version

on_cmduint16 central_version
uint16 motor_version
ros_get_vel_max_fb_cmd

ros_get_vel_max

Get theSegway_msgs/---_feedback_cmd_

maximum

ros_get_vel_max_

forward_max_vel_fb

srv

speed limit

feedback_cmd

backward_max_vel_fb
angular_max_vel_fb
ros_set_chassis_charge_ctrl

Set chassis
ros_set_charge_

charging

Segway_msgs/

mos_ctrl_cmd.sr

MOS

ros_set_charge_v(reserved

mos_ctrl_cmd

temporarily)
Set chassis

Segway_msgs/_enable_cmd_sr

enableros_set_chassis_

commandchassis_set_charge_ctrl_result# 1: MOS opened; 0: MOS
closedros_set_chassisv---

enable_cmd

21

ros_set_chassis_enable_cmd--chassis_set_chassis_enable_result
ros_set_chassis

Set chassis

Segway_msgs/_poweroff_cmd_

shutdown

ros_set_chassis_

srv

commandpoweroff_cmd

ros_set_chassis_poweroff_cmd--chassis_set_poweroff_result
ros_set_load_paramros_set_load_parSet chassis

am_cmd_srv

load state

Segway_msgs/#0:no_load, 1: full_load

ros_set_load_par---

am_cmdchassis_set_load_param_res
ult

ros_set_remove_
push_cmd_srv

Set remove

Segway_msgs/

chassis push

ros_set_remove_commandpush_cmd

ros_set_remove_push_cmd--chassis_set_revove_push_result
ros_set_forward_max_vel

Set theSegway_msgs/

ros_set_backward_max_vel

maximum

ros_set_vel_max_

ros_set_angular_max_vel

speed limit

cmd_srv---

ros_set_vel_max_cmd_srv

chassis_set_max_vel_result

Table 11 Action server
Action name

Function
Description

Message typeMessage type info
Bool central_board_iap_enable--Int16 iap_result

Upgrade theros_set_iap_

board

cmd_action

firmwareIAP#3: iap_state_complete; 4: iap_state_fail; 5:
Segway_msg

iap_state_aborts/ros_set_iap

Int16 error_code_cmdAction#When iap_result value is 4, this value
represents the error code--Int16 iap_percent

2.2.3 Error code information table
The error code is obtained through:22

“uint32_t get_err_state(board_name_e board_name)”interface, and the corresponding information is as follows:
Table 12 Error code
Board name

host

Bit

Error info

0x00000000

No error

0x00000001

Loss of control board

0x00000002
0x00000000

Unplug the serial port
moduleNo errorCar control command

0x00000001

communicationinterrupted
Motor board

0x00000002

communicationinterrupted

0x00000004
0x00000008

Central

IMU initialization failed
IMU failed to read
data

0x00000010

Lost control

0x00000020

Locked rotor

0x00000040

Failed to calibrate IMU

0x00000080

Read Flash failed

0x00000100

IMU data update failed

0x00000200
0x00000400
0x00000800
0x00001000
0x00002000

Bms initialization failed
to enter test mode
RolloverAny motor board
restart is detected
Left magnetic encoder
fault
Right magnetic
encoder fault
Battery0x00004000

communicationinterrupted
Battery0x00008000

communicationinterrupted（30s）Motor0x00000000
23

No error0x00000001

Phase current fault

0x00000002

Phase voltage fault

0x00000004

Lack of phase

0x00000008

Under voltage

0x00000010

Over voltage

0x00000020

Over current

0x00000040

Over temperature

0x00000080

Locked rotor

0x00000100

Electrical angle fault

0x00000200

Excessive power fault

0x00000400

Over speed fault

0x00000800

Rotational speed
sensor fault

0x00001000

Angle sensor fault

0x00002000

Current loop fault

0x00004000

Speed loop fault

0x00008000

Angle loop fault

0x00000000

No error

0x00000008

Overcharge

Battery

Charge over
0x00000010

temperature
protection24

3 Firmware upgrade and version
upgradeIAP is a software function module of the system, that is, inapplication programming, that means upgrade the single chipcomputer program online. This function uses the upper computer
to burn the new version bin file to the single chip computer(including the central control board, the motor drive board, etc.)
when the program is running. The premise is that the single chipcomputer’s bin file, which will be burned, needs to be named
according to the requirements of the upper computer,and places
it under the“/sdcard/firmware/”path of the upper computer. And
then the bin file can be upgraded online through the command at
the terminal.

3.1 Firmware upgrade
Before the firmware upgrade, it is necessary to test the data
communication between the upper computer and each lower
computer to check whether the communication is normal. Use
the command to test in the shell terminal.
（1）View the path of the upper computer program25

Enter the path where the upper computer program is located,and check whether the upper computer executable file exists. As
shown in the figure below, they are arm executable file, x86
executable file, arm dynamic library, and x86 dynamic library:

Figure 5（2）Check the software version of each lower computer
board
Check the software version of the lower computer. This step
can test the communication between the upper computer and thelower computer at the same time. If the software version of eachsection of the lower computer can be checked through the upper
computer, it indicates that the communication is normal.
Central control board test command：./ ctrl_x86_64 s –test central
1） When connecting for the first time, if the serial port’s USB
port does not have execution permission, the program requires
root permission to modify the executable permission of the serial
port’s USB port. At this time, you need to enter the system login
26

password, and then hit the enter key, as shown in the figure
below:

Figure 62）When communication fails, the version number is 0，as
shown in the figure below:

Figure 73）When the communication is successful, the version
number is printed as follows, and it is a non-zero number. At thistime, the communication between the upper computer and thesingle chip computer is normal, and the online upgrade can be
performed:

Figure 827

3.2 Version upgrade（1）Single chip computer bin file placement
Put the board’s bin file which will be upgraded into the“/sdcard/firmware” path of the upper computer, for example,
the central control board’s bin file “central.bin”, as shown in thefollowing figure:

Figure 9（2）Online burning of bin file in lower computerEnter the path where the upper computer program
executable file “ctrl_x86_64” or “ctrl_arm64-v8a” is located,
as follows：

Figure 10

The commands for online upgrade of each board are as
follows. After entering the upper computer program path, execute28the following commands (use ‘s’ when using the serial port; use‘c’ when using the CAN port):
Central control board upgrade command：“./ ctrl_x86_64 s –iap central”
Motor board upgrade command：“./ ctrl_x86_64 s –iap motor”
Take the central control board as an example, enter thecommand: “./ ctrl_x86_64 s –iap central”to upgrade, as shownin the figure below：

Figure 11

During the upgrading, you can view the upgrade progress.
Progress represents the percentage of the IAP upgrade progress.
When the Progress value reaches 100, it means that the routing
board bin file has been programmed into the central control board
chip. As shown below：

29

Figure 12（3）Test the online upgrade result of the IAP version：
Perform step 1, test and check the software version number,enter the command: “./ ctrl_x86_64 s -test central”, in the pathwhere the upper computer program is located, as shown below：
At this time, the software version number of the central
control board is 0x1000, indicating that the online upgrade has
been successful, and the communication between the upper
computer and the central control board is good.

Figure 1330

Appendix I: System parameters andmode switching logic
Table 1 System parameters
Length*Width*Height（mm）

Size
Structural parameters

Structuralparameter

Performanceparameter

730*500*280
Wheelbase*Tread*Ground clearance（mm）：
513.5*414*68

Tire size

11Inch（280mm）hub motor

Weight (with battery)

27.2kgNominal load

50kg

Obstacle surmounting

4cm/8°Slope/Deceleration zone

Overhang

4mm Rear overhangGear train structure

Front drive, differential steering

Protection level

IPX5

Maximum speed

3m/s

Maximum steering

3rad/sspeed
Minimum turning radius

0m

Braking distance

No load: 3m/s 0.95m，Braking acceleration: 0

Control mode

Remote control, Upper computer control

Braking mode

Electric brakeCommunication
Communication

Battery

UART，CANInterface
Support driver、API

C/C++、ROS

Feedback data

Magnetic， Hall，IMU

Battery

48V 24Ah

Charging method

Manual line charging/Quick battery change

ButtonEmergency stop button, Power button
Power status indicator, Chassis status

Interactive

indicator,

Status indication

Control source indication, Battery display,
Charging status display

Table 2 Mode switching logic

31

Chassis

Enter

mode

1.

Implement

Exit

1.

The default mode ofchassis power on2.

Locked car

3.

mode

An unrecoverable
exception

Default mode after

0 speed closed

errorcode is

emergency stop recovery

loop, shielddetected andIn control car mode, when

speedenters the error

recoverability abnormalitycommand, andmode(such as communication

the status

timeout, communication

indicator lightemergency stop

disconnection, etc.) occurs,

keeps yellow

button to enter the2.

Press theenters the locked car

emergency stop

mode.

mode

1.

An unrecoverable
exception
errorcode is
detected andClosed loop,
1.

In locked car mode, thecontrolenable command iscommands.

received
Control car
mode

2.

enters the error

acceptingmode
2.

abnormality (suchRemote control

When the load exceeds
20kg, it is recommended touse‘set_chassis_load_state’switch the car control modeto overload mode

as communication

car: indicatortimeout,light flashes

communication

green; upperdisconnection, etc.)

computeroccurs, enters tocontrols car:indicator lightkeeps green

when recoverability

locked car mode.
3.

Press theemergency stop
button to enter the
emergency stop
mode

Emergency

In non abnormal mode, press

stop modethe emergency stop button
32

Relief force,

The emergency stopshield speed

button pops up andand enable

enters the locked car

command, themodestatus indicatorlight flashes red
Braking,releasing force,
Error modeshielding speed

Unrecoverable exception

and enableerrorcode detectedcommands. The
indicator light iskeeps red33

1.

RestartAppendix II Connector welding
instructions(I) Preparatory work
1、 Tools
Electric soldering iron, solder wire
2、 Materials
8pin connector, 2pin connector, 2 AWG16 cables, 8 AWG26
cables, as shown in Figure 1.

Figure 1(II) Welding instructions (take 8pin connector as an example)
1.

Figure 2 shows the 8pin connector received by the customer.
Screw the connector from the position shown by the red arrow todisassemble it into the state shown in Figure 3;

Figure 234

Figure 3

2. Take out the part shown in Figure 4, which is the part that needs
to be welded;

Figure 4

3. As shown in Figure 5, the pin angle number of the connector canbe seen from one side of the component, and then rotate it 180 °,which is the part needs to be welded;

Figure 5

4. Use the AWG 26 cables to weld according to the pin angle
definition in the welding manual (see appendix III for details). Afterthe welding is completed, as shown in Figure 6;

35

Figure 6

5. Take out the two parts shown in Figure 7 and put them on thewelded parts, as shown in Figure 8；

Figure 7

Figure 8

6. Take out the part shown in Figure 9, put them on the previously
assembled parts, and tighten them, as shown in Figure 10；

Figure 9

Figure 10

7. Then connect the remote control receiver and serial port, asshown in Figure 11；

Figure 11

8. The welding method of 2pin connector is the same as that of 8pin
connector.

36

Appendix III Connector pin angle
definition instructions
Connector

8pin

Pin number

DefineWire size

1

CANH

AWG26

2

CANL

AWG26

3

TX

AWG26

4

RX

AWG26

5

GND

AWG26

6

5V

AWG26

Remote

Brown

7

GND

AWG26

controlBlack

8

S.B PPM

AWG26

receiverYellow

1

Power+

AWG16

power supply

Red

2pin

Remark
CAN

Color
Red
Gray
Blue

Serial port

Green
White

for upper
2

Power-

AWG16

37

systemBlack

Appendix IV C/C++ APIReference
documents

int Init_Comcore(void)
Function: initialization of host computer dynamic link libraryParameter: none
Return value: 0: initialization succeed;
Other: initialization failvoid exit_Comcore(void)
Function: exit initialization of host computer dynamic link libraryParameter: none
Return value: none

void aprctrl_datastamped_jni_register(saprctrldatastampedt* f)38

Function: registration via the callback function provided byparameter, and this callback function conducts the sensor dataprocessing.
Parameter: f is a struct pointer, and this struct includes the uniquefunction pointer member variables.
Return value: none

void aprctrl_eventcallback_jni_register(saprctrleventt* f)
Function: registration via the callback function provided byparameter, and this callback function conducts the processing of
event code.
Parameter: f is a struct pointer, and this struct includes the uniquefunction pointer member variables.
Return value: none

uint16t get_err_state(boardnamee boardname)
Function: acquire the software/firmware runtime error code
Parameter: board name refers to the software/firmware ID

39

Parameter is one of the following values:
Host computer ID
Motor board ID
Central board ID
BMS ID
Return value: error code

int16t get_bat_soc(void)
Function: acquire percentage of battery remaining capacity
Parameter: none
Return value: percentage of battery remaining capacity (1~100)

int16t get_bat_charging(void)
Function: inquire whether the battery is in charging stateParameter: none
Return value: 0: not in charging state
1: in charging state40int16t get_bat_mvol(void)
Function: acquire real-time voltage of battery
Parameter: none
Return value: voltage value, unit mV

int16t get_bat_mcurrent(void)
Function: acquire real-time current of battery
Parameter: none
Return value: current value, unit mA
int16t get_bat_temp(void)
Function: acquire battery temperature
Parameter: none
Return value: temperature value, unit degree Celsius

int16t get_chassis_work_model(void)
Function: acquire working state of chassis motor
41

Parameter: none
Return value: 1: motor in augmentation;
0: motor not in augmentation

int16t get_chassis_load_state(void)
Function: acquire setting value of chassis based on controllingparameter of different loading
Parameter: none
Return value:
0: no-load control parameter;
1: full load controlling parameter

int16t get_chassis_mode(void)
Function: acquire working mode of chassis finite state machine(FSM)
Parameter: none
Return value: 0 locking mode;

42

1 vehicle control mode;
2 pushing mode;
3 emergency stop mode;
4 error mode

int16t get_ctrl_cmd_src(void)
Function: acquire command origin of motor chassis control
Parameter: none
Return value:
0: control vehicle with remote controller;
1: control vehicle with host computer

int16t get_vehicle_meter(void)
Function: acquire the mileage since the chassis is power up
Parameter: none
Return value: mileage value, unit meter43

uint16t get_host_version(void)
Function: acquire the host computer software version
Parameter: none
Return value: host computer software version number

uint16t get_chassis_central_version (void)
Function: acquire the central board firmware version
Parameter: none
Return value: the central board firmware version number

uint16t get_chassis_motor_version (void)
Function: acquire the motor board firmware version
Parameter: none
Return value: the motor board firmware version number

int16_t get_line_forward_max_vel_fb (void)44

Function: acquire the forward speed limiting feedback value of thechassisParameter:

None

Return value: the forward speed limiting feedback value of thechassisint16_t get_line_backward_max_vel_fb (void)
Function: acquire the backward speed limiting feedback value ofthe chassis
Parameter:

None

Return value: the backward speed limiting feedback value of thechassisint16_t get_angular_max_vel_fb (void)
Function: acquire the angular speed limiting feedback value of thechassisParameter:

None

45

Return value: the angular speed limiting feedback value of thechassisint16_t getIapTotalProgress (void)
Function: Get the progress of IAP upgrades
Parameter:

None

Return value:-1: IAP upgrade failed
0: IAP upgrades are idle or started or interrupted
100: IAP upgrade completed
Other: Percentage of IAP upgrade progress

void iapCentralBoard (void)
Function: IAP upgrade of the central board firmware of the chassis
Parameter:

None

Return value: none46Note: You need to place the central board firmware "central.bin" inthe path of "/sdcard/firmware/" in advance.

void iapMotorBoard (void)
Function: IAP upgrade of the motor board firmware of the chassis
Parameter:

None

Return value: none
Note: You need to place the motor board firmware "motor.bin" in thepath of "/sdcard/firmware/" in advance.

bool isHostIapOver (void)
Function: Query if the IAP upgrade process has ended
Parameter:

None

Return value: true: the IAP completes or fails or is interruptedFalse: IAP not started or in progress

Int16_t getHostIapResult (void)47

Function: acquire the reason for the end of IAP
Parameter:

None

Return value:
3: IAP completes
4: IAP fails
5: IAP is interrupted
Others: IAP not started or in progress

Int16_t getHostIapErrorCode (void)
Function: Gets the error code for IAP failure
Parameter:

None

Return value: the error code for IAP failure

int16_t get_chassis_hang_mode(void)
Function: Gets the setting state of chassis hang_mode
Parameter:

None

Return value:48

1: The chassis is in hang_mode
0: The chassis is not in hang_mode

int16_t get_charge_mos_ctrl_status (void)
Function: Gets the status of switch for charging MOS on the central
board.
Parameter:

None

Return value:
1: The MOS opened
0: The MOS closed

void set_cmd_vel(double linearx,double angularz)
Function: set up the command value of chassis target speed, whichneeds to be regular transmit once the chassis is enabled. It will be
determined as communication failure if the chassis can’t receive thecommand value in continuous 150ms in controlling mode.
Parameter: linear_x: linear velocity command value, unit m/s;
angular_z: angular velocity command value, unit rad/s
49

Return value: none

void set_line_forward_max_vel(double linearforwardmax_x)
Function: set up the max forward linear velocity value of chassis.
Parameter: linearforwardmax_x: max forward linear velocity value ofchassis, unit m/s, range 0-3
Return value: none

void set_line_backward_max_vel(double linearbackwardmax_x)
Function: set up the max backward linear velocity value of chassis.
Parameter: linearbackwardmax_x: max backward linear velocity
value of chassis, unit m/s, range -2-0
Return value: none

void set_angular_max_vel(double angularmax_z)
Function: set up the max angular velocity command value of chassis.

50

Parameter: angularmaxz: the max angular velocity command value,
unit rad/s, range 0-3
Return value: none

void set_enable_ctrl(uint16t enableflag)
Function: set up to enable the chassis to control the vehicle.
Parameter: enable_flag:
1 enable the vehicle control;
0 exit the vehicle control
Return value: none

void set_smart_car_serial(const char * serialno)
Function: set up the terminal name of serial port of host computer,e.g. ttyUSB0.
Parameter: serial_no: terminal name of serial port, under the path/dev/ by default, e.g. “ttyUSB0”
Return value: none51

void set_comu_interface (comu_choice_e comu_choice)
Function: Set up the communication interface between the hostcomputer and the chassis, including serial communication and CAN
communication
Parameter: comu_choice:‘comu_serial’ Use a serial port for communication‘comu_can’ Use a CAN port for communication
Return value: none

void set_chassis_load_state(int16t newLoadSet)
Function: set up the parameter of chassis control based on the
different chassis load.
Parameter: newLoadSet:
0: no-load parameter;
1: full load parameter
Return value: none52

void set_chassis_poweroff (void)
Function: chassis power off controlled by host computer.
Parameter: none
Return value: none

void set_remove_push_cmd(void)
Function: when the chassis is in the pushing mode, it can exit thismode under the control of host computer.
Parameter: none
Return value: none

void setHostIapCanceled (void)
Function: Interrupt the IAP upgrade process.
Parameter: none
Return value: none53

void set_chassis_hang_mode(int16_t enterHand)
Function: The chassis is configured to be in hang test mode. Whenin hang_ode, the chassis can be controlled normally.
Parameter : enterHand：
1： Config the chassis to be in hang_mode;
0： Config the chassis to be in non hang_mode.
Return value: none

void set_charge_mos_ctrl (bool on)
Function: Sets the switch for charging MOS on the central board.
Parameter : enterHand： 1： Turn on the charging MOS switch;​
0： Turn off the charging MOS switch.
Return value: none

54