宇树Unitree Z1机械臂使用教程

news2024/9/29 9:37:53

宇树Unitree Z1机械臂使用教程

作者:Herman Ye @Galbot @Auromix
Auromix是一个机器人爱好者组织,欢迎参与我们Github上的开源项目
更新日期:2023/08/04
注意:此文档在该日期下测试有效。

以下内容参考宇树官方的Z1 Docs。
由宇树官方材料提供的图片、文字等版权归宇树所有。
部分示意图片源于网络,侵删。

一、建立机械臂通信

1.配置PC端IP

直接在系统网络设置的如下界面更改: Settings -> Network -> PCI/USB Ethernet (点击需要使用的网口后面的齿轮图标)
在这里插入图片描述
图源自宇树Unitree Z1机械臂 Docs

2.连接网线

注意: Z1机械臂存在两个网口,如图所示,所连网口应当为主网口。
在这里插入图片描述

3.尝试Ping通机械臂

ping 192.168.123.110

在这里插入图片描述

二、基本运行demo

注意: Z1硬件特性,上电前先将机械臂手动回至零位。

1.安装依赖

# 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

2.配置z1_controller

  • 下载z1_controller
cd ~
mkdir -p test_ws/src
cd test_ws/src
git clone https://github.com/unitreerobotics/z1_controller.git
  • 编译z1_controller
cd z1_controller
mkdir build & cd build
cmake ..
make

3.下载z1_sdk

  • 下载z1_sdk
git clone https://github.com/unitreerobotics/z1_sdk.git
  • 编译z1_sdk
cd z1_sdk
mkdir build & cd build
cmake ..
make

4.运行demo

警告: 运行demo前请注意机械臂当前的工作空间环境,警惕安全风险。

# Terminal 1
cd z1_controller/build
./z1_ctrl
# Terminal 2
cd z1_sdk/build
./highcmd_basic

三、ROS Gazebo仿真demo

0.配置环境

注意: 创建单独的工作空间,避免z1_controllerz1_sdk与以下其他包共同编译失败。

cd ~
mkdir -p unitree_ws/src
cd unitree_ws/src

1.下载 unitree_legged_msgs

前往unitree_ros_to_real下载unitree_legged_msgs或者直接git clone。

git clone https://github.com/unitreerobotics/unitree_ros_to_real.git

2.获取 unitree_legged_msgs

手动摘取该文件夹放置于test_ws/src

3.下载unitree_ros

git clone https://github.com/unitreerobotics/unitree_ros.git

4.编译

注意: z1_controller和z1_sdk使用catkin_make无法正确编译,因为不能放在同一工作空间中。
在这里插入图片描述

cd ~/unitree_ws                                            #打开该文件夹
catkin_make                                                 #初始化ROS工作空间
echo "source ~/unitree_ws/devel/setup.bash">>~/.bashrc     #将ros路径添加到环境变量,可由pwd命令获取当前路径替换该路径
source ~/.bashrc                                            #更新环境变量

5.运行demo

警告: 运行demo前请注意机械臂当前的工作空间环境,警惕安全风险。

  • 运行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
  • 运行sdk
cd ~/test_ws/src
cd z1_sdk/build
./highcmd_basic

注意: 在虚拟机环境下可能出现图形驱动问题
在这里插入图片描述

四、键盘控制demo

1.运行z1_ctrl k

具体的操控方式参考Unitree Z1 Keyboard demo

cd ~/test_ws/src
cd z1_controller/build
./z1_ctrl k # Keyboard control mode
StateKeySwitchSwitchable
BACKTOSTART~1 2
PASSIVE1~ 2 3
JOINTCTRL2~ 1 3 4 5 6 7 8 9 0 -
CARTESIAN3~ 1 2 4 5 6 9
MoveJ4~ 1 2 3 5 6 9
MoveL5~ 1 2 3 4 6 9
MoveC6~ 1 2 3 4 5 9
TEACH7~ 1 2
TEACHREPEAT8automatically switched to 2
SAVESTATE9automatically switched to 2
TOSTATE0automatically switched to 2
CALIBRATION=automatically switched to 1

在这里插入图片描述

五、手柄控制demo

手柄没电,不测了,参考Unitree Z1 Joypad demo。

六、moveit 真实机械臂demo

