3d-navi 3D导航模拟仿真项目复现

3d-navi 3D导航模拟仿真项目复现

环境

官方环境要求

  • Ubuntu >= 20.04
  • ROS >= Noetic with ros-desktop-full installation
  • CUDA >= 11.7

个人环境

  • Ubuntu = 20.04

  • ROS = Noetic

  • CUDA = 12.1

    注:因为项目目前只支持ROS1Noetic,所以Ubuntu只能选择20.04(22.04后不方便使用ROS1),个人使用华硕天选笔记本(GPU4060)复现。

    注:尽量不用要虚拟机,虚拟机不能很好安装Nvidia驱动(个人先用虚拟机试了一下,发现驱动安装不了,后安装了20.04的系统)。

1、Ubuntu20.04系统安装

参照B站up主机器人工匠阿杰的视频安装Windows11 安装 Ubuntu 避坑指南硬盘空间分配80~100G左右(只做这个项目的话)

安装第三个、第四个系统也可参照上面视频安装,个人电脑上原本有一个Windows11和一个Ubuntu22.04,参照这个视频继续安装Ubuntu20.04。

注:

  • 使用笔记本安装有概率会出现在安装界面屏幕分辨率失常(安装框过大一个屏幕放不下),此时把鼠标移动到安装框上按Alt+F7就可以拖动框(凑合安装,安装完就正常了)。
  • 安装后Ubuntu20.04大概率是没有网卡驱动的,连接不了WI-FI,可以手动下载驱动(视频里有讲),我是连接有线网络继续。(没有中文输入法,可以下搜狗输入法)

2、ROS Notic安装

安装ROS

使用鱼香ROS一键安装(终端输入):

shell 复制代码
wget http://fishros.com/install -O fishros && . fishros

进入后按1进行一键安装,注意在选择ROS版本的时候选择 Notic(ROS1)。

测试

安装完之后进行测试:

终端输入

shell 复制代码
 roscore

另开一个终端输入

shell 复制代码
rosrun turtlesim turtlesim_node

在窗口看见小海龟即为安装成功

3、安装libtorch

参照这篇csdn博文:ubuntu安装libtorch

个人安装比较顺利,没有遇到什么错误,而且博主很细心,把可能遇到的问题都列出来了。

这一步我们需要两个东西:

1、libtorch的安装地址(下载后解压在哪就在哪,地址在项目中的CMake文件中替换)

2、cuda12.1的nvcc文件地址(默认在/usr/local/cuda/bin/nvcc)

4、下载并修改项目

可以直接去gitee官网下载压缩包解压:https://gitee.com/fdsf3e2342/3d-navi

也可以直接git clone(不推荐,网络太慢了):

C++ 复制代码
git clone https://gitee.com/fdsf3e2342/3d-navi.git

解压后进入文件src/unitree_guide/unitree_guide/unitree_guide/CMakeLists.txt中,修改第三步中我们得到的两个地址

txt 复制代码
find_package(Torch REQUIRED PATHS "/home/cjh/third_party_libs/libtorch")
set(CMAKE_CUDA_COMPILER /usr/local/cuda-12.2/bin/nvcc)
//修改上述两条中的地址为自己的地址

5、安装 ego-planner

这个参照官网:ego-planner官网:https://github.com/ZJU-FAST-Lab/ego-planner

里面有详细的安装过程:

1、安装模拟器所需的依赖库:

shell 复制代码
sudo apt-get install libarmadillo-dev

2、克隆 EGO-Planner 存储库(速度慢的话去搜索git clone配置,直接下载压缩包也行):

shell 复制代码
git clone https://github.com/ZJU-FAST-Lab/ego-planner.git

3、进入到克隆的目录,进行编译:

shell 复制代码
cd ego-planner
catkin_make -DCMAKE_BUILD_TYPE=Release

4、设置环境:

SHELL 复制代码
source devel/setup.bash

5、测试:

shell 复制代码
roslaunch ego_planner simple_run.launch

6、安装 PCT-planner

部署环境

可以进入虚拟环境(官方建议),因为后面运行的时候要开的终端太多了,我搞乱了,就把虚拟环境关了。

