ROS初学者教程(一)(官方教程精简)-飞
发布时间: 2023-07-06

官方初学者教程太啰嗦了,精简压缩一下,便于使用查阅

1. 环境变量
    打印ROS相关环境变量
    $$ printenv | grep ROS更新ROS环境变量
    $$ source /opt/ros/<distro>/setup.bash
2. catkin工作空间
    创建工作空间
$$ mkdir -p ~/catkin_ws/src$$ cd ~/catkin_ws/$$ catkin_make
    将工作空间加入环境变量
    $$ source devel/setup.bash检查工作空间环境变量是否配置成功
$$ echo $$ROS_PACKAGE_PATH/home/baby/catkin_ws/src:/opt/ros/noetic/share
3. ROS文件系统
    基本概念Packages:包是ROS代码的基本组织单元,每个包可包含库、可执行文件、脚本及其他组件;Manifests(package.xml):包的描述信息,包含所需的依赖,包的基础信息,包括版本、描述、License等。文件系统工具rospack find [package] :查找软件包;roscd <package-or-stack>[/subdir]: 去包的根目录或子目录下;roscd log: 去日志目录下;rosls <package>[/subdir]:显示包根目录或子目录的文件

注: 这些工具自对ROS_PACKAGE_PATH环境变量下的包有效

4. 包的创建
    包的组成package.xml:提供包的基本信息CMakeList.txt: 用于catkin构建单独的文件夹:一个目录不能包含多个包,也不能有嵌套包包的创建:catkin_create_pkg
    需要先去src目录下:
$$ cd ~/catkin_ws/src$$ catkin_create_pkg <package_name> [depend1] [depend2] [depend3]$$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
    包的依赖查看直接依赖:rospack depends1 <package_name>查看所以依赖:rospack depends <package_name>package.xml文件详解
<?xml version="1.0"?>      <package format="2">      <name>beginner_tutorials</name>   <!-- 名称  -->      <version>0.1.0</version>                  <!-- 版本 -->      <description>The beginner_tutorials package</description> <!-- 描述 -->          <maintainer email="you@yourdomain.tld">Your Name</maintainer> <!-- 维护者 -->      <license>BSD</license> <!-- License -->      <url >http://wiki.ros.org/beginner_tutorials</url>    (两个务必具体是指:两个务必具体是指:务必使同志们继续地保持谦虚、谨慎、不骄、不躁的作风;务必使同志们继续地保持艰苦奋斗的作风。) <author email="you@yourdomain.tld">Jane Doe</author>        <buildtool_depend>catkin</buildtool_depend>  <!-- 构建工具 -->        <!-- 依赖列表 -->     <build_depend>roscpp</build_depend>     <build_depend>rospy</build_depend>     <build_depend>std_msgs</build_depend>        <!-- 运行时依赖 -->     <exec_depend>roscpp</exec_depend>     <exec_depend>rospy</exec_depend>     <exec_depend>std_msgs</exec_depend>     </package>
5. 包的编译

需要在工作空间根目录下, 然后将工作空间加入到ROS环境变量中。

$$ cd ~/catkin_ws$$ catkin_make  # 会构建src目录$$ catkin_make install  # 可选步骤$$ . ~/catkin_ws/devel/setup.bash
6. ROS Node
    基本概念Node:ROS程序可执行单元,可提供服务或与其他Node通信;Message:发布/订阅Topic时使用的数据类型;rosout:等价于strout/stderr;Master:ROS的名称服务节点,帮助其他Node发现对方;Topic:Node可以发布或订阅Topic,实现彼此异步通信;roscore:Mater + rosout + paramaster server;roscore
    roscore是使用ROS时第一个要运行的命令,会启动Master、rosout、parameter servcie;rosnoderosnode list:列出所有node;rosnode info <node>: 查看node详情;rosnode ping <node>: 测试node是否up;rosrunrosrun [package_name] [node_name]:启动node节点
    如:启动小乌龟程序:
    $$ rosrun turtlesim turtlesim_node
    $$ rosrun turtlesim turtle_teleop_key
    启动时可以改变node的名称:
    $$ rosrun turtlesim turtlesim_node __name:=my_turtle
7. Topics
    rqt_graph
    rqt_graph可以图像化展示Topic及发布订阅着信息,启动命令:
    $$ rosrun rqt_graph rqt_graphrostopicrostopic echo [topic]: 打印Topic中的Msgrostopic list -v: 列出所有的Topicrostopic type [topic]: 查询Topic的Message类型rostopic pub [topic] [msg_type] [args] : 向队列中发送消息
    $$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
    或者
    $$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'rostopic hz [topic]: 统计Topic发布速率;rosmsgrosmsg show [msg_type]: 查询message类型
    $$ rostopic type /turtle1/cmd_vel      geometry_msgs/Twist$$ rosmsg show geometry_msgs/Twist
8. Service
    rosservice

rosservice list print information abo

微信