1.安装
添加软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
##国内mirror(下载速度快一点)
sudo sh -c '. /etc/lsb-release && echo "deb http://ros.exbot.net/rospackage/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
添加key
sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
安装
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full
//安装桌面完整版
apt-cache search ros-indigo
//查找可用安装包
初始化 rosdep
在开始使用ROS之前还需要初始化rosdep。rosdep可以方便在需要编译某些源码的时候为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。
sudo rosdep init
rosdep update
环境设置
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装 rosinstall
rosinstall 是ROS中一个独立分开的常用命令行工具,它可以方便让你通过一条命令就可以给某个ROS软件包下载很多源码树。
sudo apt-get install python-rosinstall
2.创建一个工作空间
cd ~
mkdir -P Roswork/src
cd Roswork/src
catkin_init_workspace
cd ..
catkin_make
cd src
catkin_create_pkg beginner1 roscpp rospy std_msgs
cd ..
echo "source ~/Roswork/devel/setup.bash" >> ~/.bashrc
3.理解ROS节点、ROS话题
介绍 ROS 图(graph)概念 并讨论roscore、rosnode和 rosrun 命令行工具的使用。
roscore
rosnode list
看到
表示当前只有一个节点在运行: rosout。因为这个节点用于收集和记录节点调试输出信息,所以它总是在运行的。
rosnode info 命令返回的是关于一个特定节点的信息。
![]()
可以看到更多的关于节点的信息。
例如,事实上由它发布/rosout_agg.
#rosrun [package_name] [node_name]
rosrun turtlesim turtlesim_node
#出现一个海龟仿真界面
rosnode list
接下来,关闭这个节点
运行
rosrun turtlesim turtlesim_node __name:=my_turtle
rosnode list
可以看到
ROS的一个强大特性就是可以通过命令行重新配置名称。
运行
rosnode ping my_turtle
看到
关闭上一个命令。
接下来运行
rosrun turtlesim turtle_teleop_key
打开了一个键盘控制节点
可以通过键盘控制turtle移动了。
rqt_graph能够创建一个显示当前系统运行情况的动态图形。rqt_graph是rqt程序包中的一部分。
在一个新的终端运行
rosrun rqt_graph rqt_graph
可以看到
方框内的椭圆则是节点node,箭头表示了数据的流向,即/my_turtule订阅了/teleop_turtle发布的一个话题topic。
箭头线上的则是topic。
可以使用
rostopic echo /turtle1/cmd_vel
实时打印topic的数据,这时刷新以下rqt_graph
打开一个新的终端
##rostopic list 能够列出所有当前订阅和发布的话题。
rostopic list
rostopic list -v 显示出有关所发布和订阅的话题及其类型的详细信息。
##rostopic type 命令用来查看所发布话题的消息类型。
rostopic type /turtle1/cmd_vel
rosmsg 查看消息的详细情况
rostopic 针对于被发布(即运行的)消息,rosmsg 针对于存在的消息
使用rostopic 发布消息 -r 循环发布
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0" -r2
##rostopic hz命令可以用来查看数据发布的频率。
rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形。这里我们将使用rqt_plot命令来绘制正在发布到/turtle1/pose话题上的数据变化图形。首先,在一个新终端中运行rqt_plot命令:
rosrun rqt_plot rqt_plot
在左上角的输入栏可以输入要显示的数据
4.ROS服务与参数
服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)
使用方法
rosservice list 输出可用服务的信息
rosservice call 调用带参数的服务
rosservice type 输出服务类型
rosservice find 依据类型寻找服务find services by service type
rosservice uri 输出服务的ROSRPC uri
rosservice list -n ##使显示提供服务的节点
运行
rosservice call /clear ##清除海龟的运行轨迹
rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用来操作参数,如下所示:
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从文件读取参数
rosparam dump 向文件中写入参数
rosparam delete 删除参数
rosparam list 列出参数名
运行
rosparam set /background_r 150
rosservice call /clear
使得海龟的背景变成了紫色。
rosparam get / ##获得参数服务器上所有内容
如果希望存储这些信息
rosparam dump [file_name]
rosparam load [file_name] [namespace]
运行
rosparam dump params.yaml ##存储 / 上参数
rosparam load params.yaml copy ##加载参数到 /copy
rosparam get copy/background_b
5.rqt_console 和 roslaunch
rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。
日志等级按以下优先顺序排列:
Fatal
Error
Warn
Info
Debug
roslaunch可以用来启动定义在launch文件中的多个节点。
cd ~/Roswork/src/beginner1/
mkdir launch
cd launch
touch first.launch
添加内容:
<launch>
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
</launch>
解析:
<launch>标签表示是一个launch文件
<group ns="namespace">创建一个命名空间
<node pkg="pkg" name="sim" type="node"/>启动节点 pkg属性是node来自的包 type属性是node
<rempa from="" to=""/>重映射
接下来运行launch文件
roslaunch beginner1 first.launch
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0" -r1
##可以看到两只乌龟同时在动
export EDITOR=’emacs -nw’ ##rosed 默认的编辑器可修改