FIBOT Docs

Manual book for Fibot

FIBOT 4X Manual


FIBOT 4X Manual

PoweringUp

Before Powering Up

1717591522828.jpg


PowerUp

WechatIMG536.jpgWechatIMG537_副本.jpg

FIBOT 4X Manual

Try Out

When the bot successfully boots, the images from the RGBD camera will shou up on the screen. And all leds on the arm will turn green.

PLEASE make sure you WAIT for the leds to turn green. Do NOT move the arms before it's ready or people might get hurt.

Opreate the arm

The robot is equipped with a mechanical arm base, allowing users to conveniently place the mechanical arm on the base to prevent it from moving randomly.

截屏2024-07-05 18.59.33.jpg

Move the robot around

To move the robot around, you don't have to use a remote(You can if you want though). Just grab the hand rail, and push/pull the robot anywhere you want. In free movement mode, you can move the robot forward and backward, left and right, and rotate it freely. 

截屏2024-07-05 19.04.25.jpg

Use the arm lifter

We have designed a lifting platform for the mechanical arm to expand its workspace. You can use the blue rotary button on the handle to control the height of the lifting platform.

The lifting platform dramatically increased the workspace of the mechanical arm, enabling vertical opreation.

image.png

image.png

FIBOT 4X Manual

Developing

Where is the code

Currently, the PC has a debian installed. ROS is running inside docker images.

Using docker has obvious advantanges

Curretly, this device has 3 docker containers on it

The docker file and contents inside are just laying on the disk. It's up to you to decide to keep using docker or not. Just read the docker file, it is reall easy to understand what's going on. If you somehow want to install a Ubuntu 20.04 (ROS2 is impossible because the Ark5 Arm does not support ROS2 yet) and run ROS bare metal, read the following instructions.

Getting HEXMOVE ROS SDK

Please visit https://docs.hexmove.cn/books/public-hexmove-docs/chapter/ros-sdk-user-guide for instructions on how to download and use the HEXMOVE ROS SDK.

Work Gracefully with the robot

We have a small platform so you could place keyboard/laptop on it, and dev like a pro.

key.jpglaptop.jpg

FIBOT-4A Manual v1.0


FIBOT-4A Manual v1.0

Prepare Hardware

1. Handle Button Function Description

1.1 Tower handle

At the back of the tower, there is a handle button area, as shown in the figure below.

image.png

When the up button is pressed, the robotic arm platform rises. When the down button is pressed, the robotic arm platform lowers. When the unlock button is pressed, the chassis parking lock is released.


1.2 Rear platform handle

1729683161086.png

As shown in the left image above, the rear platform has two handles, each with two buttons. When the buttons on the back part of the handle, outlined in the red box in the left image, are pressed simultaneously, the chassis parking lock mode is released, allowing the chassis to be freely moved. In the right image above, there is another button below the handle, which is used to control the lifting. Pressing it will control the ascent or descent of the robotic arm platform in front

The two handles are not suitable for lifting the robot.


2. Rear Platform Keyboard Placement Instructions

There are two black plastic components on the rear platform, designed to position the accompanying Logitech keyboard and prevent it from moving, as shown in the image.

image.png


3. Rear Platform Disassembly Instructions

Considering that the robot may need to operate without the rear platform, the rear platform is designed to be removable. The specific removal method is shown in the image: unscrew the six screws indicated by the red arrows.

image.png


4. Front Paltform Installation Instructions

 

First of all, when installing the front platform, note that the pink arrow with the number 5 should face outward, consistent with the position in the image below.

3243bebb56db5e8998a70012bc560be.jpg

 

In the second step, the parts fixing the aluminum tube are fixed by screws, as shown in the following figure.

f1d55375320f73058b248c21c463456.jpg

Note that if installed according to the first step, the mounting plane of the mechanical arm is horizontal at this time, as shown in the following figure.94f8d8d6b8a948331339f9630e74963.jpg

 

