宇树go2机器狗学习记录(二)

此文章开始slam服务部分的学习与操作。SLAM 导航服务接口仅支持带拓展坞和Unitree官方购入激光雷达(MID-360/XT16)版本的EDU机器狗。

第一步当然是把你的雷达接上去啦。我用的MID_360(蛮难接的,建议把那个碍事的皮带固定螺丝拧开接雷达)f32cf7589daa4a6dad2bd814f671a662.jpeg

SLAM导航服务连接

一.更新你的拓展坞

最让我心梗的一集)

第一步用宽带连接你的电脑和拓展坞,并其检测连接是否成功。(下为检测代码)

ping 192.168.123.18

好了你已经连接上了,进入这里http://192.168.123.18你会看到这样(你的是空白的)。edcb7300bc8a46908858e8d48339ca15.png

宇树科技 文档中心在拓展坞配置里滑到最底部下载更新包。按照下图顺序操作导入。

f9436acf2f994c108561139c20991140.png

心梗时刻到来。先说重点。看到这个图,你应该喝喝茶等待7分钟拓展坞自行重启,我的重启很慢很慢。导致我一直认为哪里有问题卡了3天。

cf856f916dc841b4af07b38c40483a4a.png

应该是少部分狗狗7分钟左右重启好了就可以下一步了。

二.网络连接

宇树go2机器狗学习记录(一)-优快云博客和第一篇一样,不过测试三个部分连接。

ping 192.168.123.18 #拓展坞PC IP

ping 192.168.123.20 #雷达IP

ping 192.168.123.161 #运控PC IP

拓展坞PC中/home/unitree/cyclonedds_ws/cyclonedds.xml文件为DDS的配置文件,在使用slam服务前需确认其网卡参数和拓展坞PC中IP地址为192.168.123.18 网卡相同(通过ifconfig指令可查看),即如图中所示,两者名称需相同。

ba4c7f98a22e404f83b36469656dff5b.png

三.查看数据通讯是否正常

输入如下可以看到狗本体PC发出的相关话题信息

ros2 topic list #查看消息话题

四.注意事项

1.显示屏右上角将pcpower mode 调整为maxn

2.修改YSN参数。扫码雷达上二维码获得YSN参数。在/unitree/module/graph_pid_ws/config_files/lio_sam_config目录下找到params_xt16.yaml和params_mid360.yaml,将文件中lidarYsn参数值修改为雷达所对应的YSN码。(用哪个改哪个)

参考例程

一.安装unitree_sdk2

在终端输入以下指令执行脚本文件,安装Unitree_sdk2,若终端输出“success“,则安装成功。(注意是根目录啊,本人因为更新拓展坞麻了,反复打开home下unitree找不到lib。希望大家不要反这个错)

cd /unitree/lib/unitree_slam #进入安装目录
sudo ./install.sh   #安装

二.编译例程

没权限创建就su以下。

#编译测试例程
cd /unitree/lib/unitree_slam
mkdir build
cd build
cmake ..
make

 

三.开启服务

输入

cd /unitree/module/graph_pid_ws
./0_unitree_slam.sh

执行demo

./demo_xt16 eth0   #或者 ./demo_mid360 eth0 其中eth0为123网段网卡

1.先按w程序开启建图,在建图开始前需大致记下建图起始位置和机器狗的朝向。走向起始点(我向前一步。移动速度不要快)

2.大概走几步,按下e结束建图。三维PCD图保存在/unitree/module/graph_pid_ws/config_files/lio_sam_config/maps/pcd/default/GlobalMap.pcd中;

3.回到建图起点,按下‘z’按键,打开定位节点并进行定位初始化。按下‘x’键将起始点作为第一个导航拓扑点,第一个拓扑点尽量打在环境比较空旷且周围没有障碍物的地方。然后遥控机器狗至其他导航点的位置,达到后按下'x'键,依次采集所有的导航拓扑点/边信息,采集完成后按下‘c'保存点边信息,然后按下‘q'键关闭节点,第一个拓扑点1.5m范围内请勿采集其他拓扑点;

遥控机器狗至建图起始位置,按下‘a’键开启自动循环导航。在机器狗行走过程中,可通过按键‘s’和‘d’进行暂停和恢复。若后续无需更改导航地图信息,则可以直接跳过步骤5~步骤9,实现自动循环导航。

实际效果:

207b89b7a35a4326a14d9bcd5bf95cd4.jpeg

一些意外:

如果你按错了顺序,或者终端上一步操作还未完成又给了新指令,可能会这样。e3125ec3c10e4a2c91e64daf9a247165.jpeg

总结

做到这里后边就可以自行探索了,简单上手差不多算是完成了。demo的建图和循环导航也是一切正常。

用外界显示屏会很麻烦,推荐用宽带插上再用nomachine显示拓展坞pc。下载安装很简单就不介绍了。

 

### 机器狗 GO2 的键盘控制实现 科技的 GO1 和 GP 系列机器狗提供了丰富的开发接口,支持通过多种方式对其进行控制。对于键盘控制功能,通常可以通过其官方 SDK 提供的相关 API 实现。 #### 1. 开发环境准备 为了实现键盘控制,开发者需要先安装并配置好科技提供的 SDK 工具包。该工具包包含了用于通信的核心库以及示例代码[^2]。以下是主要步骤: - **下载 SDK**:访问官网或 GitHub 页面获取最新版本的 SDK。 - **依赖项安装**:确保系统已安装 Python 或 C++ 编译环境(取决于所选语言),以及其他必要的依赖库。 ```bash pip install -r requirements.txt ``` #### 2. 键盘输入捕获 在实现过程中,程序需实时监听用户的按键操作并将这些指令转换成机器人可以理解的动作命令。Python 中常用 `keyboard` 库来完成这一任务[^3]。 ```python import keyboard def listen_for_keys(): while True: if keyboard.is_pressed('w'): # 前进 send_command_to_robot("move_forward") elif keyboard.is_pressed('s'): # 后退 send_command_to_robot("move_backward") elif keyboard.is_pressed('a'): # 左转 send_command_to_robot("turn_left") elif keyboard.is_pressed('d'): # 右转 send_command_to_robot("turn_right") elif keyboard.is_pressed('q'): # 结束程序 break ``` #### 3. 发送动作指令至机器狗 一旦检测到特定键被按下,则应立即将对应的动作请求发送给机器狗。这一步骤涉及与硬件设备建立稳定的网络连接,并调用相应的 API 接口[^4]。 ```python from ast import literal_eval import socket def send_command_to_robot(command_str): HOST = '192.168.x.x' # 替换为目标IP地址 PORT = 8080 # 默认端口号 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: try: s.connect((HOST, PORT)) s.sendall(str.encode(command_str)) # 将字符串编码为字节流 data = s.recv(1024).decode() # 解码接收的数据 response_dict = literal_eval(data) print(f'Received from robot: {response_dict}') except Exception as e: print(e) ``` 以上代码片段展示了如何利用套接字编程技术向远程主机传递消息[^5]。 #### 4. 动作解析与执行 当机器狗收到上述来自客户端的应用层协议数据包后,内部固件会进一步解码分析其中的内容,最终驱动电机完成指定行为[^6]。 --- ### 注意事项 - 需要仔细阅读产品手册中的安全指南部分,避免不当操作造成损害。 - 测试阶段建议降低速度参数值以减少风险。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值