1、安装python,Ubuntu20.04自带Pythono 3.8

2、安装Open3D,终端输入如下指令(二选一):

shell 复制代码
# 清华源
pip install -U open3d -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

# 阿里云
pip install -U open3d -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

这里可能会报错说numpy版本过低,装个新的就好。

3、安装CUPY,和你之前安装的CUDA版本对应上即可

shell 复制代码
#如果安装的是cuda11,用这个
pip install cupy-cuda11x

#如果安装的是cuda12,用这个
pip install cupy-cuda12x

创建并安装

1、终端打开3d-navi文件夹,进入PCT_planner/planner/内

shell 复制代码
cd PCT_planner/planner/

2、依次输入如下指令进行脚本构建

shell 复制代码
./build_thirdparty.sh
./build.sh

注:这里构建的脚本和后面运行python3 plan.py --scene Building的时候需要在同一个Python版本的环境下

测试

进入PCT_planner文件夹下,依次输入如下命令:

shell 复制代码
cd planner/scripts/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:home/YOUR-NAME/3d-navi/PCT_planner/planner/lib/3rdparty/gtsam-4.1.1/install/lib
python3 plan.py --scene Building

这里可能会出现错误ImportError: libmetis-gtsam.so: cannot open shared object file: No such file or directory

安装GTSAM环境

缺少环境,直接安装的话找不到软件包,我们从源文件安装GTSAM(4.0.3 稳定版)

1、安装依赖

shell 复制代码
sudo apt update
sudo apt install cmake libboost-all-dev libeigen3-dev libmetis-dev

2、下载并编译 GTSAM

shell 复制代码
cd /tmp
wget https://github.com/borglab/gtsam/archive/4.0.3.tar.gz
tar xzf 4.0.3.tar.gz && cd gtsam-4.0.3
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \
         -DGTSAM_BUILD_EXAMPLES=OFF       \
         -DGTSAM_BUILD_TESTS=OFF          \
         -DGTSAM_USE_SYSTEM_METIS=ON
make -j$(nproc)

3、安装

shell 复制代码
sudo make install
sudo ldconfig

4、验证

shell 复制代码
ldconfig -p | grep libmetis-gtsam

应当输出libmetis-gtsam.so => /usr/local/lib/libmetis-gtsam.so

重写执行测试
shell 复制代码
cd planner/scripts/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:home/YOUR-NAME/3d-navi/PCT_planner/planner/lib/3rdparty/gtsam-4.1.1/install/lib
python3 plan.py --scene Building

能进即可,此时会输出如下日志(这里的ERROR是找不到节点,我们没有启动项目,这是正常现象)

