# ros1-nav **Repository Path**: moi-tech/navigation ## Basic Information - **Project Name**: ros1-nav - **Description**: 本仓库基于ROS1 noetic 20.4 汇总了github上优秀的导航算法。并做出详细的教程,欢迎有志之士一起开构建教程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-28 - **Last Updated**: 2024-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 1 移动机器人路径规划 ## 1.1 背景介绍 本项目基于ROS1 noetic 20.04 版本开发 研究。 本项目主要通过DWA法,state lattice 算法,hybrid-star算法介绍目前常用了采样路径规划算法 ## 1.2 图优化 主要通过teb_local_planner, mpc_local_planner fast-planner介绍基于图优化的路径规划和基于mpc(model predictive controll)方式的凸优化的移动机器人路径规划方式。 本项目可以让你接触到著名G2O图优化框架和OSQP,IPOPT等凸优化工具等。 # 2 环境准备 ## 2.1 基于非Docker的安装 需要Ubuntu 20.04 和 ros noetic desktop 版本安装好 直接下载代码即可 ```sh git clone https://gitee.com/moi-tech/navigation.git ``` 以下部分可以省略 ## 2.2 基于Docker 的环境(推荐) ### 2.2.1 Docker 安装 官方安装教程 https://docs.docker.com/engine/install/ubuntu/ ```sh #如果之前安装过有问题无法启动的 卸载所有docker 相关的 rm -rf ~/.docker/ rm -rf /etc/docker rm -rf /run/docker rm -rf /var/run/docker rm -rf /var/lib/dockershim rm -rf /var/lib/docker sudo apt-get purge docker-* ## 接下来 重新安装 # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ## 查看docker 添加组用户 sudo usermod -aG docker $USER systemctl docker.service start ``` ### 2.2.2 配置国内加速地址 目前官网的hub.docker 已经被屏蔽 无法直接下载镜像 以下是最新可用加速地址 https://cloud.tencent.com/developer/article/2454486 复制到 以下内容 到 /etc/docker/daemon.json ```sh { "registry-mirrors": [ "https://hub.uuuadc.top", "https://docker.anyhub.us.kg", "https://dockerhub.jobcher.com", "https://dockerhub.icu", "https://docker.ckyl.me", "https://docker.awsl9527.cn" ], "exec-opts": ["native.cgroupdriver=systemd"], "max-concurrent-downloads": 10, "max-concurrent-uploads": 5, "log-opts": { "max-size": "300m", "max-file": "2" }, "live-restore": true } ``` 然后需要重新启动 ``` sudo systemctl daemon-reload sudo systemctl restart docker ``` 如果出现问题 单独调试工具如下 ```sh # 单独在终端输出调试 如果遇到问题 systemctl stop docker.service # 在终端启动docker engine 服务的意思 sudo dockerd ``` ### 2.3 ROS 安装 #### 2.3.1 安装 noetic-desktop-full image 随便选择一个加速地址然后下载ros 版本 如果一个地址不能用了 多试几个 ```sh #这个速度挺快的 2024/10/29 下载测试 docker pull docker.m.daocloud.io/osrf/ros:noetic-desktop-full #docker pull docker.awsl9527.cn/osrf/ros:noetic-desktop-full #docker pull docker.ckyl.me/osrf/ros:noetic-desktop-full ``` 安装成功以后 ```sh docker image list ``` 显示如下 ```sh $docker image list REPOSITORY TAG IMAGE ID CREATED SIZE docker.m.daocloud.io/osrf/ros noetic-desktop-full f19749f1e3da 12 days ago 3.44GB ``` #### 2.3.2 下载代码 ```sh ``` #### 2.3.3 创建container NAV 创建一个nav 的容器 并以交互模式运行 这里的/path/navigation 为你代码的下载地址 ```sh #-v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/dri:/dev/dri -e DISPLAY=$DISPLAY 用来显示的 #-v /path/navigation:/home/navigation 用来映射路径用的 #增加本地的X11 显示功能 $sudo xhost +local: ## 创建container #注意根据实际地址 修改 这里的路径${project_path} $docker run -it -v /home/moi/navigation:/home/navigation -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/dri:/dev/dri -e DISPLAY=$DISPLAY --name=nav docker.m.daocloud.io/osrf/ros:noetic-desktop-full /bin/bash ``` 开始容器 ```sh $docker start nav ``` 重新查看 container list ```sh $docker container list CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 14a190021948 docker.m.daocloud.io/osrf/ros:noetic-desktop-full "/ros_entrypoint.sh …" 2 minutes ago Up 8 seconds nav ``` #### 2.3.4 正常情况进入 container 以交互模式进入容器 ```sh $docker exec -it nav /bin/bash ``` ```sh docker container start nav docker container stop nav docker container rm nav ``` ### 其他docker 命令 保存自己的修改为新的镜像 docker commit nav ros-noetic-nav