文章目录
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
我们创建了两个目录,ros2_ws和在他下面的子目录,运行编译的目录在ros2_ws目录下,src目录下是我们生成的ros的包,我们自己编写的代码也都早src目录下,colcon build编译之后会在ros2_ws目录下生成一下文件,运行程序也是在ros2_ws这个目录下。
使用ros2 pkg create来创建包和节点,该命令是在src目录下执行。
ros2 pkg create <package_name> --build-type ament_cmake
2.创建包并添加依赖
ros2 pkg create my_package --build-type ament_cmake --dependencies std_msgs rclcpp
std_msgs和rclcpp的依赖ros2 pkg create <package_name> --build-type ament_cmake --node-name <node_name> --dependencies std_msgs rclcpp
std_msgs和rclcpp两个依赖,需要的依赖填在在后面运行节点的命令
ros2 run 包名 可执行文件名
ros2 run package_name exectable_name
ros2 pkg list
ros2 pkg prefix <package_name>
ros2 pkg xml <package_name>
我们在有src文件夹的目录下,也就是执行文件的目录
编译所有的包
colcon build
指定单独编译某个包:
colcon build --packages-select <package_name>
该文件是告诉编译器,想要找某个节点去哪里找。
cmake_minimum_required(VERSION 3.5)
project(ros_learn) //包的名称
如果是添加了某些依赖,需要再find_package中添加
# find dependencies
find_package(ament_cmake REQUIRED)
find_package(std_msga REQUIRED)
find_package(rclcpp REQUIRED)
添加节点,表示如果编译器要找那个节点到那个目录下去找
// 表示告诉编辑器想要找infor_publish这个节点去src目录下的infor_publish.cpp去找
add_executable(infor_publish src/infor_publish.cpp)
然后加上ament_target_dependencies这项,该项里记录者余姚的依赖和运行节点
ament_target_dependencies(
infor_publish
"std_msga"
"rclcpp"
)
//rclcpp和std_msga也可以不加双引号
然后还需要安装一下,安装一下我们的可执行节点
install(TARGETS
infor_publish
DESTINATION lib/${PROJECT_NAME})
该文件中需要添加一下我们手动添加的依赖
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros_learn</name> <!-- 包的名称 -->
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="aywq@todo.todo">aywq</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>std_msgs</depend>
<depend>rclcpp</depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
auto node = std::make_shared<rclcpp::Node>("ros_1")),然后打印一条消息 // 1. 导入库文件
# include "rclcpp/rclcpp.hpp"
int main(int argc,char **argv)
{
//2.初始化客户端库
rclcpp::init(argc,argv);
//3.使用智能指针创建新的节点对象
auto node = std::make_shared<rclcpp::Node>("ros_1");// 当我们初始化节点的时候要给他一个参数,给节点起一个名字
// ros的打印
RCLCPP_INFO(node->get_logger(),"打印内容");
//4.使用spin循环节点
rclcpp::spin(node);
//5. 关闭客户端库
rclcpp::shutdown();
}
:public rclcpp::Node),否则该类无法拥有拥有日志打印,创建服务话题的能力。// 1. 导入库文件
# include "rclcpp/rclcpp.hpp"
# include <string>
// 定义一个类
// 先要让这个类继承rclcpp::Node,只有继承了这个 才能拥有日志打印,创建服务话题的能力
class infor_publish :public rclcpp::Node
{
private:
/* data */
public:
infor_publish(std::string name); //构造函数在定义是不用继承初始化列表
~infor_publish();
};
// 我们在声明构造函数是要调用父类的构造函数,给他传一个参数,参数为节点的名字
infor_publish::infor_publish(std::string name):Node(name)
{
RCLCPP_INFO(this->get_logger(),"hahaha:%s",name.c_str()); // name是一个string类型的,我们需要把他c的字符串打印
}
infor_publish::~infor_publish()
{
RCLCPP_INFO(this->get_logger(),"bye!!!");
}
int main(int argc,char **argv)
{
//2.初始化客户端库
rclcpp::init(argc,argv);
//3.使用智能指针创建新的节点对象,在面相对象的这节点声明,智能指针就要输入类的类型,而不是rclcpp::Node
auto node = std::make_shared<infor_publish>("ros2");
//4.使用spin循环节点
rclcpp::spin(node);
//5. 关闭客户端库
rclcpp::shutdown();
}

我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da
我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack
我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat
安装Rails时,一切都很好,但后来,我写道:rails-v和输出:/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require':cannotloadsuchfile--rails/cli(LoadError)from/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`r
提供3种Ubuntu系统安装微信的方法,在Ubuntu20.04上验证都ok。1.WineHQ7.0安装微信:ubuntu20.04安装最新版微信--可以支持微信最新版,但是适配的不是特别好;比如WeChartOCR.exe报错。2.原生微信安装:linux系统下的微信安装(ubuntu20.04)--微信适配的最好,反应最快,但是微信版本只到2.1.1,版本太老,很多功能都没有。3.深度deepin-wine6安装微信:ubuntu20.04+系统deepin-wine6安装新版微信--综合比较好,当前个人使用此种方法1个月,微信版本3.4;没什么大问题,尚可。一、WineHQ7.0安装微信
这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi