ROS练习

ROS练习

过了一遍ros wiki的教程,感觉写的不是很详细,随便记点东西~
http://wiki.ros.org/ROS/Tutorials

1)查看ROS环境

#因为使用了zsh,所以需要重新设置环境变量
printenv | grep ROS #无输出
#打开/home/.zshrc添加一行
source /opt/ros/noetic/setup.zsh
#添加工作空间的环境变量
source /data/helloB/ROSWork/catkin_work/devel/setup.zsh
#查看是否配置成功
echo $ROS_PACKAGE_PATH
#查看安装了那些ros包
apt-cache search ros-noetic

在ros工作空间下进行各种测试,不然文件到处都是

2)linux

#查看当前版本shell
cat /etc/shells
echo $SHELL  #zsh
#在当前shell环境下读取并执行FileName中的命令
source filename # 该命令可用 . 代替: . filename
sh filename #创建一个子shell,并在子shell中执行脚本中的语句
./filename  #同sh filename (脚本本身具有可执行权限), . 表示当前目录

3)rospack,roscd,rosls

#使用rospack返回包路径
rospack find package_name #返回包节点名称
#使用roscd 进入包节点
roscd package_name/subdir
roscd roscpp/cmake
roscd log #进入ros存储日志的文件夹
#使用rosls列出包节点内容
rosls roscpp_turtorials
#ros指令支持tab键补全

4)catkin_create_pkg与rospack

# 将软件包构建在catkin工作空间下(src目录下)
cd src/
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp #构建的包名及相关依赖
#返回工作空间构建软件包
cd ..
catkin_make #构建软件包
#将构建后的工作空间添加到ros环境中
. ./devel/setup.zsh
#显示包节点的一阶依赖关系
rospack depends1 beginner_turtorials
#显示包节点的所有依赖关系
rospack depends beginner_turtorials
#package.xml的主要内容
<build_depend> : 编译时所需依赖
<buildtool_depend> : 用于构建工具包
<exec_depend> : 运行时所需软件包
<test_depend> : 测试软件包

5)catkin_make

#在catkin工作空间中构建ros节点
catkin_make #在catkin_ws目录下进行构建
catkin_make install
#在非catkin的工作空间中构建ros节点
catkin_make --source mysrc
catkin_make install --source mysrc

6)rosnode

ros节点是ros包中的可执行文件(ros包中有很多可执行文件)

#ros图的基本概念
Nodes;  Message;  Topics;  Master(ros的名称服务器);  rosout(ros的标准输入输出);  roscore(= Master + rosout + parameter server);
#使用ros第一步
roscore 

#rosnode 使用
rosnode list #查看ros节点
rosnode info /rosout #查看/rosout的详细信息

#rosrun使用
rosrun package_name node_name #运行包节点中的某一节点
rosrun turtlesim turtlesim_node 
#给启动的节点自定义名称
rosrun turtlesim turtlesim_node __name:=my_turtle

#rosnode ping测试节点是否启动
rosnode ping myturtle

7)rostopic

# 启动roscore
roscore
# 查看发布到主题上的数据信息
rostopic echo /turtle1/cmd_vel
# 列出所有的主题信息
rostopic list -v #列出详细信息
rostopic list -p #列出发布者
rostopic list -s #列出订阅者
# 列出rostopic主题的类型
rostopic type /turtle1/cmd_level
# 显示数据类型
rosmsg show geometry_msgs/Twist
# 发布特定消息到某一主题
rostopic pub -l /turtle1/cmd_level geometry_msgs/Twist -- '[2.0 ,2.0 2.0]' '[0.0, 0.0 , 1.8]' #-l表示只发布一次
rostopic pub /turtle1/cmd_level geometry_msgs/Twist  -r 1 -- '[2.0 ,2.0 2.0]' '[0.0, 0.0 , 1.8]' #-l表示只发布一次
# 报告数据发布到主题上的频率
rostopic hz [topic]
# 使用rqt_plot 进行绘图
rosrun rqt_plot rqt_plot #启动rqt_plot Node

8)rosservice 与rosparam

  1. 服务是节点相互通信的另一种方式,服务允许节点发送请求并接收响应;
# 列出节点支持的服务
rosservice list
# 查看某一服务需要的数据类型
rosservice type [service]
demo:
rosservice type /spawn | rossrv show
# 调用某一服务的方法
rosservice call [service] [args]
demo:
rosservice call /spawn 2 2 0.2 ""
  1. rosparam允许你在ros参数服务器上存储和处理数据,rosparam使用yaml标记语法;
# 列出参数服务器上的当前参数
rosparam list
# 设置ros参数
rosparam set [param_name]
# 获取ros参数
rosparam get [param_name]
# 从参数服务器上存储参数到本地文件
rosparam dump [file_name] [namespace]
# 从本地加载参数服务器
rosparam load [file_name] [namespace]

9)rqt_console与roslaunch

# 启动rqt_console与rqt_logger_level
rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level
  1. 日志记录级别:Fatal,Error,Warn,Info,Debug
# 使用roslaunch 启动launch文件中定义的节点
roslaunch [package] [filename.launch]

# 首先在包节点下创建launch文件夹
roscd beginner_tutorials
mkdir launch
cd launch
vim turtlemimic.launch # 创建并编辑launch文件
   1 <launch>   #启动标签
   2 
   3   <group ns="turtlesim1">  #命名空间标签
   4     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   5   </group>
   6 
   7   <group ns="turtlesim2">
   8     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   9   </group>
  10 
  11   <node pkg="turtlesim" name="mimic" type="mimic"> #以主题输入输出重命名为turtlesim1和turtlesim2来启动模拟节点
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  15 
  16 </launch>
rqt_graph : 图形化显示Node Graph

10) rosed

rosed 是rosbash的一部分,她允许直接使用包名称直接编辑包中的文件,而不必键入包的完整路径

use:
rosed [package_name] [filename]
demo:
rosed roscpp Logger.msg
# rosed 支持tab键补全

rosed默认的编辑器是vim

11)rossrv 与rosmsg

  1. msg : msg文件是用于描述ros消息字段的简单文本文件,用于为不同语言生成源代码;
  2. srv : srv文件用于描述服务,其由2部分组成:请求和响应;
  3. msg包含的字段:int8、int16、int32、int64、float32、float64、string、time、…;srv类似msg,但其包含request与response两部分;
demo :
roscd beginner_tutorials
#使用msg
mkdir msg #将msg文件放在msg文件夹下
echo "int64 num" > msg/Num.msg
#在package.xml中添加字段
...
#在CMakeLists.txt中添加字段
...
#使用rosmsg
rosmsg show beginner_tutorials/Num

#使用srv
roscd beginner_tutorials
mkdir srv
roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
#在package.xml与CMakeList.txt中添加字段
...
#roscp使用
roscp [package_name] [file_to_copy] [copy_path]
#使用rossrv
rossrv show beginner_tutorials/AddTwoInts

编写完srv与msg文件,配置好package.xml与CMakeList.txt文件后,重新进行catkin_make编译生成源代码

roscd beginner_tutorials
cd ../..
catkin_make
cd -

12)编写Publisher与Subscriber节点

13)编写Server与Client节点

14)rosbag

  1. 从运行的ros系统中记录主题数据,并将数据保存在bag file文件中
rosbag info <yourbagfile>
rosbag play <yourbagfile> #回放
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值