一、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

被折叠的 条评论
为什么被折叠?



