宇树机器狗go2开发记录_ubuntu开发宇树科技机器狗-CSDN博客
![[Pasted image 20250711185016.png]]

核心官方指南见此->宇树科技 文档中心
go2对应ip 192.168.123.161

可能会用到的博客

NVIDIA Isaac Sim安装疑难杂症攻克记:两周问题总汇与实战攻略 - 知乎

![[Pasted image 20250715130919.png]]

ros2环境搭建

基础搭建参考这个博客
同时参考赵老师的b站课程

采用ros2 humble
东西有点多,随便记一下
关键的source

1
2
3
4
5
6
7
source ~/.bashrc #终端启动项设置
source /opt/ros/humble/setup.bash #ros2终端启动项
source ~/unitree_ros2/setup.sh #ros2和狗的链接启动项, 包含网卡设置之类的, unitree的ros2环境
#可以把后两条加到第一条的那个文件里去
#修改完了记得重启,不然有可能source了也不起效!!!!!!!!

source ./install/setup.bash #每次编译后使用
关于工作空间框架

unitree_ros2文件夹下面有cyclonedds_ws和example子文件夹
example也是一个工作空间,详见后文例程编译
cycloedds_ws是一个工作空间, 其子文件夹src下面有unitree api, cyclonedds, rmw_cyclonedds 功能包等等

在cycloedds_ws下build

  1. 第一次确保没有ros2的环境变量的情况下(不要source /opt/ros/humble/setup.bash,请在~/.bashrc里注释掉)单独编译cyclonedds colcon --packages-select name
  2. 第二次在source了ros2的环境变量后, 再build一遍全部 colcon build
关于ros2基础命令
1
2
3
4
ros2 topic list #如果遇到了奇怪的问题,比如不打印,可以重启试试
ros2 topic list | grep -i asdf #查找名字
ros2 topic echo /utlidar/cloud #eg.打印点云
ros2 topic echo /utlidar/cloud --no-arr #eg.打印点云 且不显示数组

承接上文, 以下是一个参考的点云可视化步骤
首先bash中rviz2
![[Pasted image 20250721160426.png]]
![[Pasted image 20250721160753.png]]

1
2
3
4
ros2 topic info /utlidar/cloud #查看消息格式
#显示Type: unitree_api/msg/Request
ros2 interface show unitree_api/msg/Request #然后你可以使用该命令具体查看

运行一个example例程

进入example文件夹,执行

1
2
3
4
5
6
#1.配置环境
. install/setup.bash #这个.+空格等同于source 这句话等同于 source install/setup.bash
#2.运行二进制程序
#在example/install/unitree_ros2_example/bin/下面找到可执行文件使用文件名
./example/install/unitree_ros2_example/bin/abc_example #使用显式命令
#注意, 不能使用ros2 run
自己写一个ros2节点:helloworld

创建功能包

1
2
3
4
5
6
7
8
~/go2_ws/src/helloworld$ ros2 pkg create helloworld --build-type ament_cmake --dependencies rclcpp unitree_api --node-name hello
#在工作空间go2_ws的src文件夹下创建一个文件夹名为helloworld,在功能包文件夹下运行该命令
#解析: 创建一个名为helloworld的功能包, & 编译类型为cmake & 依赖项有rclcpp(c++依赖项),unitree_api(上文经过消息格式查找发现unitree发消息需要使用Type: unitree_api/msg/Request,因此需要依赖unitree_api包) & 节点名称为hello

#运行完路径应该为/go2_ws/src/helloworld/helloworld,这下面有Cmakelist.txt, package.xml等

#由于刚刚命令包含--node-name hello, /go2_ws/src/helloworld/helloworld/src/下自动生成hello.cpp
#需要把里面的东西删除,不符合需求格式,采用自己的

c++配置, include

关于slam和导航

提供一些优秀简明的博客讲解
哨兵定位建图简明教程三 前情提要 · Creeper5820 WorkStation
他们的仓库Alliance-Algorithm/rmcs_slam