目录

1、介绍

2、hongtu官方补充

3、lsy:g1导航-hongtu启动流程汇总


1、介绍

参考元启・鸿图HongTu,官方文档在环境配置上可能会有漏包等情况,以及一些地址修改的补充,和实际操作中遇到的问题,分享自己的日志,供大家参考

最后实现的视频链接

宇树机器人g1导航


2、hongtu官方补充

系统配置 docker配置

- 通过docker安装20.04+noetic

 ```bash
  docker build --process=plain -t ros-noetic-base -f dockerfile .

  #给docker 权限
  sudo usermod -aG docker $USER
  newgrp docker
  docker ps

  #进入docker
  #启动容器并直接进入
  docker run -it --name ros_noetic_dev ros-noetic-base /bin/bash
  #进入一个已经运行的容器
  docker exec -it ros_noetic_dev /bin/bash
  #如果容器已经停止,启动并附着到容器
  docker start -ai ros_noetic_dev
  ```

- 如果发现docker里面没有安装ros,可以重新删除容器再装一次

 ```bash
  docker rm -f ros_noetic_dev
  docker build --no-cache --progress=plain -t ros-noetic-base -f dockerfile .
  ```

ros noetic配置

- 由于容器里的gui连接不到宿主机的显示服务,发现ros的显示界面打不开,运行不了海龟例程

 ```bash
  #宿主机先执行,允许docker访问x11
  xhost +local:docker

  #重新建立一个容器
  docker run --it --rm --name ros_noetic_gui \
  --gpus all \   #lsy:没有gpu的去掉
  --network host \
  -e DISPLAY=$DISPLAY \
  -e QT_X11_NO_MITSHM=1 \
  -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
  ros-noetic-base /bin/bash
  ```

 部署

- 克隆仓库

  ``` bash
  git clone https://github.com/yuanqizhiti/HongTu.git
  ```

2D导航

