宇树机器狗Go2的ROS2环境配置

该文章已生成可运行项目,


全文总结

前言

搞搞狗。


环境配置

模拟机器狗中的环境,在本地虚拟机配置,通过网线运行测试用例程序,测试运行情况。
在这里插入图片描述图片来自宇树科技文档

一个基于现代架构(如ROS 2)​​ 的机器狗,机器狗是一个复杂的机电系统,通常会将功能分解为多个独立的、松散耦合的软件模块,每个模块就是一个节点,它们之间利用DDS实现协同运动,具体到我们的控制上,我们可以通过官方的SDK操控,也可以通过ROS2操控,它们本质都是去和机器狗上的DDS通信,从而控制其各部分工作。

宇树机器狗Go2文档:https://support.unitree.com/home/zh/developer/ROS2_service
ROS2安装路径:https://github.com/unitreerobotics/unitree_ros2?tab=readme-ov-file
ROS2文档:https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html
SDK安装路径:https://github.com/unitreerobotics/unitree_sdk2

现在要做的是我们的主机上配置好驱动机器狗的ROS2环境,我们的主机和机器狗处于同一局域网之下,也相当于一个DDS节点,这样就可以参与局域网中DDS的通信,从而控制一个局域网中其他节点的行为:

uck@uck-virtual-machine:~/Go2$ git clone https://github.com/unitreerobotics/unitree_ros2
正克隆到 'unitree_ros2'...
remote: Enumerating objects: 605, done.
remote: Counting objects: 100% (154/154), done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 605 (delta 110), reused 77 (delta 77), pack-reused 451 (from 3)
接收对象中: 100% (605/605), 1.22 MiB | 220.00 KiB/s, 完成.
处理 delta 中: 100% (203/203), 完成.

//将 ROS 2 apt 存储库添加到系统中
uck@uck-virtual-machine:~/Go2$ sudo apt install software-properties-common
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
software-properties-common 已经是最新版 (0.99.22.9)。
software-properties-common 已设置为手动安装。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

uck@uck-virtual-machine:~/Go2$ sudo add-apt-repository universe
正在添加组件‘universe’到所有软件源。
按 [ENTER] 继续,或按 Ctrl-c 取消。
命中:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease
获取:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
命中:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates InRelease

//添加带有 apt 的 ROS 2 GPG 密钥
uck@uck-virtual-machine:~/Go2$ sudo apt update && sudo apt install curl -y
命中:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
命中:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease              
命中:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates InRelease
命中:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-backports InRelease

uck@uck-virtual-machine:~/Go2$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

//然后将存储库添加到源列表中
uck@uck-virtual-machine:~/Go2$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null


//设置存储库后更新 apt 存储库缓存。
sudo apt update
//ROS 2 软件包建立在经常更新的 Ubuntu 系统上。 始终建议您在安装新软件包之前确保您的系统是最新的。
sudo apt upgrade

//安装ROS的一些依赖
sudo apt install ros-humble-rmw-cyclonedds-cpp
sudo apt install ros-humble-rosidl-generator-dds-idl
sudo apt install ros-humble-desktop python3-argcomplete
sudo apt install ros-humble-ros-base python3-argcomplete
sudo apt install ros-dev-tools

//如果“source/opt/ros/humble/setup.bash“在安装 ROS2 时被添加到 ~/.bashrc 文件中,需要注释掉:
sudo apt install gedit
sudo gedit ~/.bashrc
# source /opt/ros/humble/setup.bash 


