1 下载go1 sdk包
unitreerobotics/unitree_legged_sdk: SDK tools for control robots. (github.com)
下载解压后放于FairMOT-master/src下
2 环境与依赖
依赖项:
具体安装需要单独查询
Build环境:
在unitree_legged_sdk-go1文件夹下,终端运行:
mkdir build
cd build
cmake -DPYTHON_BUILD=TRUE ..
make
若不使用python则,上述第三条指令更改为:
cmake ..
其它问题:
若提示找不到pybind11 headers,则在python_wrapper/CMakeLists.txt第14行添加:
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/third-party/pybind11/include)
若提示找不到msgpack.hpp,则:
sudo apt install libmsgpack*
3 编写接口代码
A1控制包:
A1 调用逻辑:
程序计算得到前进速度forwardspeed和旋转速度rotatespeed
↓
调用unitree_legged_sdk/scripts/Unitree_Python_sdk.py的robot_walking函数,传入forwardspeed和rotatespeed
↓
Unitree_Python_sdk.py获取速度指令和状态等参数,然后调用unitree_legged_sdk/src/python_interface_high_cmd.cpp中的RobotInterface类
↓
mode=2时,velocity[0] = forwardSpeed ; cmd.velocity[1] = sidewaySpeed ; cmd.yawSpeed = rotateSpeed;,即将速度指令传递给机器人控制器了
编写接口代码
仿照A1的Unitree_Python_sdk.py,python_interface_high_cmd.cpp,即go1的例程example_walking.py,改写接口代码Unitree_Robot.py,与example_walking.py位于相同目录下
注意import:
import sys
sys.path.append('/home/robot112/FairMOT-master/src/unitree_legged_sdk-go1/lib/python/amd64') # Edit the path to "build" folder on your computer
import robot_interface as robot_interface
注意更改utils:
import sys
sys.path.append("/home/robot112/FairMOT-master/src/unitree_legged_sdk-go1/example_py")
import Unitree_Robot as Unitree_Python_sdk
改动代码后需要重新make:
在刚刚的build文件夹下:
cmake -DPYTHON_BUILD=TRUE ..
make
4 运行跟踪代码
4.1 连线
主机、电池、适配器
摄像头
外接屏幕、键盘鼠标
4.2 启动Go1
短按+长按开启本体电源(等待一段时间进行开机自检,自检成功机器人会站起来)
短按+长按开启手柄电源
# 调试代码时可以令机器人趴下并进入低功率状态
L2+A L2+A L2+B
# 趴着→站立
L2+A L2+A START
4.3 连接wifi与teamviewer
手机与主机都处于go1的wifi下,手机使用teamviewer远程连接主机:
访问的ip为192.168.12.30
访问密码为112Lab.+
连接成功后断开屏幕、鼠标键盘的有线连接,插上显卡欺骗器
4.4 运行跟踪程序
确保主机和摄像头固定住,且没有与其它设备进行有线连接
手柄控制机器人至空旷地带
目标位于机器人前方2m(程序设定跟踪目标id为1)
手机上运行程序即可
附录:解决realsense摄像头数据画面发绿
FairMOT-master/src/lib/datasets/dataset/jde.py
初始化相机数据管道的这四行代码应该放在def __init__中,
对齐部分的代码放在迭代器def __next__(self)中