Skip to main content

ROS Navigation Stack

Published: 2020-01-09 | Lastmod: 2020-01-27

ROS系统结构 #

ROS Node

ROS Node: 功能模块以Node的形式,处理某一特定的任务。

ROS Master: 记录所有现存的node,保证node之间的信息交流。parameter server运行在其中,实现参数与配置信息的共享。

ROS信息交互

单向通信:一个node发布topic,一个node订阅该topic

双向通信:一个node向另一个node发送信息并请求回复,使用service

查看ROS信息

rosnode list
rostopic list
rosservice list
rostopic info /turtle1/cmd_vel
rosmsg info geometry_msgs/Twist
rqt_graph

ROS安装 #

ROS官网教程:ROS Tutorials

安装ROS基本功能包

由于Ubuntu默认软件源在国内访问速度较慢,建议切换到阿里云。

安装ROS:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

由于Gazebo第一次打开时,需要联网下载模型,若网络太慢,Gazebo可能卡在启动页面一直不动。 建议手工下载Gazebo Models,并解压到/usr/share/gazebo-7/models路径下。

In virtual machine, Gazebo 7.0.0 doesn’t publish topic. We need to upgrade to Gazebo 7.11

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo7

安装turtlebot导航包

When running VM on Win10, turn off hardware acceleration for 3D graphics. Otherwise Gazebo may crash.

安装turtlebot导航包:

sudo apt-get install ros-kinetic-turtlebot-*

导航包演示操作 #

Mapping

使用如下命令,可以打开Gazebo的仿真环境,看到Rviz的消息显示界面,后台的GMapping建图功能也已启动,只需要在Terminal中操作键盘,可以控制机器人在仿真环境中运动。

roslaunch turtlebot_gazebo turtlebot_world.launch
roslaunch turtlebot_gazebo gmapping_demo.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch
roslaunch turtlebot_teleop keyboard_teleop.launch

建图完成后,通过如下命令保存建好的地图:

mkdir ~/turtlebot_custom_maps
rosrun map_server map_saver -f ~/turtlebot_custom_maps/tutorial

使用如下命令,将会启动AMCL定位功能。在Rviz中设定机器人的目标位置,结合上一步建成的地图,可以进行机器人导航。

roslaunch turtlebot_gazebo turtlebot_world.launch
roslaunch turtlebot_gazebo amcl_demo.launch map_file:=/home/user/turtlebot_custom_maps/tutorial.yaml
roslaunch turtlebot_rviz_launchers view_navigation.launch

自定义机器人 #

Gazebo用作机器人的仿真环境,有丰富的教学资源。Gazebo Tutorials

自定义两轮机器人

Make a Mobile Robot

添加传感器

Creating a camera


Next: Matrix Decomposition
Previous: GMapping