- 安装 [Livox SDK2](https://github.com/Livox-SDK/Livox-SDK2)

 ```bash
    sudo apt install cmake
    ```

    ```bash
    git clone https://github.com/Livox-SDK/Livox-SDK2.git
    cd ./Livox-SDK2/
    mkdir build
    cd build
    cmake .. && make -j
    sudo make install
    ```

- 更改雷达ip及地图保存路径

  ``` bash
  # 修改本机与雷达ip
  cd HongTu/G1Nav2D/src/livox_ros_driver2-master/config/
  gedit MID360_config.json
  
  # 修改地图保存路径,将该文件下最底部路径改为自己的电脑
  cd HongTu/G1Nav2D/src/fastlio2/src/
  gedit map_builder_node.cpp
  ```

- 编译程序

``` bash
  cd HongTu/G1Nav2D/
  
  #lsy:加载环境
  source /opt/ros/noetic/setup.bash
  #lsy:永久配置
  echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

  catkin_make
  
  #lsy:依赖缺失补充
  apt update && apt install -y \
ros-noetic-tf2-sensor-msgs \
ros-noetic-gtsam \
ros-noetic-pcl-ros \
ros-noetic-map-server \
ros-noetic-navigation \
ros-noetic-livox-ros-driver

  
  
  #遇到报错可先执行以下命令
  cd HongTu/G1Nav2D/src/livox_ros_driver2-master/
  ./build.sh ROS1
  cd HongTu/G1Nav2D/
  catkin_make
  ```

- 安装依赖包

 ``` bash
  sudo apt install ros-noetic-teb-local-planner ros-noetic-global-planner ros-noetic-costmap-server
 
  #lsy:假如没有ros-noetic-costmap-server
  # 导航全家桶(含 costmap_2d、map_server、move_base 等)
  sudo apt install -y ros-noetic-navigation ros-noetic-teb-local-planner
 ```

- 建图及保存

  ``` bash
  # 建图
  cd /lsy_ros/HongTu/G1Nav2D/
  source devel/setup.bash
  roslaunch fastlio mapping.launch
  
  # 打开新终端
  cd HongTu/G1Nav2D/
  source devel/setup.bash
  # 保存地图,自定义路径及地图名称
  #rosrun map_server map_saver map:=/projected_map -f /home/nvidia/mymap
  
  rosrun map_server map_saver map:=/projected_map -f /lsy_ros/mymap

  ```

- 编辑地图

 ``` bash
  # 打开地图,利用Map Eraser Tool修改地图,ctrl+加号或减号可修改画笔大小,保存地图
  source devel/setup.bash
  roslaunch ros_map_edit map_edit.launch
  ```

- 开启导航

 ``` bash
  #修改地图路径
  cd HongTu/G1Nav2D/src/fastlio2/config/
  gedit gridmap_load.launch
  
  # 启动导航,启动导航后需自行按照雷达位置重定位
  cd HongTu/G1Nav2D/
  source devel/setup.bash
  roslaunch fastlio navigation.launch
  ```

- 启动运控 

安装unitree_sdk2_python参考[宇树官方文档](https://github.com/unitreerobotics/unitree_sdk2_python.git)

``` bash
  # 打开新终端,网口可通过ifconfig命令查询自行更改
  cd HongTu/unitree_sdk2_python/example/g1/high_level/
  python3 g1_control.py 网口
  ```

在rviz中发布目标点即可自主导航

-!路径修改

#lsy:修改地址,只要出现地址都改成自己相应目录下的
cd /lsy_ros/HongTu/G1Nav2D/src/tool/launch
nano downsample_pointcloud.launch

#lsy:修改地址,只要出现地址都改成自己相应目录下的
cd /lsy_ros/HongTu/G1Nav2D/src/fastlio2/launch
nano gridmap_load.launch
    <arg name="2dmap_file" default="/lsy_ros/mymap.yaml" />
nano navigation.launch

#lsy:假如出现b2导入错误,删除b2引入
nano /usr/local/lib/python3.8/dist-packages/unitree_sdk2py/__init__.py 删除b2

#lsy:假如官方的python版本安装后没有g1的模块

root@lsy-computer:/lsy_ros/HongTu/unitree_sdk2_python/example/g1/high_level# python3 g1_control.py enx00e4c105a70
Traceback (most recent call last):
  File "g1_control.py", line 8, in <module>
    from unitree_sdk2py.g1.loco.g1_loco_client import LocoClient
ModuleNotFoundError: No module named 'unitree_sdk2py.g1'

询问官方说老版本下载有问题,可以联系客服索要最新版
解决办法,通过将hongtu里的g1直接复制到/usr/local/lib/python3.8/dist-packages/unitree_sdk2py
同时 nano /usr/local/lib/python3.8/dist-packages/unitree_sdk2py/__init__.py,添加g1模块


3、lsy:g1导航-hongtu启动流程汇总

#启动带显示权限的
xhost +local:docker
docker start lsydocker
docker exec -it -e DISPLAY=$DISPLAY -e QT_X11_NO_MITSHM=1 lsydocker bash

#写成一条就是如下命令

xhost +local:docker && docker start lsydocker && docker exec -it -e DISPLAY=$DISPLAY lsydocker bash
#只有这样子才会给rviz显示权限
#看需要roscore
#进入宇树机器人运控
cd /lsy_ros/HongTu/unitree_sdk2_python/example/g1/high_level/
python3 g1_control.py 网卡名
网卡按自己的需求改
#启动建图
cd /lsy_ros/HongTu/G1Nav2D/
source devel/setup.bash
roslaunch fastlio mapping.launch

#进入走跑模式,走一圈

 看 RVIZ 画面

    中间彩色点云 = 雷达
    灰色区域 = 地图
    灰色地图完整覆盖你要走的区域 = 建图完成

#新开终端,保存建图
cd /lsy_ros/HongTu/G1Nav2D/
source devel/setup.bash
rosrun map_server map_saver map:=/projected_map -f /lsy_ros/mymap
#启动导航
cd /lsy_ros/HongTu/G1Nav2D/
source devel/setup.bash
roslaunch fastlio navigation.launch

#重定位
重定位
你只需要在 RVIZ 里点两个按钮:
1. 点左上角 2D Pose Estimate(绿色箭头)
2. 在地图上机器人大概位置点一下
3. 拖动方向箭头朝向机器人面对的方向
画面立刻匹配 → 重定位成功!

#开始导航!
1. 点 RVIZ 上方 2D Nav Goal
2. 在地图上点一个目标点
3. 拖方向
机器人自己走过去

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