宇树的z1_ros包中提供了moveit的使用demo,但是,这个包的兼容性较差,属于历史遗留问题。
注意:
z1_ros包中的z1_controllerhttps://github.com/unitreerobotics/z1_controller中的 z1_controller不同,并且https://github.com/unitreerobotics/z1_sdkz1_ros不兼容。

1.依赖安装

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

2.moveit和其他相关包安装

使用一键安装moveit脚本进行安装和测试,随后再执行以下命令:

sudo apt install -y ros-noetic-moveit-*
sudo apt install -y ros-noetic-joint-trajectory-controller ros-noetic-trac-ik-kinematics-plugin

3.安装其他依赖

  • 安装pinocchio
# 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 构建项目时,通常需要找到依赖库和包的位置。通过设置 CMAKE_PREFIX_PATH,可以告诉 CMake 在这些路径下搜索依赖项。
  • 这个环境变量通常用于帮助 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

4.下载编译安装包

  • 下载 unitree_legged_msgs
    前往unitree_ros_to_real下载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

4.开始测试

  • 设置环境
source /opt/ros/noetic/setup.bash
source ~/z1_ws/devel/setup.bash
  • 启动demo
roslaunch z1_bringup real_arm.launch rviz:=true

七、其他demo

其他诸如UDP控制电机等的demo,参考Unitree Z1的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/837577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea调节文字大小、日志颜色、git改动信息、单击打开代码覆盖原标签问题

idea调节菜单栏文字大小: 调节代码文字大小: 按住ctrl滚动滑轮可以调节代码文字大小: ctrl单击打开代码覆盖原标签问题: idea在控制台对不同级别的日志打印不同颜色 : “grep console”插件 点击某一行的时候&#x…

docker-compose --version报错

在部署docker-compose后,查看版本时有如下报错: 解决方法: 解决方法: 直接在release中下载对应的linux发行版【docker-compose-linux-x86_64】 https://github.com/docker/compose/releases/tag/v2.18.1 下载完后将软件上传至 Linux的【/usr/local/bin】…

高忆管理:教你一招短线选股法?

投资者在进行短线买卖时,需求把握一些可行的股票战略,以进步成功率。本文将从商场状况、技能剖析、基本面剖析和资金流向四个视点,教你一招短线选股法。 一、商场状况 在短线买卖中,行情是至关重要的。商场上有“牛市”和“熊市”…

【前端实习生备战秋招】—HTML面试题汇总,建议收藏

【前端实习生备战秋招】—HTML面试题汇总,建议收藏 文章目录 【前端实习生备战秋招】—HTML面试题汇总,建议收藏1. src和href的区别2. 对HTML语义化的理解3. DOCTYPE(⽂档类型) 的作⽤4. script标签中defer和async的区别5. 常⽤的meta标签有哪些6. HTML5…

14-3_Qt 5.9 C++开发指南_QUdpSocket实现 UDP 通信_UDP 单播和广播

文章目录 1.UDP通信概述2. UDP 单播和广播2.1 UDP 通信实例程序功能2.2 主窗口类定义和构造函数2.3 UDP通信的实现2.4 源码2.4.1 可视化UI设计2.4.2 mainwindow.h2.4.3 mainwindow.cpp 1.UDP通信概述 UDP(User Datagram Protocol,用户数据报协议)是轻量的、不可靠的…

hcip的mgre和ospf实验

题目 拓扑图 一、配置环回和IP地址 R1 < Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 64.1.1.1 24 Aug 4 2023 18:56:07-08:00 r1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol…

python 常见数据类型和方法

不可变数据类型 不支持直接增删改 只能查 str 字符串 int 整型 bool 布尔值 None None型特殊常量 tuple 元组(,,,)回到顶部 可变数据类型&#xff0c;支持增删改查 list 列表[,,,] dic 字典{"":"","": ,} set 集合("",""…

mysql函数及用法

目录 一、前言 二、函数 2.1五大聚合函数 2.2 日期函数 3.字符串函数 三. 总结&#xff1a; 一、前言 mySQL 是一种常见的关系型数据库管理系统&#xff0c;提供了大量的函数可以帮助开发者有效地操作和管理数据库。mySQL根据这些函数将数据更好的进行操作&#xff0c;从…

局域网部署,用WorkPlus视频会议保密又安全

