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
Navigation
使用如下命令,将会启动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
自定义两轮机器人
添加传感器
Next: Matrix Decomposition
Previous: GMapping