ros的一些命令总结

ros学习

ros在使用之前要先输入roscore命令,然后在新打开的终端里进行相关操作

ros工作空间的创建

mkdir -p ~/ros_workspace/src

cd ~/ros_workspace/src

catkin_init_workspace

cd ..

catkin_make

source ./devel/setup.bash

 

ros功能包的创建(创建功能包hello)

cd ~/ros_workspace/src

catkin_create_pkg hello std_mags rospy roscpp

cd ..

catkin_make

source ./devel/setup.bash //也可以是 . devel/setup.bash


ros工作空间覆盖问题

新创建的工作空间路径在ROS_PACKAGE_PATH中会放到最前面

不同空间中的同名功能包,ROS_PACKAGE_PATH前面的会覆盖后面的


ros的文件系统工具(以功能包roscpp为例)

rospack find roscpp //查找功能包所在路径

roscd roscpp //切换到功能包目录

rosls roscpp //显示功能包目录

roscd log //切换到日志文件目录

roscd和rosls具有命令补全功能

rospack depends1 roscpp //查找功能包的直接依赖项

rospack depends roscpp //查找功能包的所有依赖项

 

ros节点(以turtlesim功能包,及其中的turtlesim_node节点为例)

rosnode list //列出正在运行的节点(e.g./turtlesim)

rosnode info /rosout //列出节点信息

rosrun turtlesim turtlesim_node //运行tuetlesim_node节点

rosrun turtlesim turtlesim_node __name:my_turtle //改变节点名字

rqt_graph //绘制节点关系图

 

ros话题
rostopic bw //显示话题带宽

rostopic echo [topic_name] // 在屏幕上显示话题信息

rostopic list //打印激活话题的信息
//默认列出所有话题订阅者和发布者
-v //列出详细信息
-p //列出发布者
-s //列出订阅者

rostopic type [topic_name] //打印话题的消息类型
//可以用rostopic type [topic_name] | rosmsg show 来查询类型详细信息

rostopic pub //向话题发布数据
//习惯用法:rostopic pub [topic] [msg_type] [args]
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -1 -- '[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]'
-1:发布一次消息,然后退出
-r 1:设定消息的发布频率
-1和-r 1只能出现一个
后面的参数遵循YAML的语法

rostopic hz [topic_name] //显示话题的发布频率

rqt_plot //画出发布在话题上的数据,随时间的变化图

 

ros服务和ros参数

rosservice list //列出所有激活状态的服务

rosservice type [service_name] //显示服务的类型

rosservice type [service_name] | rossrv show //显示服务类型的具体信息

rosservice call [service_name] ([parameters]) //调用服务

rosparam list //列出所有激活状态的参数

rosparam get [parameter_name] //获取参数值

rosparam get / //获取所有的参数值

rosparam set [parameter_name] [parameter_vaule] //设置参数值

rosparam dump [***.yaml] ([namespace]) //把参数写到.yaml文件里

rosparam load [***.yaml] [namespace] //把.yaml文件加载到新的命名空间里

 

ros调试

rqt_console //显示节点的输出信息

rqt_logger_level //更改激活状态节点的日志信息级别

日志级别(按重要性排序):Fatal/Error/Warn/Info/Debug
通过设定级别,可以获得相应级别和更高级别的信息

roslaunch [package_name] [***.launch] //启动.launch文件



ros文件编辑

export EDITOR='gedit -w' //设定以何种编辑器打开文件,当前终端有效,默认使用vim

rosed [package_name] [file_name] //直接编辑文件,无需cd到指定路径

rosed [package_name] <Tab> <Tab> //显示功能包中的可编辑文件




ros msg和srv文件创建(以hello功能包为例)

msg文件:自定义与语言无关的消息类型,位于msg文件夹,描述ros消息字段
srv文件:自定义服务数据,位于srv文件夹,描述服务,包括请求和应答两个部分

roscd hello

mkdir msg

echo "int64 num" > msg/Num.msg

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)

catkin_package(
...
CATKIN_DEPEND message_runtime ...
...)

add_message_files(
FILES
Num.msg
)

generate_messages(
DEPENDENCIES
std_msgs
)

rosmsg show [message_type] //确认ros可以看到这个消息
rosmsg show hello/Num

roscd hello

mkdir srv

roscp [ros_package] ***.srv srv/***.srv

add_service_files(
FILES
***.srv
)

rossrv show [service_type] //确认ros可以看到这个服务
rossrv show hello/***

cd ~/catkin_ws

catkin_make install //重新编译

 

用C++写一个简单的publisher和subscriber

src/talker.cpp src/listener.cpp

cmake_minimum_required(VERSION 2.8.3)
project(hello)

## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)

## Declare ROS messages and services
add_message_files(FILES Num.msg)
add_service_files(FILES ***.srv)

## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)

## Declare a catkin package
catkin_package()

## Build talker and listener
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker ${PROJECT_NAME}_generate_messages_cpp)

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener ${PROJECT_NAME}_generate_messages_cpp)


cd ~/catkin_ws

catkin_make

source ./devel/setup.bash

roscore

rosrun hello talker

rosrun hello listener

 

用C++写一个简单的Service和Client

hello/src/server.cpp hello/src/client.cpp

add_executable(server src/server.cpp)
target_link_libraries(server ${catkin_LIBRARIES})
add_dependencies(server ${PROJECT_NAME}_gencpp)

add_executable(client src/client.cpp)
target_link_libraries(client ${catkin_LIBRARIES})
add_dependencies(client ${PROJECT_NAME}_gencpp)

 

ros的分布式多机通讯

<1>查询两台机器的IP地址,确保他们处于同一个网络当中

<2>分别在两个机器中的/etc/hosts文件中加入对方的IP地址和机器名字

<3>在从机中设置ROS_MASTER_URI
export ROS_MASTER_URI=http://lihan:11311 //当前终端有效
echo "export ROS_MASTER_URI=http://lihan:11311" >> ~/.bzshrc //所有终端有效


rosbag数据记录与回放

mkdir ~/bag_files

cd ~/bag_files

rosbag record -a //开始记录ros信息,-a(all)指记录所有的信息
//在数据运行的终端上,按下“ctrl+c”终止数据记录

rosbag info [***.bag] //记录的ros信息简介

rosbag paly [***.bag] //回放.bag文件中记录的ros信息

 

posted on 2018-12-06 16:17  朝闻雨  阅读(334)  评论(0编辑  收藏  举报

导航