# navigation **Repository Path**: RICS-Group/navigation ## Basic Information - **Project Name**: navigation - **Description**: 2D navigation demo of SC-01 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-01-23 - **Last Updated**: 2022-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一. 简介 这是一个基于2D地图的自主导航系统,利用cartographer建图与定位,用move_base进行导航,实现的功能是指定目标点让山城一号自主导航过去。 二. 准备工作 1. 系统 - Ubuntu 18.04 - ROS - Python 2.7(ROS自带) 2. 安装requests库 ``` sudo apt-get install python-requests sudo apt-get install -f python-requests ``` 3. 安装cartographer `sudo apt-get install ros-melodic-cartographer*` 4. 安装move_base `sudo apt-get install ros-melodic-navigation` 5. 连接车和电脑 方法一:用网线连接车端口和电脑网口 方法二:无线方式,连接车上的交换机(wifi) 三. 使用方法 1. 新建工作空间和编译 - 新建一个工作空间,并将src文件夹放到工作空间 - 打开src文件,输入`catkin_init_workspace`给工作空间属性 - 打开根目录,输入`catkin_make`编译工作空间 2. 启动机器人的命令及相关文件 - 16线激光雷达启动文件:`src/ros_rslidar/rslidar_pointcloud/launch/rs_lidar_16.launch`,启动命令:`roslaunch rslidar_pointcloud rs_lidar_16.launch`,要想在rviz下看到点云信息,需要把Global Options里面的Fixed Frame设置为rslidar,因为这个雷达启动后的frame_id是rslidar - 16线激光雷达压缩为单线激光雷达启动文件:`src/pointcloud_to_laserscan/launch/point_to_scan.launch`,启动命令:`roslaunch pointcloud_to_laserscan point_to_scan.launch`,frame_id也是rslidar - cartographer建图文件:`src/carto/launch/demo_2d.launch`,启动命令:`roslaunch carto demo_2d.launch`。建图时要先启动激光雷达节点。保存地图命令如下: ``` rosservice call /finish_trajectory 0 #当使用cartographer在线建图时,cartographer不知道什么时候结束,所以要先调用服务来关闭传感器数据的接收。 rosservice call /write_state "{filename: '/home/zzs/slam_ws/src/carto/configuration_files/demo_map/map_2d_4.pbstream'}" #将当前地图信息的快照保存为后缀名为.pbstream。 rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem='/home/zzs/slam_ws/src/carto/configuration_files/demo_map/map_2d_4' -pbstream_filename='/home/zzs/slam_ws/src/carto/configuration_files/demo_map/map_2d_4.pbstream' -resolution=0.05 #通过cartographer提供的ros包,将后缀名为.pbstream的地图信息,转化成ros地图信息 ``` - 一键启动文件:`src/platform/launch/one_start.launch`,启动命令:`roslaunch platform one_start.launch`。下面分别介绍在`onstart.launch` 中包括的四个launch的含义。 - `src/point_2d/launch/transform.launch`:激光雷达启动文件,并将16线激光压缩成单线。 - 启动命令:`roslaunch point_2d transform.launch` - `src/carto/launch/demo_2d_localization.launch`:cartographer纯定位,输出/tf给move_base - 启动命令:`roslaunch carto demo_2d_localization.launch` - `src/platform/launch/demo_move_base.launch`:move_base启动文件,用于导航,会输出/cmd_vel,控制车的线速度和角速度 - 启动命令:`roslaunch platform demo_move_base.launch` - `src/driver/launch/driver.launch`:机器人驱动文件,接收move_base发送的/cmd_vel,并按照这个角速度和线速度运动 - cartographer给定初始位置文件:`src/carto/launch/catographer_start_trajectory.launch`,启动命令:`roslaunch carto catographer_start_trajectory.launch`。要在定位节点启动三秒以后再启动,这个文件也可以不启动,除非初始的定位非常不准,而且环境的特征点很不丰富。 - 初始点获取文件:`src/driver/scripts/initial_pose.py`,启动命令`rosrun driver initial_pose.py`,在rviz里面用绿色箭头点一个初始位置,然后在终端就能看到获取的初始位置坐标,将这个坐标复制到catographer_start_trajectory.launch里面,然后再启动这个launch,这样就设置好了初始位置。 - 机器人描述文件:`src/demo_description/urdf/demo.urdf`,用来描述机器人各个组成部分之间的坐标转换关系。