开源!!!!一行代码安装 宇树Go2机器狗 SDK+ros1(感知+定位+规划) 的大模型语言控制导航框架详细教程_宇树机器狗sdk
一.成果展示
博主在基于go2_SDK的基础上,在原本没有topic支持的ros1,实现了机器狗的导航,可以实现在rviz里发布目的地,实现导航,也可以通过大模型接收模糊文本指令实现导航,直接展示成果:
已完成的任务:(1)go2SDK改写,启动后发布ros1的topic imu,机器人pose,雷达。
(2)大模型+导航,根据文字输入模糊转向指令与目的地,实现狗的导航。
开源地址:https://github.com/bitLYL/go_ros_sdk (有详细部署教程)
求大家点上一颗免费的小星星~您的收藏与点赞是我更新的源泉!
总体来说就是跑出了一个go2.基于SDK与ROS1的基础大模型语音控制导航框架~欢迎大家去github下载!
二.SDK开发指南
1.SDK开始
参考go2 SDK官网教程宇树科技 文档中心
注意:要下载作者开源的SDK,
https://github.com/bitLYL/go_ros_sdk/tree/main/gogo
实现ROS1的topic pose,imu,rslidar_points发布。不放心的话,可以先跑一遍官方的熟悉流程。
下载github的资源包,unitree_sdk2,将其放在主目录,打开一个终端,并依次执行下列命令以安装 unitree_sdk2:
cd ~/unitree_sdk2/mkdir buildcd buildcmake ..sudo make install
2.例程编译
打开一个终端,并依次执行下列命令以编译例程:
cd ~/unitree_sdk2mkdir buildcd buildcmake ..make
为什么编译的内容不同?
-
SDK 编译和示例编译的目标不同:第一次编译的目的是构建并安装 SDK,第二次是构建和链接示例代码。因此,虽然执行的指令相同,但实际生成的目标文件和依赖不同。
-
构建目录不同:第一次构建的目录是用于安装 SDK 的
build
目录,而第二次是专门用于编译例程的build
目录。两个目录的内容和生成的文件不同,虽然你在两个目录中都运行了相同的cmake
和make
命令。
运行上文中的 make 命令后,若进度进行到100%且没有报错,则意味着编译成功。
若成功执行 make 命令, 生成的例程会在 build/bin 目录下。
例程运行
历程介绍:
编译成功后 unitree_sdk2/build/bin 文件夹有完成的历程:
go2_imu_pub系列:实现对机器人坐标与朝向的话题发布
go2_lidar_pub系列:实现对雷达的发布
go2_move_pub系列:自动订阅ros1的cmd_vel,实现速度控制
运行操作步骤:
################################SDK启动################################# 进入SDK文件夹:
1.启动位置信息发布
cd build .cd bin
sudo ./go2_imu_pub_6
2.启动cmd_vel速度控制接口
sudo ./go2_move_sub eth0 #注意要写你自己的网口
3.雷达话题发布
进入intiree_SDK2文件夹
cd build .cd bin
sudo ./go2_lidar_pub3 eth0
注意:要启动roscore
成功运行后,得到如下图所示:
现在开始,就全都完成啦,下一步进行导航框架的发布!
三、导航框架的搭建与启动
1.资源准备
下载博主开源的包lyl_ws,地址:https://github.com/bitLYL/go_ros_sdk
2.编译运行
直接ros1 make
cd lyl_ws
catkin_make
source devel/setup.bash
##############################传统rviz导航#################################
roslaunch robot_navigation robot_navigation.launch
在rviz中添加goal规划
##############################大模型类导航################################
roslaunch robot_llm robot_llm.launch
在新的终端下:
source ~/lyl_ws/devel/setup.bash
rostopic pub /llm custom_msgs/MoveCommand \"{x: 0.0, y: 0.0, direction: [4], distance: 0.7}\"
注意,大模型发的控制指令为:
# -*- codig: utf-8 _*_float32 xfloat32 yfloat[] direction #前后左右 1 2 3 4 0为导航float32 distance 距离
3.结果演示
发布话题后可实现机器人导航
四.大模型部分实现
本次任务中,调用的大模型完成简单的任务分解即可,采取的方式为,外接本地知识库以及调用api的方式即可解决,也可本地部署大模型完成。