In the last step, the plastic parts of the cover plate are installed on the aluminum workpiece in the middle of the platform by screws, as shown in the following figure.

0f4c4924a72e491f73dc0fba6150170.jpg


5. Wiring Instructions

5.1 Rear Platform Main Power Wiring

image.png

The rear platform has a black 4-pin aviation connector, which should be plugged into the socket located at the base of the tower, as shown in the image.


5.2 Three USB ports on the top of the tower

1729687355678.png

There are three USB 3.0 ports at the top of the tower, as shown in the left image, reserved for connecting cameras. The cables for these ports have already been extended to the base of the tower. You will need to connect the other end of these three USB ports to the industrial computer, as shown in the right image.


5.3 Industrial Computer Power Wiring

1729687450726.png

As shown in the upper left image, the power port of the industrial computer is located at the bottom of the unit. The green terminal needs to be plugged into the position indicated in the right image.


5.4 Screen Wiring

1729687525563.png

The HDMI port and TYPE-C power port of the screen are located on the right side of the screen, as shown in the left image. The HDMI cable and power cable need to be connected to the position shown in the right image.


5.5  Chassis Battery Wiring and Installation

1729687595344.png

As shown in the figure above, lay the robot flat and use an appropriately sized object to prop up the front. This will reveal the battery compartment, as shown in the right image. The power cable, covered with masking tape, can be seen.

1729687625724.png

Next, remove the masking tape and connect this power cable to the battery's power cable.

image.png

The final step is to place the battery into the chassis battery compartment and tighten the eight securing screws.



5.6 Ethernet Port Wiring

image.png

A router has already been installed inside the tower, and a network cable connected to the internal router is extended out. This network cable can be connected to any of the Ethernet ports indicated in the diagram.

1729687836932.png

There is an Ethernet port extended from the internal router located at the back of the industrial computer bracket, as shown in the two images above. This is a spare port used for debugging.


6. Robotic Arm Power Supply Instructions

6.1 Rear Platform Robotic Arm Power Cable

image.png

As shown in the above image, there is an XT30 power cable on each end of the rear platform, which is used to supply power to the teaching robotic arm on the rear platform.


6.2 Front Platform Robotic Arm Power Cable

1729688006011.png

As shown in the figure, each end of the front robotic arm installation platform has an XT30 power cable reserved for powering the robotic arm.

FIBOT-4A Manual v1.0

PoweringUp

1.Start Chassis

Turn the red rotary switch on the chassis to start the power of the entire machine. You will hear three beeps from the buzzer.The chassis can now be controlled with the remote, and power has been supplied to the robotic arm, lift mechanism, and computer.

1729690390233.png


2.Turn on Computer

If the computer does not start automatically, press the power button on the computer.

1729690928279.png

FIBOT-4A Manual v1.0

Start Developing

FIrst, make sure you have Ubuntu and ROS installed. Then please refer to https://docs.hexmove.cn/books/public-hexmove-docs/page/ros-sdk to install the SDK. Fibot SDK is in category Trigger.

FIBOT-4A Manual v1.0

CAN Protocol (Lifting Platform)


Enable command
Sender Receiver CAN ID DLC Period(ms)
Controller Lifting Platform 0x03020103
4 /
data function data type description
byte[0] / uint8 Fixed value 0x03
byte[1] / uint8 Fixed value 0x02
byte[2] / uint8 Fixed value 0x01
byte[3] enable uint8 0-disable 1-enable
 
Heartbeat feedback
Sender Receiver CAN ID DLC Period(ms)
Lifting Platform Controller 0x030201B0
1 500ms
data function data type description
byte[0] enable uint8 0-disable 1-enable
 
Status command
Sender Receiver CAN ID DLC Period(ms)
Controller Lifting Platform 0x03020111
3 /
data function data type description
byte[0] return to zero point uint8 1-start
byte[1] max move velocity[0:7] uint16 unit: mm/s
byte[2] max move velocity[8:15]
 
