ros package ---launch

1.ros package structure

一个package要包含:Cmakelists. txt 和package. xml。

ros package要放在工作空间下:

工作空间结构:

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

workspce:devel; build; src

src:Cmakelists. txt ;  package-1 ; package-2 ;  package-n

package-1:    package.xml     Cmakelists.txt

2.Creating a catkin Package

建立工作空间:

mkdir -p workspace_name/src
cd workspace_name
catkin_make

建立软件包:

cd src
catkin_creat_pkg package_name rospy roscpp std_msgs sensor_msgs pcl_ros
//这一行生成package.xml

package.xml模板

<?xml version="1.0"?>
<package>
  <name>package_name</name>   //包名
  <version>0.0.1</version>  //版本
  <description>The package_name package</description>  //描述


  <maintainer email="lmx@wyjy.edu.cn">appleyes</maintainer>  //包联系者

  <license>MIT</license>    
 //许可证   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, and LGPLv3.

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>sensor_msgs</build_depend>
  <build_depend>pcl_ros</build_depend>

  <run_depend>roscpp</run_depend>
  <run_depend>sensor_msgs</run_depend>
  <run_depend>pcl_ros</run_depend>
</package>




 解决在终端查找包及内部文件的问题.

cd all
mkdir -p 2/src
cd 2
catkin_make

进入all/2/src
将软件包考进来
cd 2
catkin_make

在2工作空间下会出现devel;build.
此时,在home  crtl+h 找到.bashrc  在末尾加入工作路径   
source ~/all/2/devel/setup.bash --extend

此时包的工作路径被添加到终端,可以在终端对包文件进行访问.



node and node 交流通过topic

查看节点rosnode list   

查看话题rostopic list

只有话题可以被订阅或者是发布

以qq群为例:节点是每个人.话题是平台,也就是qq群,每个人可以关注不关注,订阅不订阅.消息就是每个人发布的信息.

服务和话题的不同在于话题是多对多,服务是多对一或者是一对一.

rosout 节点是一个特殊的节点,通过 roscore 自动启动。其作用有点类似于控制台程序中使用的标准输出(即 std:: cout)。/rosout前面的反斜杠“/”表明该节点名称属于全局命名空间。 所有的节点发布都向话题/rosout 发布消息,该话题由同名的/rosout 节点订阅。这个话题的作用是用来生成各个节点的文本日志消息。 ROS 会根据上下文来推测我们讨论的是/rosout 节点还是/rosout 话题。




roslaunch

与rosrun区别:rosrun只能启动一个节点,roslaunch可以启动多个节点

使用方法:

roslaunch [package] [filename.launch]
roscd beginner_tutorials
//进入工作空间后 source ./devel/setup.bash
然后,再roscd

 就是酱紫:

cd ~/catkin_ws
source devel/setup.bash
roscd beginner_tutorials

建立launch文件夹及.launch文件

mkdir launch
cd launch

duangduangduang~

下面是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">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  15 
  16 </launch>

 


此部分来自作者:Stoneplay26;原文:https://blog.csdn.net/qq_28753373/article/details/82107609.感谢!

在这里说明一下roscd 和cd区别:

cd命令和roscd命令都是切换到指定目录的命令。不同的是,cd是Linux系统的命令,在使用时必须指定目标目录的完整路径;而roscd是ros系统中的命令,它可以直接切换到指定目录(ros系统中的软件包),而不需要输入冗长的完整路径。

例如,要切换到roscpp这个软件包,两个命令的格式分别为:

cd /opt/ros/kinetic/share/roscpp

roscd roscpp

显然,在ros系统中,roscd要比cd命令更加方便。

但在使用的过程中,我们有时候会发现,roscd命令不能正常使用,系统会提示找不到软件包,这是因为roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包,这时候我们需要切换到ros系统的工作空间(catkin_ws)下,通过source命令将软件包添加到环境变量中,即:

cd ~/catkin_ws
source ./devel/setup.bash

添加环境变量之后,roscd即可正常使用。

注意,如果新打开了一个终端,在使用某一工作空间之前,都需要执行上述命令切换到该工作空间的目录下将工作空间的路径添加到环境变量中。

可以使用下面的命令来查看你当前的环境变量:

$ echo $ROS_PACKAGE_PATH

若系统返回信息为:

/home/你的用户名/你的工作空间名/src:/opt/ros/kinetic(ROS的版本名)/share

则表示环境变量已经设置成功了。




 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值