mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make
source ~/catkin_ws/devel/setup.bash
echo $ROS_PACKAGE_PATH
echo "source ~/catkin_ws/devel/setup.bash " >> ~/.bashrc
source ~/.bashrc
gedit ~/.bashrc
cd ~/catkin_ws/src
catkin_create_pkg <package_name> [depend1] [depende2] [depende3]
catkin_create_pkg package_test std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
rospack find <package_name>
rospack <package_name>
查看节点之间的流程图 rosrun rqt_graph rqt_graph
查看我们运行的节点 rosnode list
查看运行的话题 rostopic list
查看每个节点的性质 rostopic list -v
cv_bridge 这个程序包是连接ROS和Opencv的程序包
Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
rosout: 标准输出/标准错误的输出
roscore: Master+rosout+parameter server
Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件,可执行文件,脚本及其它的一些文件。
要启动节点管理器,使用如下命令:roscore 。
roslaunch 是个启动文件,其目的是一次性启动多个节点。
列出当前处于活动状态的所有节点:rosnode list
返回某指定节点的信息:rosnode info 节点名字
rosun 命令能够直接利用包名运行一个节点,而不需要知道包的路径:
rosrun [package_name] [node_name]
在新的 terminal 中运行下列命令:
$ rosrun turtlesim turtle_teleop_key
运行之后可以通过键盘的方向键控制小乌龟的移动:
需要注意的是,控制时,应该是打开 turtle_teleop_key 的那个 terminal。
turtlesim_node 和 turtle_teleop_key 节点通过 ROS Topics 与其他节点通信。
turtle_teleop_key 在一个 topic上发布键盘输入信息,
而 turtlesim 订阅同一个 topic 的信息来接收键盘输入。
我们可以用 rqt_graph查看当前正在运行的节点和 Topics。
rqt_graph 创建当前正在运行的系统的一个动态框图。
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
该 命 令 向 /turtle1/cmd_vel
这 个 topic 上 发 布 了 一 个 消 息 ,
这 个 消 息 的 类 型 是geometry_msgs/Twist
类型的
表征小龟的线速度和角速度,这个消息的值为“[2.0, 0.0, 0.0] [0.0,0.0, 1.8]”
。
也就是说小龟在 x 轴(这个坐标系是固结在小龟身上的,以小龟向前的方向为 x 轴,垂直于小龟移动平面,
从小龟腹部指向龟壳的方向为 z 轴,y 轴方向以右手坐标系标准确定)方向速度为 2.0,
y 方向线速度为 0,z 轴方向速度为 0.绕 x 轴角速度为 0,绕 y 轴角速度为 0,绕 z 轴角速度为 1.8。
因此,小龟就开始绕圈跑,绕圈半径为 2/1.8。参数-1 的含义是 rostopic 只发布一个 message然后退出。
在命令行里,-
称为 dash,意思是短横,单个短横称为 dash-one。
含义是该参数是可缺省的。
--
称为double-dash,是双短横,表示这之后的参数是不可缺省的。
转一次
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 -- '[2.0, 0.0,0.0]' '[0.0, 0.0, 1.8]'
原地转圈
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[0.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
rostopic hz
命令报告每一个数据发布的频率。
格式:
rostopic hz [topic]
如:
$ rostopic hz /turtle1/pose
rqt_plot 可以动态显示发布到 topic 中的数据。我们可以用 rqt_plot 命令画出发布到/turtle1/pose 这个
Topic 上的数据。首先,用下面命令启动 rqt_plot.
$ rosrun rqt_plot rqt_plot
rosservice list 命令列出了当前活动的 turtlesim 提供了 9 种服务
rosparam list 查看一下当前都有哪些参数在 param server 上。
$ rosparam list
可以看到 turtlesim 节点有三个与北京颜色相关的参数存储在 param server 上。
/background_b
/background_g
/background_r
可以把背景色的红色分量设为 150.如
$ rosparam set background_r 150
这个命令改变了参数的值,但是你会看到还没什么变化啊。接下来我们必须调用 clear service 使参数
变化生效:
$ rosservice call clear
我们可以把所有参数写入一个名为“params.yaml”的文件
$ rosparam dump params.yaml
也可以把这些 yaml 文件装载如一个 namespaces,比如一名名为 copy 的 namespaces。
$ rosparam load params.yaml copy
rqt_console 和 ros_logger_level 用于 debug 调试,roslaunch 用于一次打开多个节点。
roslaunch turtlemimic.launch
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
用 tab 键编辑一个包下的所有文件。
$ rosed [package_name]
上式中表示按一下 tab 键。连按两下会列出该包下的所有文件。
在 ROS 中还有一种特殊的数据类型:Header。
Header 包含了一个时间戳和一个笛卡尔坐标信息,通常在一个 msg 文件的头一行都有一个 Header 数据。