用户采用私有化部署视频会议软件的情况主要有以下几种因素&#xff1a; 1. 针对机密性高的会议&#xff1a;如果有涉及高度机密的商业谈判或敏感信息交流等重要会议&#xff0c;政府、军工、企业等用户会选择局域网内部署视频会议软件&#xff0c;以保证信息安全。 2. 频繁进…

【云原生】k8s中Contrainer 生命周期回调/策略/指针学习

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;kubernetes_征服bug的博客-CSDN博客 目录 1 容器生命周期 2 容器生命周期回调/事件/钩子 3 容器重启策略 4 自定义容器启动命令 5 容器探针 1 容器生命周期 Kubernetes 会跟踪 Pod 中每个容器的状态&am…

【大数据】LPG日志采集方案(官网入门案例)

文章目录 1. LPG简介2. 安装3. 测试日志方案的效果3.1. 测试1&#xff1a;Promtail监控/var/log目录的变化3.2. 测试2&#xff1a;Grafana可视化查看日志3.3. 测试3&#xff1a;可以预见部署Spring Boot程序的日志也可以被Grafana查看3.4. 踩坑记录 4. 官方入门案例介绍4.1. 获…

收藏!9款好用的前端可视化工具推荐

“可视化开发”是上个世纪90年代软件界最大的热点之一。 当初&#xff0c;可视化开发主要专注于用户界面的构建&#xff0c;让开发者通过简单的拖拽操作&#xff0c;快速搭建用户界面&#xff0c;一些成熟产品更是实现了“所见即所得”。在与当时最先进的高级编程语言相比较时&…

基于freertos的温湿度蓝牙系统

前言&#xff1a;本项目主要是基于freertos的小项目&#xff0c;目的是为了巩固近期学习的知识&#xff0c;功能较简单&#xff0c;可自行扩充。 一、项目基本架构 项目基本功能&#xff1a;通过STM32单片机的freertos操作系统&#xff0c;将温湿度数据显示在oled屏幕上&#…

单片机复位电路分析

来分析一下这个电路&#xff1a; 首先这里面有电容&#xff0c;所以是一个动态电路。哈哈哈 假设左上角的电压源是5V的代号为VOLT。 可以知道电容capacitor C1左边的电压也是5V&#xff0c;电容中间隔着一个绝缘体&#xff0c;所以不导电&#xff0c; 这个时候电流无法通过…

【深度学习_TensorFlow】激活函数

写在前面 上篇文章我们了解到感知机使用的阶跃函数和符号函数&#xff0c;它们都是非连续&#xff0c;导数为0的函数&#xff1a; 建议回顾上篇文章&#xff0c;本篇文章将介绍神经网络中的常见激活函数&#xff0c;这些函数都是平滑可导的&#xff0c;适合于梯度下降算法。 写…

【Spring Boot】Thymeleaf模板引擎 — 表达式的语法

表达式的语法 模板的主要作用是将后台返回的数据渲染到HTML中。那么Thymeleaf是如何解析后台数据的呢&#xff1f;接下来从变量、方法、条件判断、循环、运算&#xff08;逻辑运算、布尔运算、比较运算、条件运算&#xff09;方面学习Thymeleaf表达式支持的语法。 1.赋值和拼…

eclipse Java Editor Templates

​ Window - Preferences - Java - Editor - Templates ​ date ${currentDate:date(yyyy.MM.dd)}

KubeSphere 社区双周报 | 本周六上海站 Meetup 准时开启 | 2023.7.21-08.03

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.07.21-2023.…

逆向时如何找到MingGW(GNU)编译程序的main函数

编译器是MingGW生成的可执行文件的显著特点是, 最终运行ZwContinue后程序就莫名其妙启动了, 也找不到main函数。 为了探究里面究竟怎么回事, 我找到了wrk-v1.2的源码, 其中包含了ZwContinue的实现, 首先先看一下注释, API界面包含了2个参数, 其中让人感兴趣的是PCONTEXT, 这是…

git merge 和rebase区别

Merge the incoming changes into the current branch 找到两个分支的祖先 commit&#xff0c;然后将公共分支最新版合并到自己的分支&#xff0c;形成一个新的 commit 提交&#xff0c;用图表示如下。 Rebase the current branch on top of the incoming Rebase 则是重新基于…