ros基本命令学习

ros学习

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

如果在寻找或者使用ROS package时,要确定环境是否已经正确的启动。
可以通过命令:printenv | grep ROS 来确保环境变量正确设定,如ROS_ROOT和ROS_PACKAGE_PATH

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_msgs rospy roscpp

  cd ..

  catkin_make

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

ros工作空间覆盖问题

   新创建的工作空间路径在ROS_PACKAGE_PATH中会放到最前面
   
   不同空间中的同名功能包,ROS_PACKAGE_PATH前面的会覆盖后面的
	
   为了确保工作空间被载入ROS_PACKAGE_PATH,可以使用命令echo $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调试

扫描二维码关注公众号,回复: 5275835 查看本文章
   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信息

猜你喜欢

转载自blog.csdn.net/qq_37390296/article/details/86564928