宇树Unitree Z1机械臂使用教程

宇树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的使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript |(四)正则表达式 | 尚硅谷JavaScript基础实战

学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 📚正则表达式📚正则表达式字面量方式📚字符串&正则表达式🐇split()🐇search()🐇match()🐇replace()…

Vue3_语法糖—— <script setup>以及unplugin-auto-import自动引入插件

<script setup>import { ref , onMounted} from vue;let obj ref({a: 1,b: 2,}); let changeObj ()>{console.log(obj)obj.value.c 3 //ref写法}onMounted(()>{console.log(obj)})</script> 里面的代码会被编译成组件 setup() 函数的内容。 相当于 <…

牛客网Verilog刷题——VL51

牛客网Verilog刷题——VL51 题目答案 题目 请编写一个十六进制计数器模块&#xff0c;计数器输出信号递增每次到达0&#xff0c;给出指示信号zero&#xff0c;当置位信号set 有效时&#xff0c;将当前输出置为输入的数值set_num。模块的接口信号图如下&#xff1a; 模块的时序图…

Redis的Java客户端

目录 1.Jedis的使用 前置工作-ssh进行端口转发 JedisAPI的使用 Jedis连接池 2.SpringDataRedis的使用 1.创建项目 2.配置文件 3.注入RedisTemplate对象 4.编写代码 3.SpringRedisTemplate 哈希结构用法 ​总结 1.Jedis的使用 Jedis&#xff1a;以Redis命令作为方法…

mysql重置和修改密码 Ubuntu系统

忘记密码要重置密码 cat /etc/mysql/debian.cnf/etc/mysql/debian.cnf这个只有Debian或者Ubuntu服务器才有&#xff0c;里面有mysql安装后自带的用户&#xff0c;作用就是重启及运行mysql服务。我们用这个用户登录来达到重置密码的操作 使用上面的那个文件中的用户名和密码登…

强化学习分享(一) DQN算法原理及实现

摘要&#xff1a;主要讲解DQN算法的原理&#xff0c;伪代码解读&#xff0c;基于pytorch版本的DQN小游戏编程&#xff0c;同时对该代码进行详细标注&#xff0c;以及奉上原码。 &#xff08;一&#xff09;强化学习算法介绍 DQN&#xff0c;顾名思义&#xff0c;Deep Q Learni…

SpringCloud《Eureka、Ribbon、Feign、Hystrix、Zuul》作用简单介绍

概述 SpringCloud是一个全家桶&#xff0c;包含多个组件。 本文主要介绍几个重要组件&#xff0c;也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。 一、业务场景介绍 业务流程&#xff0c;支付订单功能 订单服务改变为已支付订单服务调用库存服务&#xff0c;扣减…

中国农村程序员学习此【正则表达式进阶】发明cahtGPT,购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录 限制可能的用户名匹配空白字符匹配非空白字符指定匹配的上限和下限只指定匹配的下限指定匹配的确切数量检查全部或无正向先行断言和负向先行断言检查混合字符组使用捕获组重用模式使用捕获组搜索和替换删除…

分类预测 | MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测

分类预测 | MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测…

Windows 系统无法复制粘贴则么处理

Windows 系统无法复制粘贴如何恢复呢&#xff1f; 今天小编遇到一个问题&#xff0c;就是自己的电脑突然无法复制、粘贴&#xff0c;这样的问题我遇到很多次&#xff0c;重启电脑虽然能解决问题&#xff0c;但是不能一直通过重启来解决这样的问题&#xff0c;很浪费时间的。今…

Filebeat+ELK 部署

Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.8.10 Elasticsearch Kibana Node2节点&#xff08;2C/4G&#xff09;&#xff1a;node2/192.168.8.11 Elasticsearch Apache节点&#xff1a;apache/192.168.8.13 …

2023年电赛---运动目标控制与自动追踪系统(E题)发挥题思路

前言 &#xff08;1&#xff09;因为博客编辑字数超过1W字会导致MD编辑器非常卡顿。所以我将发挥题和基础题的思路拆开了。 &#xff08;2&#xff09;更新日记&#xff1a; <1>2023年8月4日&#xff0c;9点20分。分离发挥题思路和基础题思路&#xff0c;增加了博主Huiye…

2020-2023中国高等级自动驾驶产业发展趋势研究

1.1 概念界定 2020-2023中国高等级自动驾驶产业发展趋势研究Trends in China High-level Autonomous Driving from 2020 to 2023自动驾驶发展过程中&#xff0c;中国出现了诸多专注于研发L3级以上自动驾驶的公司&#xff0c;其在业界地位也越来越重要。本报告围绕“高等级自动…

【雕爷学编程】MicroPython动手做(29)——物联网之SIoT 2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

Java实现数据库表中的七种连接【Mysql】

Java实现数据库表中的七种连接【Mysql】 前言版权推荐Java实现数据库表中的七种连接左外连接右外连接其他连接 附录七种连接SQL测试Java测试转换方法类 Cla1类 Cla2类Cla3 最后 前言 2023-8-4 16:51:42 以下内容源自《【Mysql】》 仅供学习交流使用 版权 禁止其他平台发布时…

vue 混入(mixin)的使用

在 vue 组件内&#xff0c;如果想将一些公共功能&#xff0c;如组件、方法、钩子函数等复用&#xff0c;混入是一个很好的选择。 现在开始我们的混入使用吧 1、我们可以创建一个目录mixins&#xff0c;在创建一个comment.js文件如图&#xff1a; // 在 common.js 里写你想共享…

SQL 表别名 和 列别名

列表名 列表名之后 order by 可以用别名 也可以用原名&#xff0c; where 中不能用别名的 SQL语句执行顺序&#xff1a; from–>where–>group by -->having — >select --> order 第一步&#xff1a;from语句&#xff0c;选择要操作的表。 第二步&#xff1…

matlab编程实践18、19

浅水方程 浅水方程可以建立起海啸和浴缸中波浪的数学模型。浅水方程建立了水或者其它不可压缩液体受扰动时传播的模型。隐含的假设是&#xff0c;液体的深度和波浪的长度、扰动等相比是很小的。 在这样的记号下&#xff0c;浅水方程为双曲守恒定律的一个例子。 使用拉克斯-冯特…

ssm机动车维修站车辆维护管理系统java汽车报修备案jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 ssm机动车维修站车辆维护管理系统 系统有2权限&#…

iOS16.0:屏幕旋转

此文写于2022年08月03日&#xff0c;距离iOS16正式版推出还有一个多月的时间&#xff0c;iOS16 beta版本有很多API的修改&#xff0c;今天讨论的是屏幕旋转&#xff0c;基于Xcode 14.0 beta4。 之前的屏幕旋转会报错&#xff1a; [Orientation] BUG IN CLIENT OF UIKIT: Settin…