ROS常用工具

1. 命令链接

2.常用命令列表

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
rosout: ROS中相当于stdout/stderr。

[Remote PC] 显示topic的消息定义
$ rostopic type [topic] | rosmsg show

[Remote PC] 显示Node或Topic相关信息
$ rosnode info [node] # 可相看Node的所有相关的Topic和Service
$ rostopic info [topic]

[ROS TF查看TF在干什么]
$ rosrun tf view_frames # 生成坐标系树并保存在 frames.pdf中
$ evince frames.pdf # 显示上面生成的坐标系树

$ rosrun rqt_tf_tree rqt_tf_tree # 查看实时坐标系树

$ rosrun tf tf_echo [reference_frame] [target_frame] # target_frame相对于reference_frame的坐标
如:rosrun tf tf_echo map odom

==Turtlebot3-burger begin=

apt-cache search ros-Kinetic
sudo apt-get install ros-Kinetic-PACKAGE
sudo apt-get install ros-Kinetic-slam-gmapping

[Remote PC] 启动Master, 一个系统就一个Master,通过配置环境变量ROS_MASTER_URI进行配置,它管理消息的收发以及node注册
$ roscore

[TurtleBot3 SBC] 启动读串口结点(serial_node.py port=/dev/ttyACM0 baud=115200)、
读LDS数据(hlds_laser_publisher port=/dev/ttyUSB0 frame_id=base_scan)
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

或以下两条命令
$ roslaunch turtlebot3_bringup turtlebot3_core.launch
$ roslaunch turtlebot3_bringup turtlebot3_lidar.launch

[Remote PC] 运行 RViz 以查看激光点数据
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_bringup turtlebot3_model.launch

[Remote PC] 通过键盘控制线速度和角速度
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

[Remote PC] 运行SLAM
$ roslaunch turtlebot3_slam turtlebot3_slam.launch

[Remote PC] 设置SLAM算法 gmapping, cartographer, hector, karto, frontier_exploration
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer

[Remote PC] 保存地图, 保存到
$ rosrun map_server map_saver -f ~/map

==Turtlebot3-burger end=

SLAM算法分为三类:Kalman滤波、概率滤波、图优化

https://ieeexplore.ieee.org/document/8206595/
VinySLAM: An indoor SLAM method for low-cost platforms based on the Transferable Belief Model

ROS_PACKAGE_PATH

rosbag record/play : 录制/回放topics

创建ROS程序包
$ cd ~/catkin_ws/src
#catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp # 创建一个名为’beginner_tutorials’的新程序包,
# 这个程序包依赖于std_msgs、roscpp和rospy
$ rospack depends1 beginner_tutorials # 查看程序的一级依赖包
$ rospack depends beginner_tutorials # 查看程序的递归依赖包

#在catkin工作空间下
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=…] # catkin_make是在CMake标准工作流程中依次调用了cmake 和 make

$ rosed [package_name] [filename] # ros编辑器,它调用vim,简化进入特定目标

$ rosmsg show beginner_tutorials/Num # 查看消息定义
$ rossrv show beginner_tutorials/AddTwoInts # 查看服务定义

####### Running #########
$ roscore ## 是你在运行所有ROS程序前首先要运行的命令。
$ rosnode list ## 列出活跃的节点

$ rosrun [package_name] [node_name] # rosrun允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)
# node_name是一个可执行程序的文件名

$ roslaunch [package_name] [filename.launch] # 使用roslaunch同时运行多个节点

$ rosrun rqt_graph rqt_graph # 显示当前系统运行情况的动态图形 (node间的发布、订阅关系)

ROS Messages: 话题之间的通信是通过在节点之间发送ROS消息实现的(Send=>Receive,即P2P模式)

$ rostopic list # 列出所有活跃的topics
$ rostopic list -h # 查看帮助
$ rostopic echo [topic] # 显示在某个话题上发布的数据

$ rostopic list -v # 显示出有关所发布和订阅的话题及其类型的详细信息
$ rostopic type [topic] # 查看所发布话题的消息类型(msg type)
$ rosmsg show [msg_type] # 查看消息的详细定义
$ rostopic type [topic] | rosmsg show

[topic]=>[msg_type]=>[msg definition]

$ 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]’ # -1:表示运行一次就退出
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’ #以1Hz的频率发送消息

$ rostopic hz [topic] # 查看数据发布的频率
$ rosrun rqt_plot rqt_plot # 实时显示一个发布到某个话题上的数据变化图形

ROS Services: 服务(services)是节点之间通讯的另一种方式 (Request->Response,即CS模式)
服务允许节点发送请求(request) 并获得一个响应(response)

$ rosservice list # 列出可用服务的信息
$ rosservice type [service] #查看服务所需要的参数类型
$ rosservice call [service] [args] # 请求一个服务, 例如清除屏幕:rosservice call clear
$ rossrv show [service_type] #查看服务参数的详细定义
$ rosservice type [service] | rossrv show # e.g. rosservice type spawn | rossrv show

rosparam: 存储并操作ROS参数服务器(Parameter Server)上的数据
$ rosparam list # 列出参数服务器上的所有参数
$ rosparam get / # 显示参数服务器上的所有内容
$ rosparam set [param_name] # 修改参数值 e.g. rosparam set background_r 150
$ rosservice call clear # 使修改参数生效
$ rosparam dump [file_name] # 将所有参数写入params.yaml文件 e.g.: rosparam dump params.yaml
$ rosparam load [file_name] [namespace] # 载入服务器参数

调试信息
$ rosrun rqt_console rqt_console # 显示调试信息
$ rosrun rqt_logger_level rqt_logger_level # 控制调试信息的输出级别

ROS消息和ROS服务
#消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。
#服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。
#msg文件存放在package的msg目录下,srv文件则存放在srv目录下。
#msg文件实际上就是每行声明一个数据类型和变量名。
#在ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息。
#msg示例
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

#sev示例(srv文件分为请求和响应两部分,由’—'分隔)
int64 A
int64 B

int64 Sum

[Remote PC] 安装应用 (Demos using TurtleBot3)
$ sudo apt-get install ros-kinetic-ar-track-alvar
$ sudo apt-get install ros-kinetic-ar-track-alvar-msgs
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_applications.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_applications_msgs.git
$ cd ~/catkin_ws && catkin_make

rostopic list
rostopic echo /imu
/opt/ros/kinetic/lib/rosserial-python/serial_node.py: 读取所有数据
ardunio: 编程语言

DynamixelSDK: 电机
IMU:

$roscore
$roslaunch tiny_slam tinyslam_turtlebot3.launch # read data
$roslaunch cartographer_ros turtlebot3_burger.launch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值