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
导航成功!!!
