1.在Ubuntu中安装ROS Indigo

本文详述了在Ubuntu中安装ROS Indigo的步骤,包括添加软件源、初始化rosdep、创建工作空间。同时介绍了ROS的核心概念,如节点、话题,通过实例演示了rosnode、rosrun的使用。进一步讲解了ROS服务、参数的管理和rqt_console、roslaunch的运用,为初学者提供了全面的操作指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 默认的编辑器可修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值