Status feedback
Sender Receiver CAN ID DLC Period(ms)
Lifting Platform Controller 0x030201B1
6 100ms
data function data type description
byte[0] status uint8 0:normal 1:abnormal
byte[1] return to zero point status uint8 0-finished 1-calibrating
byte[2] errorcode [0:7] uint16  
byte[3] errorcode[8:15]
byte[4] max move velocity [0:7] uint16  
byte[5] max move velocity[8:15]
 
Request move range command
Sender Receiver CAN ID DLC Period(ms)
Controller Lifting Platform 0x03020112
0 /
data function data type description
/ / / /
 
Request move range feedback
Sender Receiver CAN ID DLC Period(ms)
Lifting Platform Controller 0x030201B2
6 /
data function data type description
byte[0] move range[0:7] uint16 unit: mm
byte[1] move range[8:15]
byte[2]-byte[5] reverse uint8 0
 
Move velocity feedback
Sender Receiver CAN ID DLC Period(ms)
Lifting Platform Controller 0x030201B3
6 50ms
data function data type description
byte[0] velocity[0:7] uint16 unit: mm/s
byte[1] velocity[8:15]
byte[2]-byte[5] reverse uint8 0
 
Position setting command
Sender Receiver CAN ID DLC Period(ms)
Controller Lifting Platform 0x03020114
6 /
data function data type description
byte[0] position[0:7] uint16 unit: mm
byte[1] position[8:15]
byte[2]-byte[5] reverse uint8 0
 
Move position feedback
Sender Receiver CAN ID DLC Period(ms)
Lifting Platform Controller 0x030201B4
6 50ms
data function data type description
byte[0] real position[0:7] uint16 unit: mm
byte[1] real position[8:15]
byte[2]-byte[5] reverse uint8 0
         

Example

1. Enable device

CAN ID: 0x03020103, Data: 03 02 01 01

2. Set position 100mm

CAN ID: 0x03020114, Data: 64 00 00 00 00 00

FIBOT-4A Manual v1.0

CAN Protocol (Chassis)

Reset
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX00
XX: driver id, can be 1 or 2 or 3
8 /
data function data type description
byte[0] / uint8 Fixed value 0x55
byte[1] / uint8 Fixed value 0x55
byte[2] / uint8 Fixed value 0x55
byte[3] / uint8 Fixed value 0x55
byte[4] / uint8 Fixed value 0x55
byte[5] / uint8 Fixed value 0x55
byte[6] / uint8 Fixed value 0x55
byte[7] / uint8 Fixed value 0x55
 
Driver mode switch
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX01
XX: driver ID. Can be 1 or 2 or 3
8 /
data function data type description
byte[0] mode uint8 2-open loop mode
3-velocity loop mode
4-position velocity loop mode
5-current loop mode
6-velocity current loop mode
7-position velocity current loop mode
Note: typically the velocity current loop mode should be used. If you want to switch mode, you need to send reset first
byte[1] / uint8 Fixed value 0x55
byte[2] / uint8 Fixed value 0x55
byte[3] / uint8 Fixed value 0x55
byte[4] / uint8 Fixed value 0x55
byte[5] / uint8 Fixed value 0x55
byte[6] / uint8 Fixed value 0x55
byte[7] / uint8 Fixed value 0x55
 
Open loop mode control
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX02
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] pwm_duty [15:8] int16 range [-3000,3000]
byte[1] pwm_duty [7:0]
byte[2] / uint8 Fixed value 0x55
byte[3] / uint8 Fixed value 0x55
byte[4] / uint8 Fixed value 0x55
byte[5] / uint8 Fixed value 0x55
byte[6] / uint8 Fixed value 0x55
byte[7] / uint8 Fixed value 0x55
 
Velocity mode control
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX03
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] pwm_duty [15:8] int16 range [-3000,3000]
byte[1] pwm_duty [7:0]
byte[2] velocity [15:8] int16 unit: rpm, range [-500,500]
byte[3] velocity [7:0]
byte[4] / uint8 Fixed value 0x55
byte[5] / uint8 Fixed value 0x55
byte[6] / uint8 Fixed value 0x55
byte[7] / uint8 Fixed value 0x55
 
