近期开始学习使用宇树科技公司的机器人Go1,目前只是初步实现了Github上readme文档的一些基本功能,在网上看了一些博客文章,感觉思路都不是很清晰,所以打算写一篇更为仔细的博客,希望可以帮助初学者(PS:本人也是初学者,如有不当请指出批评)
基本条件
本文使用的基本环境如下:
- ROS1 noetic
- Ubuntu 20.04 LTS
- VS Code 1.87.2
官方资料
关于宇树机器人的一些资料网址也放在这里
【宇树官网】
宇树科技—全球四足机器人行业开创者 (unitree.com)
【宇树文档中心】
【Go1系列使用教学】
【宇树SDK使用教学】
安装总共需要用到三个包:
- unitree_ros:主要用于仿真(rviz,gazebo),包含了一些上层的运动算法.依赖于unitree_ros_to_real;
- unitree_ros_to_real:封装了各种数据类型和电机的位置扭矩速度模式,依赖于unitree_legged_sdk;
- unitree_legged_sdk:封装了通信协议和简单的机器人运动模式,如果要连接实体机器狗的话需要这个。
下面开始正式安装,按照下面的步骤一步步来,遇到问题先在网上搜一下,一般都能解决。
1、创建工作空间
在主目录下面打开终端(ctrl + alt + t),键入如下命令
mkdir -p ~/catkin_ws/src
这里我们创建了一个叫作catkin_ws的工作空间,然后我们进入到src里面
cd ~/catkin_ws/src
初始化仓库
catkin_init_workspace
此时src文件夹下面会多出一个 CMakeLists.txt 文件,这时候我们的工作空间算是创建好了,我们对其进行编译,记住要先回到工作空间下面
cd ~/catkin_ws/
然后再编译,命令如下:
catkin_make
编译完成之后,此时catkin_ws下应该有三个目录:build、 devel、 src。之前用过ROS的同学应该都知道,每次打开终端需要进行source一下,更新一下环境变量。也就是每打开一个终端,都需要下面的命令
source devel/setup.bash
这样难免有些麻烦,有个一劳永逸的办法如下
新开一个终端,输入
sudo gedit.bashrc
在最后面加上
source ~/catkin_ws/devel/setup.bash
保存之后关闭,然后再输入
source ~/.bashrc
这样以后就不用每次都要source了~
2、安装相关的依赖
2.1安装Gazebo9
之前安装过Gazebo的就不用管了,没有安装过的话请看这个教程(我给的这个教程是Ubuntu20.04,如果你是其他版本,自己去搜一下就行了,安装很简单的)
http://t.csdnimg.cn/5qoB8http://t.csdnimg.cn/5qoB8
2.2安装unitree相关的文件
这里我们直接使用gitclone来下载相关的文件,首先打开终端,进入catkin_ws/src
cd ~/catkin_ws/src
安装unitree_ros_to_real
git clone https://github.com/unitreerobotics/unitree_ros_to_real
再安装unitree_ros
git clone https://github.com/unitreerobotics/unitree_ros
unitree_ros_to_real文件夹下面,只需要保存unitree_legged_msgs,其他的可以删除,也可以不管,然后把unitree_legged_msgs文件夹拿出来和unitree_ros放在同一目录下。
大家可以在资源管理器中操作,也可以在vscode里面操作,我在vscode里面操作之后,结构如下所示
2.3安装gazebo与ros的交互
新建终端,如果你是Melodic版本,就键入下面的命令,其他版本只需要把下面命令的Melodic换成你的版本就行了,注意版本一定要对哦。
sudo apt-get install ros-melodic-controller-interface ros-melodic-gazebo-ros-control ros-melodic-joint-state-controller ros-melodic-effort-controllers ros-melodic-joint-trajectory-controller
然后要修改一下其中的一个world文件,否则后面会报错
其实就是把unitree换成你自己PC的名字,保证绝对路径的正确。
不知道自己电脑名字的同学,也可以这样操作
鼠标选中stairs.world文件,然后右键在集成终端中打开,在终端命令行输入pwd,就可以显示当前文件的系统路径了,然后再修改stairs.world文件。
3、rviz与gazebo可视化机器人
在终端中输入下面的命令,可以在rviz中查看机器狗
roslaunch laikago_description laikago_rviz.launch
结果如下图所示
不过rviz只是对机器狗的描述,不能够实际的操作,所以在gazebo中操作空间更大,新开一个终端,输入下面的命令,可以打开gazebo仿真界面
roslaunch unitree_gazebo normal.launch rname:=a1 wname:=stairs
其中rname表示机器人名称,可以是laikago、aliengo、a1或go1。 wname 表示世界名称,可以是地球、空间或楼梯。 rname 的默认值为 laikago,wname 的默认值为 Earth。在 Gazebo 中,机器人应该躺在地面上,且关节未激活。
结果如下图所示,可以看出现了机器狗以及周围的空间环境。
注意了,机器狗的初始姿态应该是完全趴在地上的,跟上面这张图一样,如果你的机器狗是站立状态或者是半蹲状态,就稍等一会,过一会他会自己趴下来的...
启动机器狗的话,我们就让他站起来,输入如下命令
rosrun unitree_controller unitree_servo
结果如下,机器狗站了起来。
你还可以通过下面这个指令添加外部干扰,例如推或踢(但是这个我还没搞懂机制,有时候多按几下直接把小狗踢翻了...)
rosrun unitree_controller unitree_external_force
下面我们演示一下如何在没有控制器的情况下控制机器人的位置和姿态,新开终端,键入下面命令
rosrun unitree_controller unitree_move_kinetic
这个命令是让机器狗沿着世界坐标系做圆周运动,效果如下所示
机器狗圆周运动
机器人会绕原点转动,这是在世界坐标系下的运动。在源文件move_publisher.cpp中,我们还提供了使用机器人坐标系进行移动的方法。你可以将def_frame的值更改为coord::ROBOT并再次运行catkin_make,然后unitree_move_publisher将在自己的坐标系下移动机器人。
总结
到这里,unitree安装就结束了,并且我们进行了几个比较简单的可视化操作,不过这些都是github官方开源文档里面的,想要实现更多功能大家还是得自己探索。
您的支持是我不断更新的动力,初学才浅,若有不当还请在评论区指出!
参考了下方的一些博客文章