错误1
  • dpkg 被中断您必须手工运行 sudo dpkg –configure -a解决此问题
    1
    2
    3
    sudo rm /var/lib/dpkg/updates/*
    sudo apt-get update
    sudo apt-get upgrade
错误2
  • 车经常撞到墙上卡住
    原因,车的模型参数不一样,需要调整配置文件包括最小规划距离等
    解决方案:修改车的模型为NanoCar
    1
    sudo gedit ~/.bashrc
    修改最下面的
    1
    export BASE_TYPE=NanoCar
    保存
    更新文件并显示选定车模型名字
    1
    2
    source ~/.bashrc 
    echo $BASE_TYPE
下载功能包
1
2
3
4
5
6
7
8
9
10
cd ~/catkin_ws/src/
git clone https://gitee.com/bingda-robot/base_control.git
git clone https://gitee.com/bingda-robot/lidar.git
git clone https://gitee.com/bingda-robot/robot_vision.git
git clone https://gitee.com/bingda-robot/robot_navigation.git
git clone https://gitee.com/bingda-robot/robot_simulation.git
cd ~/catkin_ws/
catkin_make
cd ~/catkin_ws/
rosdep check --from-path src
  • 显示所有依赖已经满足,否则rosdep install —from-path src -y
  • 若rosdep无法正常工作则执行下面代码手动添加
    1
    sudo apt-get update
    1
    sudo apt-get install ros-$ROS_DISTRO-teleop-twist-keyboard ros-$ROS_DISTRO-amcl ros-$ROS_DISTRO-move-base ros-$ROS_DISTRO-slam-gmapping ros-$ROS_DISTRO-slam-karto ros-$ROS_DISTRO-cartographer ros-$ROS_DISTRO-cartographer-ros ros-$ROS_DISTRO-dwa-local-planner  ros-$ROS_DISTRO-teb-local-planner ros-$ROS_DISTRO-uvc-camera ros-$ROS_DISTRO-map-server ros-$ROS_DISTRO-hector-slam* ros-$ROS_DISTRO-global-planner ros-$ROS_DISTRO-navfn -y
    1
    rosdep check --from-path src
  • 显示所有依赖已经满足,否则rosdep install —from-path src -y
配置
1
sudo gedit ~/.bashrc
  • 在该文件的最后添加如下代码
  • catkin_ws为我的ROS工作路径
    1
    2
    source ~/catkin_ws/devel/setup.bash
    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/
  • 然后重启bashrc
    1
    source ~/.bashrc
  • 查看ROS路径是否添加上
    1
    echo $ROS_PACKAGE_PATH
  • 设置成功会显示你添加的路径。
建图
  1. 启动机器人模型
    1
    roslaunch robot_simulation simulation_one_robot.launch
  2. 查看当前运行话题
    1
    rostopic list
  3. 启动键盘节点
    1
    rosrun teleop_twist_keyboard teleop_twist_keyboard.py
  4. 配置你想使用的机器人BASE_TYPE这里的是NanoRobot
    1
    sudo gedit ~/.bashrc
    最后几行添加
    1
    export BASE_TYPE=NanoRobot
  5. 启动导航
    1
    roslaunch robot_navigation robot_slam_laser.launch 
    双击tab可以选择参数 simulation参数为false则启动机器人本体硬件
    1
    roslaunch robot_navigation robot_slam_laser.launch simulation:=true
    若出现错误则安装依赖
    1
    sudo apt install ros-melodic-map-server ros-melodic-amcl ros-melodic-gmapping
  6. 打开rviz界面
    1
    roslaunch robot_navigation slam_rviz.launch
  7. 按z降低机器人速度到0.22左右,否则过快建图失败或误差大
  8. 保存地图在家目录下名字为stag _map(-f后为起的名字)
    1
    rosrun map_server map_saver -f stage_map
指定导航
  1. 启动导航
    1
    roslaunch robot_navigation robot_navigation.launch simulation:=true open_rviz:=true
    若出现错误则安装包,按提示安装
    1
    2
    sudo apt install ros-melodic-move-base
    sudo apt install rosmelodic-teb-local-planner
  2. 点击rviz上方2d Nav Goal 在地图上选择目标点,小车会自己移动到指定点
    如果你使用的是Nanocar机器人模型,仿真走起来会扭,需要到工作空间的src下的robot_navigation包下的param
    点开进入Nanocar里的teb_local_planner_params.yaml 里面的cmd_angle_instead_rotvel参数改为True
多目标点导航
  1. 启动导航
    1
    roslaunch robot_navigation robot_navigation.launch simulation:=true
  2. 启动多点导航工具
    1
    roslaunch robot_navigation multi_points_navigation.launch
  3. 启动对应rviz配置
    1
    roslaunch robot_navigation multi_navigation.launch
  4. 点击rviz上方第二个2d Nav Goal 在地图上选择目标点,小车会多目标点导航
多点全自动巡航
  1. 启动导航
    1
    roslaunch robot_navigation robot_navigation.launch simulation:=true
  2. 订阅目标点的话题
    1
    rostopic echo /move_base_simple/goal
  3. 启动对应rviz配置
    1
    roslaunch robot_navigation navigation_rviz.launch
  4. 在rviz界面指定三个循环点(你随意)切记每一个点机器人到指定点后在标记下一点,终端显示三个目标点position x,y,z
  5. 写入lanch文件,打开工作空间->src->robot_navigation->lanch->way_point.lanch
    1
    2
    3
    <param name="goalListX" value="[2.0, 4.0, 1.0]" />
    <param name="goalListY" value="[3.0, 3.0, 2.0]" />
    <param name="goalListZ" value="[0.0, 0.0, 0.0]" />
  6. 第一列写第一个目标点的xyz,第二列写第二个目标点的xyz,依次类推并保存
  7. 启动该lanch文件指定循环次数为2,默认为0代表不停止的循环(roslaunch robot_navigation way_point.launch双击tab显示参数)
    1
    roslaunch robot_navigation way_point.launch looptimes:=2
通用命令
  1. roscd

    roscd跳转功能包目录用的,roscd后面要跟的是你的功能包名
  2. roscore

    启动了ros的一个master节点管理器和一些必要的日志输出文件以及我们前面所说到的的参数服务器
  3. rosrun

    功能是运行节点,rosrun后面是要带参数的,至少要带两个参数。第1个是功能包名,第二个是可执行程序名
节点rosnode
  1. rosnode

    输出节点相关信息,直接运行rosnode可以看到它的一些提示信息。这里会告诉你可以带哪些参数
  2. rosnode list

    列出当前节点
  3. rosnode info

    它后面还需要带一个参数,也就是我们的节点。他会列出节点的各种信息包括的名称,发布了哪些话题订阅了那些话题,有哪些服务,还有更详细的端口号,跟哪些节点有连接关系,还有它传输的方式是tcpros的方式
  4. rosnode kill

    结束一个节点
  5. rosnode machine

    列出运行在特定机器上的节点\
话题rostopic
  1. rostopic

    输出话题相关信息
  2. rostopic list

    列出当前所有活跃的话题
  3. rostopic info

    查看话题类型以及发布订阅关系,参数为话题名
  4. rostopic ehco

    打印出话题传出的内容,参数为话题名
  5. rostopic type

    输出话题类型,参数为话题名
  6. rostopic pub

    向话题发布数据,终端输入rostopic pub+话题名,输入完之后按两下tab可以自动补全消息的类型以及它里面要填充的参数
  7. rostopic hz

    检查消息发布频率,参数为话题名
服务rosservice
  1. rosservice list

    列出运行的程序当中所有使用到的服务
  2. rosservice info

    查看服务产生节点,服务类型以及参数Args:比如X坐标,y坐标,方向theta和名称,参数为服务名
  3. rosservice args

    列出了服务所需要用到的参数,参数为服务名
  4. rosservice call

    调用一下这个服务,参数为服务名,以及该服务的参数
  5. rosmsg show

    输出消息相关信息,参数为一个消息的类型
  6. rosservice info

    查看服务信息,参数为服务的类型
图形工具
  1. rqt_graph

    显示节点和节点之间的联系
  2. rqt_plot

    曲线绘图工具,进行运动控制之类的研究时可通过它把速度,位置等信息的曲线绘制出来。可通过它来观察运动是否平稳,曲线的变化情况等
  3. rviz

    除了刚刚说到的图像,还有地图、里程计、路径、点云等等都可以在这里面显示