Position velocity mode control
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX04
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] pwm_duty [15:8] int16 range [-3000,3000]
byte[1] pwm_duty [8:0]
byte[2] velocity [15:8] int16 unit: rpm, range [-500,500]
byte[3] velocity [8:0]
byte[4] position[31:24] int32 range [-4096,4096]
byte[5] position[23:16]
byte[6] position[15:8]
byte[7] position[7:0]
 
Current loop mode control
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX05
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] current [15:8] int16 unit: 10mA, range [-7000,7000]
byte[1] current [7:0]
byte[2] / uint8 Fixed value 0x55
byte[3] / uint8 Fixed value 0x55
byte[4] / uint8 Fixed value 0x55
byte[5] / uint8 Fixed value 0x55
byte[6] / uint8 Fixed value 0x55
byte[7] / uint8 Fixed value 0x55
 
Velocity current mode control
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX06
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] current [15:8] int16 unit: 10mA, range [-7000,7000]
byte[1] current [7:0]
byte[2] velocity [15:8] int16 unit: rpm, range [-500,500]
byte[3] velocity [7:0]
byte[4] / uint8 Fixed value 0x55
byte[5] / uint8 Fixed value 0x55
byte[6] / uint8 Fixed value 0x55
byte[7] / uint8 Fixed value 0x55
 
Position velocity current mode control
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX07
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] current [15:8] int16 unit: 10mA, range [-7000,7000]
byte[1] current [8:0]
byte[2] velocity [15:8] int16 unit: rpm, range [-500,500]
byte[3] velocity [8:0]
byte[4] position[31:24] int32 range [-4096,4096]
byte[5] position[23:16]
byte[6] position[15:8]
byte[7] position[7:0]
 
Set motor acceleration or deceleration
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX30
XX: driver ID. Can be 1 or 2 or 3
8 /
data function data type description
byte[0] open loop acc [15:8] uint16 if you set 1000,it means that the PWM duty cycle value takes 1 second to go from 0 to 1000
byte[1] open loop acc [7:0]
byte[2] open loop dec [15:8] uint16 if you set 1000,it means that the PWM duty cycle value takes 1 second to go from 1000 to 0
byte[3] open loop dec [7:0]
byte[4] velocity loop acc[15:8] uint16 if you set 100,it means that the rpm value takes 10 second to go from 0 rpm to 1000 rpm
byte[5] velocity loop acc [7:0]
byte[6] velocity loop dec[15:8] uint16 if you set 100,it means that the rpm value takes 10 second to go from 1000 rpm to 0 rpm
byte[7] velocity loop dec [7:0]
 
set velocity loop(without current loop)PID param cmd
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX40
XX: driver ID. Can be 1 or 2 or 3
8 The driver has default parameters that are sent when they need to be modified
data function data type description
byte[0] P [31:24] float Proportion param
byte[1] P[23:16]
byte[2] P[15:8]
byte[3] P[7:0]
byte[4] I [31:24] float Integral param
byte[5] I[23:16]
byte[6] I[15:8]
byte[7] I[7:0]
 
set position loop(without current loop)PID cmd
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX41
XX: driver ID. Can be 1 or 2 or 3
8 The driver has default parameters that are sent when they need to be modified
data function data type description
byte[0] P [31:24] float proportion param
byte[1] P[23:16]
byte[2] P[15:8]
byte[3] P[7:0]
byte[4] D [31:24] float differential param
byte[5] D[23:16]
byte[6] D[15:8]
byte[7] D[7:0]
 
set current loop PID cmd
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX42
XX: driver ID. Can be 1 or 2 or 3
8 The driver has default parameters that are sent when they need to be modified
data function data type description
byte[0] P [31:24] float proportion param
byte[1] P[23:16]
byte[2] P[15:8]
byte[3] P[7:0]
byte[4] I [31:24] float Integral param
byte[5] I[23:16]
byte[6] I[15:8]
byte[7] I[7:0]
 
