-
2022-02-07 21:11:14
1、创建工作空间
mkdir -p demo02_ws/src(必须得有 src)
cd demo02_ws
catkin_make
2、启动 vscode
cd demo02_ws
code .
3、vscode 中编译 ros
快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build
可以点击配置设置为默认,修改.vscode/tasks.json 文件
-----------------------------------------------------------------------
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug", //代表提示的描述性信息
"type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
"command": "catkin_make",//这个是我们需要运行的命令
"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”code
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher": "$msCompile"
}
]
}
----------------------------------------------------------------------------
4 创建 ROS 功能包
选定 src 右击 ---> create catkin packag
设置包名 添加依赖roscpp rospy std_msgs
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一、C++ 实现
1、在功能包的src 下新建 cpp 文件
-----------------------------------------------------------------------------------
/*
控制台输出 HelloVSCode !!!
*/
#include "ros/ros.h"
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
//执行节点初始化
ros::init(argc,argv,"HelloVSCode");//输出日志
ROS_INFO("Hello VSCode!!!哈哈哈哈哈哈哈哈哈哈");
return 0;
}
-------------------------------------------------------------------------------------
修改 .vscode/c_cpp_properties.json
设置 "cppStandard": "gnu17"
"cppStandard": "c++17"
配置 CMakeLists.txt
C++ 配置:
----------------------------
-136 add_executable(源文件名 src/C++源文件名.cpp ) -
-------------------------------
-149 target_link_libraries(节点名称-
-150 ${catkin_LIBRARIES} -
-151 ) -
--------------------------------
编译执行
编译: ctrl + shift + B
执行:cd 文件名
roscore
cd 文件名(另一个指令框)
rosrun 包名 节点名
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
二、python实现
在 功能包 下新建 scripts 文件夹,添加 python 文件(.py结尾),并添加可执行权限
------------------------------------------------------------------------------
#! /usr/bin/env python
# -*- coding: utf-8 -*-"""
Python 版本的 HelloVScode,执行在控制台输出 HelloVScode
实现:
1.导包
2.初始化 ROS 节点
3.日志输出 HelloWorld
"""import rospy # 1.导包
if __name__ == "__main__":
rospy.init_node("Hello_Vscode_p") # 2.初始化 ROS 节点
rospy.loginfo("Hello VScode, 我是 Python ....") #3.日志输出 HelloWorld
------------------------------------------------------------------------------
添加权限:scripts右击-》在集成终端打开 chmod +x *.py回车 ll回车
配置 CMakeLists.txt
162 catkin_install_python(PROGRAMS
163 scripts/自定义文件名.py
164 DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
165 )
--------------------------------
编译执行
编译: ctrl + shift + B
执行:cd 文件名
roscore
cd 文件名(另一个指令框)
source ./devel/setup.bash
rosrun 包名 节点名.py更多相关内容 -
ROS2学习笔记之创建自己的功能包
2021-01-06 22:47:56ROS2学习笔记之创建自己的功能包背景前期准备学习内容1. 创建一个包2. 编译新建的包3 Source工作空间的配置文件4 使用新建的包5. 查看包的内容6. 自定义 package.xml总结 学习目标: 使用CMake或Python创建一个新的包... -
ROS基础入门(一) 创建指令/工作空间和功能包的新建
2021-05-27 22:36:541.一个终端打开ros管理器 roscore 2.另一个终端打开ros的海龟节点,run一个新节点 rosrun turtlesim turtulesim_node 3添加一个控制命令输入 rosrun turtlesim turtle_teleop_key 4 查看总体运行的节点...1.常见命令汇总
小海龟的自由运动仿真
1.一个终端打开ros管理器roscore
2.另一个终端打开ros的海龟节点,run一个新节点
rosrun turtlesim turtulesim_node
3添加一个控制命令输入
rosrun turtlesim turtle_teleop_key
4 查看总体运行的节点情况
rqt_graph
可以看到由2个node组成,由键盘的控制端
teleop_turtle
通过topic
即/turtle/cmd_vel 发送先关控制指令到turtlesim
来控制显示画面里面乌龟的游动.(左右控制专项,上下控制前进后退)同时也记录一下常用的其他命令:
(1)
rosnode
rosnode is a command-line tool for printing information about ROS Nodes. 打印节点信息 Commands: rosnode ping test connectivity to node rosnode list list active nodes rosnode info print information about node rosnode machine list nodes running on a particular machine or list machines rosnode kill kill a running node rosnode cleanup purge registration information of unreachable nodes
例如查看turtlesim这个节点的相关信息:
ztfmars@GL503:~$ rosnode info /turtlesim
-------------------------------------------------------------------------------- Node [/turtlesim] Publications: * /rosout [rosgraph_msgs/Log] * /turtle1/color_sensor [turtlesim/Color] * /turtle1/pose [turtlesim/Pose] Subscriptions: * /turtle1/cmd_vel [geometry_msgs/Twist] Services: * /clear * /kill * /reset * /spawn * /turtle1/set_pen * /turtle1/teleport_absolute * /turtle1/teleport_relative * /turtlesim/get_loggers * /turtlesim/set_logger_level contacting node http://GL503:36561/ ... Pid: 15418 Connections: * topic: /rosout * to: /rosout * direction: outbound * transport: TCPROS * topic: /turtle1/cmd_vel * to: /teleop_turtle (http://GL503:33687/) * direction: inbound * transport: TCPROS
(2)
rostopic
rostopic is a command-line tool for printing information about ROS Topics. 可以用来打印和发布相关话题内容 Commands: rostopic bw display bandwidth used by topic rostopic delay display delay of topic from timestamp in header rostopic echo print messages to screen rostopic find find topics by type rostopic hz display publishing rate of topic rostopic info print information about active topic rostopic list list active topics rostopic pub publish data to topic rostopic type print topic or field type
例如发布一条让海龟运动的指令(其实输入完了 …cmd_vel按下连续2次tab可以自动不全):
rostopic pub /turtle1/cmd_vel -r 10 geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"
其中
linear
表示线速度,angular
表示转动角度,-r
表示一直发布(不加的话,就是只发布一次)后面是频率即 10次/s. ros里面默认的速度都是 m/s, 角度都是 rad/s(3)
rosservice
ros启动的相关服务的显示和控制Commands: rosservice args print service arguments rosservice call call the service with the provided args rosservice find find services by service type rosservice info print information about service rosservice list list active services rosservice type print service type rosservice uri print service ROSRPC uri Type rosservice <command> -h for more detailed usage, e.g. 'rosservice call -h'
例如在指定位置生成新海龟
rosservice call /spawn "x: 10.0 y: 8.0 theta: 0.0 name: 'turtule_new'"
(4)rosbag
Usage: rosbag <subcommand> [options] [args] 主要是用来储存和记录信息和操作数据 A bag is a file format in ROS for storing ROS message data. The rosbag command can record, replay and manipulate bags. Available subcommands: check Determine whether a bag is playable in the current system, or if it can be migrated. compress Compress one or more bag files. decompress Decompress one or more bag files. filter Filter the contents of the bag. fix Repair the messages in a bag file so that it can be played in the current system. help info Summarize the contents of one or more bag files. play Play back the contents of one or more bag files in a time-synchronized fashion. record Record a bag file with the contents of specified topics. reindex Reindexes one or more bag files. For additional information, see http://wiki.ros.org/rosbag
( 5 )
rosrun
Usage: rosrun [–prefix cmd] [–debug] PACKAGE EXECUTABLE [ARGS]
rosrun will locate PACKAGE and try to find
an executable named EXECUTABLE in the PACKAGE tree.
If it finds it, it will run it with ARGS.
用来启动一个安装包下面可执行文件的命令,如果找到的话,就会送入ARGS参数.2.工作空间
- 结构:
src -> c++源码所在位置;
build-> 编译过程的中间文件所在位置;
devel-> 开发过程中的中间文件或者可执行文件所在位置;
install -> 最终发行的可执行文件所在的位置,可能会devel有重叠;
- 创建工作空间
注意:
catkin_init_workspace
:
初始化工作空间,是在src
之中执行的,执行后会生成源文件的cmakelist.txt;
catkin_make
:
编译命令是在根目录
文件下执行的,即~/catkin_ws
, 执行后会在根目录生成build
,devel
文件夹及其内部的编译文件;
catkin_make install
:
最后的生成执行文件过程的执行,也是在根目录
下,会生成install
文件夹的话;
source devel/setup.bash
:
让所有ROS环境变量生效
- 创建功能包
注意:
创建功能包的过程都是在src
文件夹之中,会在src
文件夹之中生成功能包的文件夹.里面也是包括include,src,cmakelist.txt,package.xml
的一整套;
catkin_make
编译过程都是在根目录
之中的.
另外,每一个功能包里面都是存在cmakelist.txt
(编译规则和内容定义) 和packages.xml
(编译依赖项,可以后期通过手动添加的)
3.publist话题发布
话题模型:
接上一章节内容:
(1)在建立工作空间之后,创建工作包.
注意添加上所使用的依赖项,例如本例子中需要使用ros的c++包,消息发送,定位信息,turtle节点信息
,所以就写上了roscpp, std_msg, geometry_msgs,turtlesim
(2)创建发布者代码
将相关代码命名为velocity_publisher.cpp
, 放置在ros文件夹根目录/src/learning_topic/src
之中
(3)配置cmaklist.txt
注意,此时的cmakelist.txt是新建的那个功能包里面的cmakelist.txt,即ros文件夹根目录/src/learning_topic/
在build表示的内容末尾增加如下2句:add_executable(velocity_publisher src/velocity_publisher.cpp) target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
注意:编译完成之后,会在
devel/lib
之下发现安装包的可执行文件的文件夹learning_topic
,里面有编译生成的可执行文件velocity_publisher
(4)编译并且发布运行
注意:
编译一定是在你的ROS项目的根目录哦!如果你要是发现learning_topic话题没有生效的话,再去执行一下soruce devel/setup.bash
在本窗口,之后在本窗口执行运行发布命令的ros指令.
或者
直接将当前工程加入到shell环境里去echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
注意:如果使用python文件的话,就不用进行编译了,
选择这个python文件-> 右键->属性->可作为执行文件(画上勾)
,直接运行rosrun learning_topic xxx.py
即可运行4. 自定义话题的发布和接受过程
4.1 问题描述
第3节演示的是向系统已有的一个节点(
turtle_sim
)系统里面根据已有的话题内容,发送固定内容.我们现在自定义2个节点(person_publisher / person_subscriber
),通过一个自定义的话题(/person_info
)来进行通信.
因为相关依赖包稍微有一点不同, 可以继续 第3节继续往下做. 或者重新新建一个功能包case1: 完全重新做
(1) 首先建立ros空间,这个参照第2部分内容即可
(2) 复用前面的learning_tpic
功能包,只是修改一下相关的packge.xml
和里面的cmaklist.txt
;
并且在learning_tpic
文件夹内,新建msg文件夹
,并且在里面新建Person.msg文件
.具体内容参见如下:
(3) 进入功能包
learning_tpic\src
文件夹,新建两个cpp文件person_publisher.cpp
,person_subscriber.cpp
person_publisher.cpp:/*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************/ /** * 该例程将发布/person_info话题,自定义消息类型learning_topic::Person */ #include <ros/ros.h> #include "learning_topic/Person.h" int main(int argc, char **argv) { // ROS节点初始化 ros::init(argc, argv, "person_publisher"); // 创建节点句柄 ros::NodeHandle n; // 创建一个Publisher,发布名为/person_info的topic,消息类型为learning_topic::Person,队列长度10 ros::Publisher person_info_pub = n.advertise<learning_topic::Person>("/person_info", 10); // 设置循环的频率 ros::Rate loop_rate(1); int count = 0; while (ros::ok()) { // 初始化learning_topic::Person类型的消息 learning_topic::Person person_msg; person_msg.name = "Tom"; person_msg.age = 18; person_msg.sex = learning_topic::Person::male; // 发布消息 person_info_pub.publish(person_msg); ROS_INFO("Publish Person Info: name:%s age:%d sex:%d", person_msg.name.c_str(), person_msg.age, person_msg.sex); // 按照循环频率延时 loop_rate.sleep(); } return 0; }
person_subscriber.cpp:
/*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************/ /** * 该例程将订阅/person_info话题,自定义消息类型learning_topic::Person */ #include <ros/ros.h> #include "learning_topic/Person.h" // 接收到订阅的消息后,会进入消息回调函数 void personInfoCallback(const learning_topic::Person::ConstPtr& msg) { // 将接收到的消息打印出来 ROS_INFO("Subcribe Person Info: name:%s age:%d sex:%d", msg->name.c_str(), msg->age, msg->sex); } int main(int argc, char **argv) { // 初始化ROS节点 ros::init(argc, argv, "person_subscriber"); // 创建节点句柄 ros::NodeHandle n; // 创建一个Subscriber,订阅名为/person_info的topic,注册回调函数personInfoCallback ros::Subscriber person_info_sub = n.subscribe("/person_info", 10, personInfoCallback); // 循环等待回调函数 ros::spin(); return 0; }
(4) 在
learning_tpic\cmakelist.txt
修改一下编译规则:
(5) 在项目的根文件,编译整体功能包:catkin_make
可以在编译文件夹
devel/lib/learning_tpic
中看到新生成的2个可执行文件,person_publisher
,person_subscriber
(6) 运行编译环境生效,并且启动窗口执行source devel/setup.bash
重启3个窗口,分别执行如下命令,开始收发指令:
roscore rosrun learning_tpic person_subscriber rosrun learning_tpic person_publisher
case2: 继续第3节往下做
(1) 创建ros空间,这个部分参照第2部分
(2) 创新新的功能包,new_topic
catkin_create_pkg new_topic roscpp rospy std_msgs geometry_msgs turtlesim message_generation
注意依赖项,只是增加了一个
message_generatio
(3) 创建好了之后,进入功能包
new_topic\src
文件夹,新建两个cpp文件person_publisher.cpp
,person_subscriber.cpp
, 具体内容参照case1(4) 在
new_topic
文件夹同样新建msg
文件夹,在里面新建Persion.msg
,参照case2(5) 修改
package.xml
文件夹:<build_export_depend>message_generation</build_export_depend> <exec_depend>message_runtime</exec_depend>
(6) 修改
new_topic\cmaklist.txt
################################################ ## Declare ROS messages, services and actions ## ################################################ ;;;; #添加依赖项声明 add_message_files(FILES Person.msg) generate_messages(DEPENDENCIES std_msgs) ################################### ## catkin specific configuration ## ################################### ## The catkin_package macro generates cmake config files for your package ## Declare things to be passed to dependent projects ## INCLUDE_DIRS: uncomment this if your package contains header files ## LIBRARIES: libraries you create in this project that dependent projects also need ## CATKIN_DEPENDS: catkin_packages dependent projects also need ## DEPENDS: system dependencies of this project that dependent projects also need # 去掉注释项目内容,修改如下 catkin_package( # INCLUDE_DIRS include LIBRARIES new_topic CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim message_runtime # DEPENDS system_lib ########### ## Build ## ########### ;;;;; #添加独立话题(发送/接受方,话题是:person_info),设置编译的可执行文件,并且关联相关链接库/添加依赖项 add_executable(person_publisher_new src/person_publisher.cpp) target_link_libraries(person_publisher_new ${catkin_LIBRARIES}) add_dependencies(person_publisher_new ${PROJECT_NAME}_generate_messages_cpp) add_executable(person_subscriber_new src/person_subscriber.cpp) target_link_libraries(person_subscriber_new ${catkin_LIBRARIES}) add_dependencies(person_subscriber_new ${PROJECT_NAME}_generate_messages_cpp)
(7) 在整体项目文件的根目录中执行编译命令:
catkin_make
可以在编译文件夹
devel/lib/new_topic
中看到新生成的2个可执行文件,person_publisher_new
,person_subscriber_new
(8) 运行编译环境生效,并且启动窗口执行source devel/setup.bash
重启3个窗口,分别执行如下命令,开始收发指令:
roscore rosrun new_topic person_subscriber_new rosrun new_topic person_publisher_new
可以看到具体通信过程和信息:
- 结构:
-
【ROS2】一、创建工作空间和功能包
2022-04-15 10:12:31ROS2通过命令创建工作空间和功能包,vscode对ROS2的支持比ROS1少,不能直接在vscode中创建功能包,因此,ROS2主要是通过在终端中使用命令的方式创建和编译功能包。 一、创建工作空间 打开终端界面,通过命令mkdir -...
前言
ROS2通过命令创建工作空间和功能包,vscode对ROS2的支持比ROS1少,不能直接在vscode中创建功能包,因此,ROS2主要是通过在终端中使用命令的方式创建和编译功能包。
一、创建工作空间
打开终端界面,通过命令
mkdir -p xxx_ws/src
创建一个ROS2工作空间。二、创建功能包
cd进入工作空间中的src文件夹,通过以下命令来创建一个功能包:
ros2 pkg create --build-type ament_cmake YOUR_PAK_NAME --dependencies rclcpp std_msgs
此时能看到终端中打印了一堆提示内容,cd进入功能包目录,可以看到目录下多了CMakeLists.txt、include、src等文件,说明功能包已经被创建成功。
三、编译功能包
第二步已经将功能包创建完成了,此时我们需要对功能包进行编译,ROS1编译是通过catkin_make命令来编译,ROS2会有所不同,ROS2是通过
colcon build
命令对功能包进行编译,在输入该命令前需要返回到工作空间目录下。该命令会编译工作空间中的所有功能包,如果工程比较大,功能包比较多的时候,编译所有功能包会需要很长的时间,所有我们经常需要只编译工作空间中的一个功能包,可以使用以下命令来编译工作空间中的一个功能包colcon build --packages-select YOUR_PKG_NAME
编译完成后,在工作空间目录下我们能看到多了几个文件夹,install、log、build,这三个文件夹分别是用于存储编译后的执行文件、日志文件和编译的过程文件。
总结
至此,我们的工作空间和功能包已经创建完成,接下来就可以使用vscode来编写代码了。
-
创建ROS系统中的catkin功能包
2021-05-25 01:35:19描述:这篇文章介绍如何用roscreate-pkg或catkin创建一个新的功能包,并用rospack列出功能包的依赖关系。1、catkin功能包的组成要组成一个catkin功能包,必须满足如下相关条件:• 功能包必须包含一个catkin兼容的...描述:这篇文章介绍如何用roscreate-pkg或catkin创建一个新的功能包,并用rospack列出功能包的依赖关系。
1、catkin功能包的组成
要组成一个catkin功能包,必须满足如下相关条件:
• 功能包必须包含一个catkin兼容的注释文件package.xml。
o package.xml文件提供有关功能包的元信息;
• 功能包必须包含采用catkin的CmakeLists.txt文件
o 例外情况是metapackages不必包含CmakeLists.txt
• 在一个文件夹中不允许出现多个功能包
o 这意味着多个功能包不能共享一个路径,也不允许功能包之间相互嵌套包;
最简单的功能包组成如下所示:
• my_package/
• CMakeLists.txt
• package.xml
2、catkin Workspace里的功能包
推荐在catkin workspace下生成并编译catkin 功能包,当然,catkin功能包也可单独编译。catkin workspace的文件组织形式如下所示:
• 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
在创建catkin功能包之前,我们先创建一个空的catkin workspace,命名为catkin_ws,接下来的练习都在这个catkin_ws下进行;
3、创建catkin功能包
接下来将会阐述如何利用catkin_create_pkg命令工具生成一个新的catkin功能包,并介绍catkin功能包的用途;
首先,改变路径到catkin workspace的src目录内;
# You should have created this in the Creating a Workspace Tutorial
$cd~/catkin_ws/src
现在使用catkin_create_pkg命令创建名字为beginner_tutorials的功能包,并设置这个新功能包依赖于std_msg,roscpp和rospy;
?1 $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
这将会创建一个beginner_tutorials的文件夹,这个文件夹内会自动生成package.xml文件和CmakeLists.txt文件,这个两个文件会依据你对catin_create_pkg命令的设置参数填写一些信息;
Catkin_create_pkg后面的参数需包含功能包的名字及所创建功能包的一些依赖选项:
# This is an example, do not try to run this
# catkin_create_pkg [depend1] [depend2] [depend3]
4、功能包依赖关系
4.1 直接(一级)依赖关系
在使用catkin_create_pkg时,一些依赖的功能包需要提供出来,这些直接(一级)依赖关系可以通过命令工具rospack查看;
?1 $ rospack depends1 beginner_tutorials
• std_msgs
• rospy
• roscpp
就像看到的一样,rospack列出了用catkin_create_pkg创建时设置的依赖功能包。这些依赖功能包信息被保存在package.xml文件内;
$ roscd beginner_tutorials
$catpackage.xml
•
• ...
• catkin
• roscpp
• rospy
• std_msgs
• ...
•
4.2 间接依赖关系
在很多情况下,依赖功能包本身也需要自己的依赖功能包,例如,rospy就会需要一些依赖功能包;
$ rospack depends1 rospy
• genpy
• rosgraph
• rosgraph_msgs
• roslib
• std_msgs
一个功能包会需要很多间接的依赖功能包,幸运的是,rospack可以次序检测到所有嵌套的依赖功能包;
$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
genmsg
genpy
message_runtime
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
catkin
rospack
roslib
rospy
5、 设置生成的功能包
这一部分将会逐行查看catkin_create_pkg自动生成的各个文件,并根据需要修正它们;
5.1 设置文件package.xml
在你新创建的功能包内会产生一个package.xml文件,现在我们查看一下文件package.xml,看哪些元素是我们尤其要关注的;
5.1.1 描述标签
首先需要更新的是描述标签:
The beginner_tutorials package
根据你的需要,改变这些描述信息,顺便提示一下,最好采用一句话描述这个功能包的用途信息;
5.1.2 维护者标签
接下来我们可以看到维护者标签:
user
这在package.xml文件里是一个非常重要的标签,它可以让其它人知道维护这个功能包的联系人信息。至少提供一个维护者信息,当然,如果需要,你可以添加任何一个维护者的信息。维护者的标签处于body的位置,属性里面的email信息也需要填写完整:
Your Name
5.1.3 许可标签
接下来是许可标签,这个标签也是必要的:
TODO
可以选择一种license填写到里面。常用的license信息为BSD,MIT,Boost Software License,GPLv2,GPLv3,LGPLv2.1和LGPLv3等,针对这篇文章,我们使用BSD许可。
BSD
5.1.4 依赖功能包标签
接下一组标签是描述这个功能包的依赖关系的。这些依赖关系被build_depend,buildtool_depend,run_depend,test_depend等分隔开,有关这些标签的更详细的描述可以查看catkin dependencies。因为我们设置了catkin_create_pkg命令的std_msg,roscpp,rospy参数,因此可以看到下面的依赖项:
catkin
roscpp
rospy
std_msgs
在catkin功能包里,除了默认的buildtool_dependon,所有列出的依赖包被作为build_depend添加进来。我们希望在编译和运行时均指定相关的依赖包,因此我们为每一个依赖包添加一下run_depend标签:
catkin
roscpp
rospy
std_msgs
roscpp
rospy
std_msgs
5.1.5 最终的package.xml
去除注解及没有用到的标签,最终的package.xml文件如下所示,看起来更简洁,
beginner_tutorials
0.1.0
The beginner_tutorials package
Your Name
BSD
http://wiki.ros.org/beginner_tutorials
Jane Doe
catkin
roscpp
rospy
std_msgs
roscpp
rospy
std_msgs
6、设置生成的CMakeLists.txt文件
既然包含元信息的package.xml已经根据需要做了修改,你已经做好了练习的准备了吧。Catkin_create_pkg产生的文件CMakeLists.txt将在以后编译功能包时进行修正完善;
-
ROS之创建功能包(二)
2018-08-14 09:20:16ROS之创建功能包 创建功能包的命令:$catkin_create_pkg <package_name> [depend1] [depend2] [...] 在所在的工作区间目录下完成操作: 1、创建功能包 cd ~/catkin_ws/src catkin_create_pkg ... -
在ROS中创建工作空间和功能包详解
2021-05-15 19:59:33a.src:代码空间(Source Space),开发过程中最常用的文件夹,用来存储所有ROS功能包的源码文件。 b.build:编译空间(Build Space),用来存储工作空间编译过程中产生的缓存信息和中间文件。 c.de... -
[ROS] ROS基础,创建工作空间,创建功能包,ros功能包相关命令,Catkin编译系统,catkin_make的编译方式
2020-05-23 12:29:07工作空间(work space)是ROS系统中存放工程开发相关的文件夹,其目录结构如下: src:代码空间(Source Space),用于存放开发代码 build:编译空间(Build Space) devel:开发空间(Development Space),存放... -
Ros入门(一)创建工作空间及功能包
2022-05-07 01:15:00二、创建功能包并导入依赖 三、在功能包下新建几个文件夹存放数据 一、创建工作空间 创建新的工作空间并初始化,ros001是工作空间的名字,可自行修改 mkdir -p ~/ros001/src cd ~/ros001/src catkin_init_... -
ROS创建工作空间以及功能包
2020-05-09 13:02:231.工作空间 工作空间(workspace)是一个存放工程开发相关文件的文件夹 ...2.创建工作空间 创建工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace 编译工作空间 cd ~/catkin_ws/ catki -
ROS创建自定义msg类型功能包
2021-05-14 20:40:59ROS创建自定义msg类型功能包 一、创建msg消息 首先创建一个空的package单独存放msg类型(当然也可以在任意的package中自定义msg类型) 为便于说明,建立一个名为base_sks_msgs的包,用于对自定义msg消息 cd base_sks... -
ROS系统 创建工作空间与功能包
2021-07-08 09:37:41例如:创建一个名称为 catkin_ws 的工作空间 mkdir -p ~/catkin_ws/src 进入到创建的catkin_ws工程目录中 cd ~/catkin_ws/src 将当前文件夹进行属性初始化。 catkin_init_workspace 会在src目录中生成一个 ... -
2、ROS创建工作空间、功能包,编译示例程序。
2021-01-31 23:02:23src: 代码空间,存放功能包源码。 build: 编译空间,存放编译产生的中间文件。 devel: 开发空间,存放编译后的可执行文件,环境变量 配置的脚本等。 install: 安装空间,和devel作用基本一致,一般使用install命令将... -
Ros-1.1 ROS工作空间配置及功能包创建并输出helloworld
2021-12-14 22:06:461、创建工作空间并初始化及功能包的创建 mkdir -p 自定义空间名/src cd 自定义空间名(英文) catkin_make 上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。 2... -
创建ROS程序包及节点
2022-03-03 19:23:49catkin_create_pkg指令创建功能包,格式如下: catkin_create_pkg 功能包名称 依赖项1 依赖项2 … 二、创建节点 进入learning_msg 功能包的src文件夹内,创建发布节点。 roscd learning_msg cd s -
ROS | 工作空间及功能包的创建
2021-05-16 21:15:42创建功能包 1. 创建工作空间 工作空间是一个存放工程开发相关文件的文件夹,创建工作空间首先在Linux系统中打开一个新的终端,并按照以下步骤输入指令。 $ mkdir -p ~/ROS_ws/src $ cd ~/ROS_ws/src $ catkin_init_... -
ROS系列教程一:工作空间及功能包创建
2022-03-24 09:32:04工作空间可以简单理解为工程目录,通过mkdir创建一个工作空间文件夹,这里我们命名为my_workspace,创建后进入该目录 ~$ mkdir my_workspace //在系统主目录下创建名为my_workspace的文件夹 ~$ cd my_workspace //... -
ROS入门-7.创建工作空间与功能包
2021-02-04 16:07:15src(代码空间):用来放置功能包,功能包的代码,配置文件,launch文件等 build(编译空间):放置编译过程当中产生的中间编译文件,二进制文件,一般用不到 devel(开发空间):放置开发过程中的一些可执行文件,库,... -
编译ROS系统中的功能包
2021-05-25 01:36:031、编译功能包只要功能包的依赖项都已经安装完毕,我们就可以编译新的功能包了;在开始之前,务必通过source指令设置运行的环境,在Ubuntu系统中可以执行如下指令;$source/opt/ros/groovy/setup.bash1.1 使用catkin... -
ROS 学习1- 创建工作空间以及功能包
2021-12-27 11:31:58src: 用来存放功能包的 build(编译空间):是用来存放编译过程中产生的二进制文件的 devel(开发空间):编译后生成的可执行文件,最终编译生成的东西最终都要在这里运行 install(安装空间):用install指令安装... -
《动手学ROS2》3.6.1创建一个C++功能包
2021-11-08 13:41:063.5.1创建一个C++功能包 1.创建王家村功能包 王二居住在王家村,王家村和李家村不一样,是使用ament-cmake作为编译类型的。 所以王家村建立指令像下面这样,只不过依赖变成了rclcpp ros2 pkg create village_wang --... -
ROS入门(二)——创建功能包和工作空间
2021-03-19 23:30:49二、创建工作空间(workspace)2.1、创建工作空间三、创建功能包总结 前言 上一节已经完成ROS的安装,本节还是学习‘古月居ROS21讲’,本文主要记录怎样创建工作空间和功能包 一、工作空间(workspace)? ... -
ROS入门:(1)创建一个ROS功能包
2019-03-23 09:46:011.创建一个catkin工作空间. ...并使用以下指令,将包路径加入环境变量: $ source devel/setup.bash 2.使用catkin_create_pkg创建一个catkin包. 首先先进入工作空间的src文件夹: $ cd ~/catkin_ws... -
ROS创建工作空间和功能包
2021-07-03 14:43:51工作空间 创建文件夹并进入该文件夹初始化 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace mkdir中的-p参数允许生成目录catkin_ws同时生成其子目录src ~/是会到根目录,只要加...创建功能包(一 -
Ros知识【09】:功能包介绍
2021-09-24 13:53:39前言 1 ubuntu下安装好ros后 其路径是:/opt/ros/noetic,内容如下: 其中: 1)bin内部是全部shell命令 ...2)include是调用lib中...4)share是所有功能包放置地 5)etc是配置文件,其中包括catkin所在地 ... -
ros创建工作空间和功能包
2020-05-13 23:10:31创建工作空间 工作空间:类似于ide中创建的工程,开发的系统空间 ...创建功能包 Catkin_create_pkg 功能包名字 依赖1 依赖2 用到那些功能包,就需要添加哪些依赖 创建成功,test_pkg功能包 Catkin_ -
ROS---工作空间和功能包的创建
2020-08-05 18:53:33ROS—工作空间和功能包的创建 % 博主是机器人方向,计算机相关不是很专业,本篇只是作为学习ROS系统过程中,一些概念的简单挖掘,如有错误,欢迎大家批评指正! 首先理解高级语言程序执行的一个简单过程 1. 源... -
ros2学习笔记——功能包
2021-07-23 13:34:00功能包是ROS2中组织代码的基本容器,方便我们编译、安装、分发开发的代码,一般来讲,每个功能包都是用来完成某项具体的功能相对完整的单元。 ROS2中的功能包可以使用CMake或者Python两种方式来编译,其本身是一个... -
ros创建工作空间与功能包
2021-08-19 16:47:10创建工作空间 mdkir -p ~/catkin_ws/src cd catkin_ws/src/ catkin_init_workspace//初始化,变成一个ros属性的文件夹 编译工作空间。回到工作空间根目录 cd ~/catkin_ws catkin_make 此时 ... -
ROS-新建工作空间、功能包、利用c++、python语言编写发布和订阅通信
2021-11-09 20:30:56文章目录1、创建工作空间与功能包1.1工作空间1.1.1工作空间的介绍1.1.2创建...创建功能包并编写代码2.3修改文件并编译2.4运行功能包并查看节点2.5利用python脚本运行3、订阅者Subscriber的实现3.1实现模型3.2创建订阅者...