ros2节点

一、python实现

1、创建python文件,touch abc.py

2、编辑文件,如下

import rclpy  #导入库
from rclpy.node import Node   #从库中导入node类

def main():   #定义主函数
    rclpy.init()   #初始化,分配资源
    node = Node('cpp_node')      #创建node节点,名字为weather
    node.get_logger().info('天气真好python')     #打印日志
    rclpy.spin(node)    #运行节点,循环往复
    rclpy.shutdown()    #关闭清理
if __name__=='__main__':
    main()    

3、运行文件,./python3 abc.py

二、C++实现

1、创建cpp文件 touch a.cpp

2、编辑文件

#include"rclcpp/rclhpp.hpp"

int main(argc,char** argv)
{
    rclcpp::init(argc,argv);
    auto node=std::make_shared<rclcpp::Node>("cpp_node");
    RCLCPP_INFO(node->get_logger(),"你好啊C++");
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}

3、编译文件

此处不能使用g++ a.cpp编译文件,因为iostream是在库里头的,rclcpp和rclhpp不在库里头。

用cmake .     !!!cmake后面有个点

3.1创建CMakeLists.txt文件

编辑该文件

cmake_minimum_required(VERSION 3.8) #表示需要的CMake最低版本3.8

project(helloworld) #创建一个工程,名字project

add_executable(abc a.cpp)#添加一个可执行文件,第一个参数是可执行文件名字 对应的文件是a.cpp

find_package(rclcpp REQUIRED)

message(STATUS ${rclcpp_INCLUDE_DIRS}) #头文件及rclcpp依赖的头文件

message(STATUS ${rclcpp_LIBRARIES}) #库文件及rclcpp依赖的库文件

target_include_directories(abc PUBLIC ${rclcpp_INCLUDE_DIRS}) #链接头文件,括号内第一个参数是可执行文件名字,第二个是头文件路径

target_link_libraries(abc ${rclcpp_LIBRARIES})#链接库文件,括号内第一个参数是可执行文件,第二个是库文件路径

然后在终端运行cmake .,cmake后面有个点,表示在当前文件夹将CMakeLists文件生成Makefile文件。

如果装了双ros,一定不要选错版本,这是ros2的CMakeLists配置。否则需要花费很多时间解决问题,到后来发现代码没问题。

然后在终端运行make指令进行编译,编译完会生成abc文件,然后就可以运行了。

./abc

三、测试文件(了解argc,argv):

1、创建cpp文件 touch test.cpp

2、编辑文件

#include"iostream"

int main(int argc,char** argv)
{
    std::cout<<"参数数量"<<argc<<std::endl;
    std::cout<<"程序名字"<<argv[0]<<std::endl;
    return 0;
}

argv[1]则是运行指令时程序后面跟的参数,如a.out --help 1 2 3,argv[1]就是第二个参数,等于--help

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值