//编译 cyclone-dds
uck@uck-virtual-machine:~/Go2/unitree_ros2/cyclonedds_ws/src$ git clone https://github.com/ros2/rmw_cyclonedds -b humble
正克隆到 'rmw_cyclonedds'...
remote: Enumerating objects: 3012, done.
remote: Counting objects: 100% (1319/1319), done.
remote: Compressing objects: 100% (319/319), done.
remote: Total 3012 (delta 1188), reused 1012 (delta 1000), pack-reused 1693 (from 1)
接收对象中: 100% (3012/3012), 1.09 MiB | 34.00 KiB/s, 完成.
处理 delta 中: 100% (2205/2205), 完成.
uck@uck-virtual-machine:~/Go2/unitree_ros2/cyclonedds_ws/src$ git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x 
正克隆到 'cyclonedds'...
remote: Enumerating objects: 49750, done.
remote: Counting objects: 100% (1933/1933), done.
remote: Compressing objects: 100% (802/802), done.

//安装colcon,为了编译准备
uck@uck-virtual-machine:~/Go2/unitree_ros2/cyclonedds_ws$ sudo apt install python3-colcon-common-extensions
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
将会同时安装下列软件:
  libjs-jquery-hotkeys libjs-jquery-isonscreen libjs-jquery-metadata
  libjs-jquery-tablesorter libjs-jquery-throttle-debounce
  python3-colcon-argcomplete python3-colcon-bash python3-colcon-cd
  python3-colcon-cmake python3-colcon-core python3-colcon-defaults
  python3-colcon-devtools python3-colcon-installed-package-information
  python3-colcon-library-path python3-colcon-metadata

uck@uck-virtual-machine:~/Go2/unitree_ros2/cyclonedds_ws/src$ cd ..
uck@uck-virtual-machine:~/Go2/unitree_ros2/cyclonedds_ws$ colcon build --packages-select cyclonedds

source /opt/ros/humble/setup.bash 
colcon build

使用以太网电缆连接 Unitree 机器人和计算机。然后,使用 ifconfig 查看机器人连接的网络接口。例如,下图中的“enp3s0”。
在这里插入图片描述图片来自宇树科技文档

接下来,打开网络设置,找到机器人连接的网络接口。在 IPv4 设置中,将 IPv4 模式更改为手动,将地址设置为 192.168.123.99,将掩码设置为 255.255.255.0,这样是为了让我们的主机和机器狗处于同一个局域网。完成后,单击应用并等待网络重新连接。
在这里插入图片描述
图片来自宇树科技文档
ping 192.168.123.161(这是宇树官方指出的机器狗的默认ip):

uck@uck-virtual-machine:~/Go2/unitree_ros2/cyclonedds_ws$ ping 192.168.123.161
PING 192.168.123.161 (192.168.123.161) 56(84) bytes of data.
64 bytes from 192.168.123.161: icmp_seq=1 ttl=64 time=5.26 ms
64 bytes from 192.168.123.161: icmp_seq=2 ttl=64 time=3.15 ms
64 bytes from 192.168.123.161: icmp_seq=3 ttl=64 time=1.85 ms
64 bytes from 192.168.123.161: icmp_seq=4 ttl=64 time=3.21 ms
^C
--- 192.168.123.161 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms


//可以ping通之后,就获取环境以设置 Unitree 机器人的 ROS2 支持:
修改指令:vim ~/Go2/unitree_ros2/setup.sh    //这个过程可能需要更改路径,因为unitree_ros2默认是安装foxy的,需要将其全部修改成humble.
source ~/Go2/unitree_ros2/setup.sh                           

//然后就可以使用 ROS 2 命令,查看我们当前主机的局域网下,所有已声明(即有节点发布或订阅)的 Topic​ 的名称列表
ros2 topic list

在这里插入图片描述
图片来自宇树科技文档

然后我们选择ros2 topic echo /sportmodestate输入,它也是ROS2命令,主要用于​实时监视并打印特定主题(Topic)上发布的消息内容。
如果我们的机器狗上有订阅这个主题的模块,那么就会对应的返回数据给我们,其实也就是机器狗的特定模块的节点和我们的主机上的ROS2节点在局域网通信特定的数据了。

总结

狗动了。


本文章为作者的笔记和心得记录,顺便进行知识分享,有任何错误请评论指点:)。

本文章已经生成可运行项目
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值