ROS-基础(kinetic---melodic---noetic)

这篇博客详细介绍了ROS(Robot Operating System)的初步使用,包括工作空间和功能包的创建、集成开发环境的搭建、话题和服务的实现,以及命名空间和分布式通信的方法。通过实例演示了小乌龟仿真的操作,如创建节点、话题交互和服务调用。同时,讲解了ROS中的命名空间解析规则,以及如何进行多机通信的配置。此外,还探讨了工作空间覆盖的优势与风险,强调了命名空间在节点通信中的重要性。

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

学习资料参考:ROS机器人开发实践(胡春旭)

目录

  • 工作空间和功能包的创建
  • 集成开发环境的搭建
  • 话题和服务的实现方法
  • ROS中的命名空间及解析方法
  • ROS分布式通信的方法

热身

常用命令

命令作用
catkin_create_pkg创建功能包
rospack获取功能包的信息
catkin_make编译工作空间中的功能包
rosdep自动安装功能包依赖的其他包
roscd功能包目录跳转
roscp拷贝功能包中的文件
rosrun运行功能包中的文件
roslaunch运行启动文件

ROS第一个例程 小乌龟仿真

安装

sudo apt-get install ros-kinetic-turtlesim 

不同版本替换kinetic-melodic-noetic(kinetic基本没了)
noetic 完整桌面安装的话,这些东西都是有的

运行管理器结点——ROS master

roscore

新终端运行

rosrun turtlesim turtlesim_node

新终端运行控制节点

rosrun turtlesim turtle_teleop_key

exampe

名称类型描述
话题订阅turtleX/cmd_vel geometry_msgs/Twist控制乌龟角速度与线速度
话题发布turtleX/pose turtlesim/Pose乌龟的姿态信息,包括x与y的坐标位置,角度,线速度和角速度
服务clearstd_srvs/Empty清除仿真器中的背景颜色
resetstd_srvs/Empty复位仿真器到初始位置
killturtlesim/Kill删除一只乌龟
spawnturtlesim/Spawn新生一只乌龟
turtleX/set_penturtleX/SetPen设置画笔的颜色和线宽
turtleX/teleport_absoluteturtlesim/TeleportAbsolute移动乌龟到指定姿态
turtleX/teleport_relativeturtlesim/TeleportRelative移动乌龟到指定的角度和距离

创建工作空间和功能包

工作空间:存放工程开发相关文件的文件夹,包含

  1. Src
  2. Build
  3. Devel
  4. install(不必须)

创建工作空间

  • 创建 catkin_init_workspace
  • 编译catkin_make
  • 设置环境变量 source devel/setup.bash

创建功能包

  • cd src
  • catkin_create_pkg <package_name> [depend1] [depend2]
  • 编译
  • 设置环境变量

工作空间的覆盖

  • Overlaying
    • ROS优先查找最前端的工作空间
    • 新设置的工作空间会自动放在最前端
  • 优势:开发中替换系统或其他工作空间中原有的功能包
  • 风险:如果被依赖包被替换,那么该包产生潜在风险

ROS中的命名空间

计算图源

  • 节点
  • 参数
  • 话题
  • 服务
  • 示例:
    - /foo
    - /stanford/robot/name
    - /wg/nodel

计算图源命名(ROS封装的重要机制)

  • 每个资源都定义上在一个命名空间内
  • 该命名空间可以创建更多资源
  • 不同命名空间的资源
    - 在所处命名空间内使用
    - 全局范围内访问

有效的命名

  • 首字符必须是
    - 字母[a-z|A-Z] 波浪线(~) 左斜杠(/)
    - 后续可以是字母数字下划线或者左斜杠

命名解析

  • 基础(base):base
  • 全局(global): /global/name (/ 开头,影响功能包的可移植性)
  • 相对(relative):relative/name
  • 私有(private): ~private/name (~ 开头,节点内部的资源名称)
节点相对名称(默认)全局名称私有名称
/node1Bar–>/bar/bar–>/bar~bar-> /node1/bar
/wg/node2Bar–>/wg/bar/bar–> /bar~bar–>/wg/node2/bar
/wg/node3foo/bar–>/wg/foo/bar/foo/bar–>/foo/bar~foo/bar–> /wg/node3/foo/bar

命名重映射

节点命名空间重映射参数匹配名称解析名称
/foo:=barfoo, /foo/bar
/bazfoo:=barfoo, /baz\foo/baz/bar
//foo:=barfoo, /foo/bar
/bazfoo:=bar/foo/baz/bar
/baz/foo:=bar/foo/a/b/c/bar

分布式多机通信

  • 分布式软件框架
  • 节点间松耦合
  • 唯一Master
  • 其他机器通过ssh和Master联系
  • 多机通信的配置
    • ROS多机系统必处同一网络
    • ifconfig命令获取IP地址
    • 在/etc/hosts 加入对方的IP地址和计算机名
    • ping命令测试网络连通
    • 设置ROS相关环境变量
      • 设置 ROS_MASTER_URI
        • 在副机上设置环境变量
          - export ROS_MASTER_URI=http://hcx-pc:11311 (仅终端生效)
          - echo “export ROS_MASTER_URI=http://hcx-pc:11311”>> ~/.bashrc (所有终端生效)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值