[ERROR] [1769101432.247661]: Unable to immediately register with master node [http://localhost:11311]: master may not be running yet. Will keep trying.

7、构建工作空间

在官方文档中直接source ./devel/setup.bash,如果不构建的话是没有这个文件的。

1、用终端打开3d-navi文件夹

2、进入root模式:

shell 复制代码
sudo -s

3、这里不知道为什么,进入root之后我的环境变量中找不到nvcc了,先设置环境:

shell 复制代码
export PATH=/usr/local/cuda/bin:$PATH
export CUDACXX=/usr/local/cuda/bin/nvcc

4、直接构建会报错,需要装一些库

(1)安装move_base_msgs包(构建时候会缺失导航包,直接装上就行了)

shell 复制代码
sudo apt update
sudo apt install ros-noetic-move-base-msgs

安装完成后验证

shell 复制代码
source /opt/ros/noetic/setup.bash
rospack find move_base_msgs

(5)安装liblcm.so(这个也是构建的时候会报错缺失)

shell 复制代码
sudo apt update
sudo apt install liblcm-dev

安装后确认

shell 复制代码
ls /usr/lib/x86_64-linux-gnu/liblcm.so
#或者
ls -lh ~/.local/lib | grep -E "liblcm\.so|liblcm\.a"

liblcm.so.1即可

注:安装liblcm.so的时候如果apt安装不了,也可以从源码安装。

5、构建工作空间

shell 复制代码
catkin_make -DCMAKE_CUDA_ARCHITECTURES=89

直接catkin_make会报错找不到架构,这里的DCMAKE_CUDA_ARCHITECTURES是指定要编译的 CUDA 架构版本:

shell 复制代码
#20系显卡
catkin_make -DCMAKE_CUDA_ARCHITECTURES=75
#30系显卡
catkin_make -DCMAKE_CUDA_ARCHITECTURES=80
#30系移动版
catkin_make -DCMAKE_CUDA_ARCHITECTURES=86
#40系显卡
catkin_make -DCMAKE_CUDA_ARCHITECTURES=89

注:在构建过程中可能会出现一些报错没有列出,大部分是缺少环境,可以直接去问AI,但是重新构建的时候一定要删除掉原先构建的build文件和devel文件

shell 复制代码
rm -rf build devel

8、使用步骤

以下所有的操作均是在3d-navi下进行的哦

1·启动RL控制器

终端打开``3d-navi,进入root`模式,启动虚拟手柄

shell 复制代码
sudo -s
source ./devel/setup.bash
rosrun unitree_guide virtual_joy.py

这里可能会报错ModuleNotFoundError: No module named 'uinput',解决方案如下:

shell 复制代码
#安装
sudo apt update
sudo apt install python3-uinput

#加载
sudo modprobe uinput

#测试
lsmod | grep uinput

另开终端,进入root,启动 Gazebo 仿真环境并运行控制器:

shell 复制代码
sudo -s
. auto.sh  # 等待 Unitree A1 机器人展开
./devel/lib/unitree_guide/junior_ctrl

在终端中:

  • 按键 2:站立
  • 按键 6 :切换为 RL 模式(此时接收 cmd_vel 消息)

(可选)使用rqt_robot_steering 测试能否接收 cmd_vel 消息

shell 复制代码
#安装rospkg 模块
sudo apt update
sudo apt install python3-rospkg

#另开终端执行
rosrun rqt_robot_steering rqt_robot_steering 

拖动rqt看 Gazebo中的机器狗是否移动即可。

2·启动 ego-planner

shell 复制代码
#另开终端
source ./devel/setup.bash
roslaunch ego_planner run_in_sim.launch  # 局部导航模块

#另开终端
source ./devel/setup.bash
roslaunch ego_planner rviz.launch  # RVIZ 可视化

注:这里官网打开的是ego_rviz.launch但是我在项目中没有看到这个文件,只看到了rviz

3·启动 PCT-planner

这里必须和前面构建的python版本相同!!!

shell 复制代码
# 另开终端进入PCT-planner,将分层地图可视化在RVIZ中
cd tomography/scripts/ 
python3 tomography.py --scene Building

# 另开终端进入PCT-planner,启用interactive_marker_server
cd planner/scripts/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:home/YOUR-NAME/3d-navi/PCT_planner/planner/lib/3rdparty/gtsam-4.1.1/install/lib
python3 plan.py --scene Building

导航成功!!!

相关推荐
涅小槃1 天前
Carla仿真学习笔记(版本0.9.16)
开发语言·python·ros·carla
佚明zj3 天前
深入浅出 ROS2 QoS:如何为你的机器人选择通信策略
ros
Mr.Winter`4 天前
轨迹优化 | 微分动态规划DDP与迭代线性二次型调节器iLQR理论推导
人工智能·算法·机器人·自动驾驶·动态规划·ros·具身智能
zzzhpzhpzzz7 天前
从SolidWorks中导出机器人URDF模型
机器人·ros·urdf·solidworks
提伯斯6468 天前
Fast-LIO到MAVROS视觉定位转换
linux·ros·无人机·mid360·fasltlio
提伯斯6469 天前
解决 PX4 + ROS px4ctrl 「No odom!」自动起飞失败问题
linux·ros·px4·fastlio·mid360·egoplanner
大鹅同志9 天前
Ubuntu 20.04使用MB-System分析与可视化EM3000数据
数据库·3d·ros·slam·mb-system
Agilex松灵机器人9 天前
持续更新|第十七弹:用LIMO复现一篇IEEE论文
人工智能·ros·定位导航·模型·路径规划·ieee·rda
liiiuzy17 天前
基于move_base的机器狗定位与导航
ros