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

学习资料参考: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 (所有终端生效)
这个错误信息通常出现在尝试使用 `apt-get` 或 `apt` 命令安装 ROS(Robot Operating System)包时。具体来说,`E: 无法定位软件包 ros-kinetic-ros-tutorials` 表示系统无法找到名为 `ros-kinetic-ros-tutorials` 的软件包。这可能是由于以下几个原因造成的: 1. **ROS 版本不匹配**:你可能安装的是 ROS 的其他版本(如 MelodicNoetic 等),而不是 Kinetic。 2. **未添加 ROS 源**:系统可能没有正确添加 ROS 的软件源。 3. **未更新软件包列表**:在安装软件包之前,通常需要更新软件包列表。 以下是一些可能的解决方案: 1. **检查 ROS 版本**: 首先,确认你安装的是 ROS Kinetic。你可以在终端中运行以下命令来检查已安装的 ROS 版本: ```sh rosversion -d ``` 2. **添加 ROS 软件源**: 如果你还没有添加 ROS 的软件源,可以按照以下步骤进行操作: ```sh sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` 3. **更新软件包列表**: 在添加软件源后,更新软件包列表: ```sh sudo apt-get update ``` 4. **安装 ROS Kinetic**: 如果你还没有安装 ROS Kinetic,可以按照以下步骤进行安装: ```sh sudo apt-get install ros-kinetic-desktop-full ``` 5. **安装特定包**: 如果你只是想安装 `ros-kinetic-ros-tutorials`,可以尝试以下命令: ```sh sudo apt-get install ros-kinetic-ros-tutorials ``` 如果以上步骤都无法解决问题,建议检查网络连接是否正常,或者尝试更换软件源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值