作者: Herman Ye @Galbot @Auromix
版本: V1.0
测试环境: Ubuntu20.04 VMWARE
更新日期: 2023/08/04
注1: 本文内容中的硬件由 @Galbot 提供支持。
注2: @Auromix 是一个机器人爱好者开源组织。
注3: 本文在更新日期经过测试,确认有效。
以下内容参考宇树官方的Z1 Docs。
由宇树官方材料提供的图片、文字等版权归宇树所有。
部分示意图片源于网络,侵删。
直接在系统网络设置的如下界面更改: Settings -> Network -> PCI/USB Ethernet (点击需要使用的网口后面的齿轮图标)
图源自宇树Unitree Z1机械臂 Docs
注意: Z1机械臂存在两个网口,如图所示,所连网口应当为主网口。
ping 192.168.123.110
注意: Z1硬件特性,上电前先将机械臂手动回至零位。
# Install libboost-dev libeigen3-dev
sudo apt install -y libboost-dev libeigen3-dev
sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen
sudo ln -s /usr/include/eigen3/unsupported /usr/local/include/unsupported
# Install pybind11
git clone https://github.com/pybind/pybind11.git
cd pybind11
mkdir build && cd build
cmake .. -DPYBIND11_TEST=OFF
make -j
sudo make install
cd ~
mkdir -p test_ws/src
cd test_ws/src
git clone https://github.com/unitreerobotics/z1_controller.git
cd z1_controller
mkdir build & cd build
cmake ..
make
git clone https://github.com/unitreerobotics/z1_sdk.git
cd z1_sdk
mkdir build & cd build
cmake ..
make
警告: 运行demo前请注意机械臂当前的工作空间环境,警惕安全风险。
# Terminal 1
cd z1_controller/build
./z1_ctrl
# Terminal 2
cd z1_sdk/build
./highcmd_basic
注意: 创建单独的工作空间,避免z1_controller
和z1_sdk
与以下其他包共同编译失败。
cd ~
mkdir -p unitree_ws/src
cd unitree_ws/src
前往unitree_ros_to_real下载unitree_legged_msgs
或者直接git clone。
git clone https://github.com/unitreerobotics/unitree_ros_to_real.git
手动摘取该文件夹放置于test_ws/src
git clone https://github.com/unitreerobotics/unitree_ros.git
注意: z1_controller和z1_sdk使用catkin_make无法正确编译,因为不能放在同一工作空间中。
cd ~/unitree_ws #打开该文件夹
catkin_make #初始化ROS工作空间
echo "source ~/unitree_ws/devel/setup.bash">>~/.bashrc #将ros路径添加到环境变量,可由pwd命令获取当前路径替换该路径
source ~/.bashrc #更新环境变量
警告: 运行demo前请注意机械臂当前的工作空间环境,警惕安全风险。
# Try demo with gripper
roslaunch unitree_gazebo z1.launch
# Try demo without gripper
roslaunch unitree_gazebo z1.launch UnitreeGripperYN:=false
cd ~/test_ws/src
cd z1_controller/build
./sim_ctrl
cd ~/test_ws/src
cd z1_sdk/build
./highcmd_basic
具体的操控方式参考Unitree Z1 Keyboard demo
cd ~/test_ws/src
cd z1_controller/build
./z1_ctrl k # Keyboard control mode
State | KeySwitch | Switchable |
---|---|---|
BACKTOSTART | ~ | 1 2 |
PASSIVE | 1 | ~ 2 3 |
JOINTCTRL | 2 | ~ 1 3 4 5 6 7 8 9 0 - |
CARTESIAN | 3 | ~ 1 2 4 5 6 9 |
MoveJ | 4 | ~ 1 2 3 5 6 9 |
MoveL | 5 | ~ 1 2 3 4 6 9 |
MoveC | 6 | ~ 1 2 3 4 5 9 |
TEACH | 7 | ~ 1 2 |
TEACHREPEAT | 8 | automatically switched to 2 |
SAVESTATE | 9 | automatically switched to 2 |
TOSTATE | 0 | automatically switched to 2 |
CALIBRATION | = | automatically switched to 1 |
手柄没电,不测了,参考Unitree Z1 Joypad demo。
宇树的z1_ros包中提供了moveit的使用demo,但是,这个包的兼容性较差,属于历史遗留问题。
注意:
z1_ros
包中的z1_controller
和https://github.com/unitreerobotics/z1_controller
中的 z1_controller
不同,并且https://github.com/unitreerobotics/z1_sdk
与z1_ros
不兼容。
sudo apt install -y libboost-all-dev libeigen3-dev liburdfdom-dev
sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen
sudo ln -s /usr/include/eigen3/unsupported /usr/local/include/unsupported
使用一键安装moveit脚本进行安装和测试,随后再执行以下命令:
sudo apt install -y ros-noetic-moveit-*
sudo apt install -y ros-noetic-joint-trajectory-controller ros-noetic-trac-ik-kinematics-plugin
# Install pinocchio
cd ~
git clone --recursive https://github.com/stack-of-tasks/pinocchio
cd pinocchio && mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_PYTHON_INTERFACE=OFF \
-DBUILD_TESTING=OFF
make
sudo make install
~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
LD_LIBRARY_PATH:
LD_LIBRARY_PATH
是用来指定共享库(动态链接库)的搜索路径。LD_LIBRARY_PATH
中指定的路径来查找该可执行文件所需的共享库文件。LD_LIBRARY_PATH
中,可以确保程序能够找到并正确加载所需的共享库。CMAKE_PREFIX_PATH:
CMAKE_PREFIX_PATH
是用来指定 CMake 在搜索依赖库和包时的基本路径。CMAKE_PREFIX_PATH
,可以告诉 CMake 在这些路径下搜索依赖项。PKG_CONFIG_PATH:
PKG_CONFIG_PATH
是用来指定 pkg-config
工具搜索 .pc 文件的路径。
pkg-config
是一个用于检查和获取依赖库信息的工具,它通常用于帮助编译时找到依赖库的头文件和链接选项。
通过将 .pc
文件所在的路径添加到 PKG_CONFIG_PATH
中,可以让 pkg-config
找到正确的依赖库信息,从而在编译时顺利链接和编译代码。
安装pybind11
# Install pybind11
git clone https://github.com/pybind/pybind11.git
cd pybind11
mkdir build && cd build
cmake .. -DPYBIND11_TEST=OFF
make -j
sudo make install
unitree_legged_msgs
或者直接git clone。git clone https://github.com/unitreerobotics/unitree_ros_to_real.git
获取 unitree_legged_msgs
手动摘取该文件夹放置于z1_ws/src
安装配置z1_ros包
mkdir -p ~/z1_ws/src
cd ~/z1_ws/src
git clone --recursive https://github.com/unitreerobotics/z1_ros.git
cd ..
rosdep install --from-paths src --ignore-src -yr --rosdistro noetic
# compile unitree_legged_msgs first
catkin_make --pkg unitree_legged_msgs
catkin_make
source devel/setup.bash
注意: 对于虚拟机,如果性能有限,可以尝试 catkin_make -j2
source /opt/ros/noetic/setup.bash
source ~/z1_ws/devel/setup.bash
roslaunch z1_bringup real_arm.launch rviz:=true
其他诸如UDP控制电机等的demo,参考Unitree Z1的使用。