项目简介
本项目是基于ROS(Robot Operating System)的轮式步行者路径规划系统,其核心功能是助力轮式步行者在复杂环境里,找到从起始状态到目标状态的最优路径。项目借助SMPL库来实现机器人的感知与规划,并且结合多启发式搜索策略,达成高效的路径搜索。同时具备可视化功能,方便用户理解与调试。
项目的主要特性和功能
- 多启发式搜索策略:结合BFS、基于距离和旋转角度的启发式等多种启发式搜索算法,加速搜索进程。
- 路径规划:依据机器人模型描述、环境地图和碰撞检测信息,执行路径规划,返回最优路径。
- 可视化功能:利用ROS可视化工具,将规划路径进行可视化展示,方便理解和调试。
- 路径保存和记录:可将规划路径保存至文件,便于后续分析与比较。
- 支持多种操作模式:能生成地图、起始/目标对,支持使用Python脚本生成轨迹,还可创建数据集、训练和测试CVAE模型,支持全流程测试。
安装使用步骤
安装
- 复制仓库:在
catkin_ws/src
中复制本项目的unified_planner
分支,同时复制以下仓库: - 单独复制并编译
sbpl
:mkdir build mkdir install cd build cmake -DCMAKE_INSTALL_PREFIX=../install .. make install
- 修改配置文件:将
smpl/smpl/CmakeLists.txt
和smpl/smpl/smpl-config.cmake.in
中的~/lolocal
改为上述sbpl
文件夹的安装路径。 - 安装依赖:
sudo apt-get install ros-kinetic-trac-ik sudo apt-get install libompl-dev sudo apt-get install libgsl-dev
- 编译项目:
catkin build walker_planner
使用
可视化(Rviz)
- 启动RVIZ。
- 打开仓库中的
proj.rviz
配置文件。 - 打开后,可可视化地图、生成目标时的目标状态以及生成的规划路径。
生成轨迹(Generating Traj)
- 生成地图并复制到指定目录:
roslaunch walker_planner generate_map.launch cp ~/.ros/-multi_room_map.env env/proj_env.env
- 生成起始/目标对并复制到指定目录:
roslaunch walker_planner generate_start_goals.launch cp ~/.ros/goal_* experiments cp ~/.ros/start_states.txt experiments/
- 修改
config/walker_right_arm.yaml
中end_planning_episode
变量,设置要生成规划路径的起始/目标对数量。 - 确保
ROS_HOME
变量指向~/.ros
,在~/.ros
中创建paths
目录。 - 运行规划器并在RVIZ中验证:
roslaunch walker_planner mrmhaplanner.launch
生成轨迹(Python)
- 在单独的终端中启动URDF包并保持运行:
roslaunch walker_planner planning_context_walker.launch
- 进入
cvae
文件夹。 - 运行Python脚本:
python generate_map_paths.py --env_path_root $PWD/../env --output_path $PWD/test_data --env_list 2 3 4 5 6 7 8 --max_paths 2000
创建数据集
- 进入
cvae
文件夹。 - 为指定环境生成干净的训练数据集:
source activate.sh python create_data.py --env 1 --env_path_root ../env
- 为所有环境生成干净的训练数据集:
source activate.sh python create_data.py --env_path_root ../env
- 为所有环境生成干净的测试数据集:
source activate.sh python create_data.py --test --env_path_root ../env
训练CVAE
进入cvae
文件夹,运行以下命令训练基础CVAE:
python run.py --train_dataset_root ../data/train_clean --test_dataset_root ../data/test_clean --num_epochs 250 --dataset_type arm --run_id arm_cvae
测试CVAE
进入cvae
文件夹,运行以下命令加载保存的解码器模型并测试:
- 手臂模型:
python run.py --dataset_type arm --test_only --dataset_root ../data/test_clean --decoder_path experiments/cvae/arm_walls_new_test_more_data/decoder-final.pkl --run_id test_arm --output_path arm_output --env_path_root ../env
- 基础模型:
python run.py --dataset_type base --test_only --dataset_root ../data/test_clean --decoder_path experiments/cvae/base_walls_new_test_more_data/decoder-final.pkl --run_id test_base --output_path base_output
测试全流程
- 单集测试:
python generate_map_paths.py --env_path_root $PWD/../env --env_list 34 --test_only --input_path $PWD/../data/test/ --arm_decoder_path experiments/cvae/arm_multi_env_tables/decoder-final.pkl --base_decoder_path experiments/cvae/base_multi_env_tables/decoder-final.pkl --episode_id 5
- 批量测试(使用CVAE):
python generate_map_paths.py --env_path_root $PWD/../env --env_list 1 --test_only --input_path $PWD/../data/test --arm_decoder_path experiments/cvae/multi_env_tables/arm_multi_env_tables/decoder-final.pkl --base_decoder_path experiments/cvae/multi_env_tables/base_multi_env_tables/decoder-final.pkl --episode_id all --output_path env_1/test/cvae --cvae_planner
- 批量测试(不使用CVAE):
python generate_map_paths.py --env_path_root $PWD/../env --env_list 1 --test_only --input_path $PWD/../data/test --arm_decoder_path experiments/cvae/multi_env_tables/arm_multi_env_tables/decoder-final.pkl --base_decoder_path experiments/cvae/multi_env_tables/base_multi_env_tables/decoder-final.pkl --episode_id all --output_path env_1/test/cvae
- 演示:
python generate_map_paths.py --env_path_root $PWD/../env --env_list 34 --test_only --input_path $PWD/../data/test --arm_decoder_path experiments/cvae/arm_less_start_points/decoder-final.pkl --base_decoder_path experiments/cvae/multi_env_tables/base_multi_env_tables/decoder-final.pkl --episode_id 79 --cvae_planner
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】