set velocity loop(with current loop)PID cmd
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX43
XX: driver ID. Can be 1 or 2 or 3
8 The driver has default parameters that are sent when they need to be modified
data function data type description
byte[0] P [31:24] float proportion param
byte[1] P[23:16]
byte[2] P[15:8]
byte[3] P[7:0]
byte[4] I [31:24] float Integral param
byte[5] I[23:16]
byte[6] I[15:8]
byte[7] I[7:0]
 
set position loop(with current loop)PID cmd
Sender Receiver CAN ID DLC Period(ms)
Controller Motor driver 0x0505XX44
XX: driver ID. Can be 1 or 2 or 3
8 The driver has default parameters that are sent when they need to be modified
data function data type description
byte[0] P [31:24] float proportion param
byte[1] P[23:16]
byte[2] P[15:8]
byte[3] P[7:0]
byte[4] D [31:24] float differential param
byte[5] D[23:16]
byte[6] D[15:8]
byte[7] D[7:0]
 
motor position velocity current feedback
Sender Receiver CAN ID DLC Period(ms)
Motor driver Controller 0x0505XXB1
XX: driver ID. Can be 1 or 2 or 3
8 10ms
data function data type description
byte[0] current [15:8] int16 unit: 10mA
byte[1] current [8:0]
byte[2] velocity [15:8] int16 unit: rpm
byte[3] velocity [8:0]
byte[4] position[31:24] int32 unit: qc
byte[5] position[23:16]
byte[6] position[15:8]
byte[7] position[7:0]
 
Driver status feedback
Sender Receiver CAN ID DLC Period(ms)
Motor driver Controller 0x0505XXB2
XX: driver ID. Can be 1 or 2 or 3
8 100ms
data function data type description
byte[0] pwm duty [15:8] int16  
byte[1] pwm duty [8:0]
byte[2] voltage [15:8] uint16 unit: 0.01V
byte[3] voltage [8:0]
byte[4] MOSFET temperature uint8 unit: ℃
byte[5] motor temperature uint8 unit: ℃
byte[6] error uint8 0-normal
1-voltage over low
2-voltage over high
3-mosfet overtemperature
4-motor overtemperature
5-motor over current
6-encoder disconnect
7-encoder feedback direction is incorrect
8-encoder leads are not secure
9- hall sensor is abnormal
byte[7] warning uint8 bit0-can watchdog timeout
bit1-there is a gap in the Hall sensor
 
vcu error feedback
Sender Receiver CAN ID DLC Period(ms)
VCU Controller 0x011101BA 8 100ms
data function data type description
byte[0] reverse uint8 0
byte[1] reverse uint8 0
byte[2] reverse uint8 0
byte[3] error uint8 bit0-Low battery warm
bit1-Low battery error
bit2-reverse
bit3-emergency stop
byte[4] reverse uint8 0
byte[5] reverse uint8 0
byte[6] reverse uint8 0
byte[7] reverse uint8 0
 
VCU ctrl mode switch
Sender Receiver CAN ID DLC Period(ms)
VCU Controller 0x01110111 8 /
data function data type description
byte[0] VCU mode uint8 0-standby
1-reverse
2-VCU CAN mode
3-free mode
4-passthrough mode
Note: After powering on, it is in passthrough mode by default
byte[1] reverse uint8 0
byte[2] reverse uint8 0
byte[3] error uint8 0
byte[4] reverse uint8 0
byte[5] reverse uint8 0
byte[6] reverse uint8 0
byte[7] reverse uint8 0
         

Velocity current mode example

1. Switch to velocity current mode

CAN ID: 0x05050101, Data: 06 55 55 55 55 55 55 55

2. Set target velocity to 500 rpm, current to 30000mA

CAN ID: 0x05050106, Data: 0B B8 01 F4 55 55 55 55