首页 > 编程语言 >ROS2基本命令与简单列子(python与C++)

ROS2基本命令与简单列子(python与C++)

时间:2022-10-16 22:47:36浏览次数:49  
标签:node python C++ -- build install 节点 ROS2

初次学习ROS2机器操作系统,本博客将简单入门记录于此。

 

一. ros2安装:

sudo apt-get install curl && curl  http://fishros.com/tools/install/ros-foxy | bash

二.编译工具colcon安装:

sudo apt-get install python3-colcon-common-extensions

 

三.编译使用 : 

colcon build 

 

 

说明:工作包源码为src,使用colcon build 命令可生成build install log文件夹

python 代码编译:若src中有py代码,使用colcon build仅将src中.py代码拷贝install中,若修改src中.py代码需使install执行有效,(时实修改)使用:

colcon build --symlink-install

 

四.Python与C++创建工作空间、功能包及节点方法:

节点存在功能包中,功能包存在工作空间中,因此创造节点需创造工作空间与功能包:

工作空间创造(实际为文件夹):

mkdir -p town_ws/src
cd town_ws/src

功能包创建(在路径src下运行):

ros2 pkg create village_li  --build-type ament_python --dependencies rclpy 

village_li :功能包的名字,可以任意名称修改

--build-type : 选择版本创建,共有三个,分别为 ament_python ament_cmake  cmake  ,默认为ament_cmake 

--dependencies :依赖库 ,如rclpy  ros2的python客户端接口

 

 

 

python节点创建

直接在功能包下给.py文件,如下红框

 

 

 li4.py节点代码编译:

import rclpy
from rclpy.node import Node
'''
编写ros2节点一般步骤
1.导入库文件
2.初始化客户端库
3.新建节点对象
4.spin循环节点
5.关闭客户端库     
'''
def main(args=None):
    rclpy.init(args=args)
    li4_node=Node("li4")
    li4_node.get_logger().info("打印内容")
    rclpy.spin(li4_node)
    rclpy.shutdown() # 关闭

节点完后需要配置,指定找到节点,节点名为:li4_node,配置如下:

 

 

 编译:

在town_ws路径下,执行:

colcon build

然后执行(告诉系统路径):

source install/setup.bash

运行:

ros2 run village_li li4_node

 

C++节点创建

C++功能包创建

ros2 pkg create village_wang  --build-type ament_cmake --dependencies rclcpp 

village_wang:功能包的名字,可以任意名称修改

--build-type : 选择版本创建,共有三个,分别为 ament_python ament_cmake  cmake  ,默认为ament_cmake 

--dependencies :依赖库 ,如rclpp  ros2的C++客户端接口

#include "rclcpp/rclcpp.hpp"
int main(int args,char**argv){
   rclcpp::init(argc,argv);
  auto node=std::make_shared<rclcpp::Node>("wang2");//构建节点
  RCLCPP_INFO(node->get_logger(),"大家好"); // 内容
  rclcpp::spin(node);//运行节点
  rclcpp::shutdown();
  return 0;
  }

 

 cmakelists.txt重点内容

 

 

 

 

标签:node,python,C++,--,build,install,节点,ROS2
From: https://www.cnblogs.com/tangjunjun/p/16796367.html

相关文章

  • python学习——爬取数据到mysql
    承接上文,上次把数据爬取到了excel中,这次在上次代码的基础上进行修改,将数据直接上传到mysql中#-*-coding:utf-8-*-importrequestsfrombs4importBeautifulSoupim......
  • 65、记录使用科大讯飞的声纹识别从官方的Python Demo转C++ Demo路程
    基本思想:需要将声纹识别的demo集成到项目中,奈何官方只提供了py版本和java版本,需要c++版本,逐开发和记录一下,只是简单复现其py代码一、官方代码的和手册的地址 这里将py代码......
  • c++ container容器(string,vector,map,queue,stack等等)
    STL和c++标准库标准模板库STL部分包含在C++标准库中的软件库。c++标准库:即以std::开头,但是部分编译器厂商也会把STL的内容放在std::namespace里面由于​​一个常见的误解​......
  • C++实现链表反转
    #include"stdio.h"structListNode{intval;ListNode*next;ListNode(intx):val(x),next(NULL){}};classSolution{public:ListNode*Rev......
  • 【Python】Centos7安装Python3和pip
    安装Python3#wgethttps://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz#tar-xvJfPython-3.6.2.tar.xz#cdPython-3.6.2#./configure--prefix=/data......
  • python第三周总结
    每周总结文件操作1.文件概念与打开方式1.文件的概念就是操作系统暴露给用户操作硬盘的快捷方式eg:双击一个文件其实是从硬盘将数据加载到内存ctrl......
  • C++二叉树动画演示
    C++二叉树动画演示题目2:基于前序、中序、后序序列构造二叉树需求:1、任意输入前序+中序序列或者中序+后序序列,生成二叉树,请使用三叉链表,在构造链表的过程中同步更新每......
  • C++提高编程
    目录C++提高编程1模板1.1模板的概念1.2函数模板1.2.1函数模板语法1.2.2函数模板注意事项1.2.3函数模板案例1.2.4普通函数与函数模板的区别1.2.5普通函数与函数模板......
  • python 包
    1.python包init.py其实是一个特殊的文件,只要这个文件存在这个文件夹里,那么这个文件夹就是python包,如果没有__init__.py,那这个文件夹就只是文件夹。创建包的步骤:2.导......
  • python新类似乎违背了广度优先的执行顺序, 对象自定义计数实例化的多少
    classTSSS():deff1(self):print('fromTSSS')classSSS(TSSS):deff1(self):print('fromSSS')classSS():deff1(self):......