ros编译命令,Ros命令

  ros编译命令,Ros命令

  难度等级:

  简单的命令调用

  困难的编程

  命令调用简单情况

  ROS1:

  rosrun包名可执行文件名

  *ROS1必须保证主节点的运行单独使用rosrun。

  (罗斯科)

  ROS2:

  ros2运行包名可执行文件名

  比如启动键盘遥控器turtlesim

  ROS1:

  罗斯科雷

  rosrun turtlesim turtlesim_node

  rosrun turtlesim turtle _ teleop _ key

  大多数ROS1节点在启动时连接到节点管理器。如果连接在操作过程中中断,将不会尝试重新连接。因此,如果roscore终止,当前运行的其他节点将无法建立新的连接,即使roscore稍后重新启动。

  所以,DDS就推出来了!(当然,这只是重要原因之一)

  ROS2:

  ros2运行turtlesim turtlesim_node

  ros2运行turtlesim turtle_teleop_key

  ROS基于DDS/RTPS,作为中间件,提供发现、序列化和传输功能。综上所述,DDS是一个端到端的中间件,提供与ROS系统相关的功能,如分布式发现(不像ROS 1采用的roscore那样集中)和控制不同“服务质量”传输的选项。

  DDS是一种行业标准,然后由一系列供应商实现,例如:RTI-CONNECT或ADLink -OpenSplice RTPS(也称为DDSI-RTPS)的实现版本是DDS用于网络通信的有线协议。虽然有些实现不能满足完整的DDS API,但是可以为ROS 2提供足够的功能,比如eProsima的实现版本——Fast RTPS。ROS支持多种DDS/RTPS实现,因此在选择供应商/实现时不能“一刀切”。在选择中间件实现时,可能要考虑许多因素:许可、技术、平台可用性或计算空间等。供应商可能会提供几种DDS或RTPS实施版本,以满足不同的要求。例如,RTI有一些不同目的的Connext实现更改,例如专用于微控制器,另一个用于需要特殊安全认证的应用程序(目前ROS 2仅支持其标准桌面版本)。为了用DDS/RTPS实现和封装ROS 2,ROS中间件“rmw”的接口(也称rmw接口或RMW接口)需要创建一个用DDS或RTPS实现的API和工具来抽象ROS中间件的接口。实现和维护RMW包来支持DDS开发需要做大量的工作,但是至少支持一些实现来保证ROS 2代码库不依赖于任何具体的实现是非常重要的,因为用户可能要根据具体项目的需要来切换实现版本。

  简单案例编程

  为什么包名是turtlesim?

  这是功能包的名称吗?

  cmake_minimum_required(版本3.5)

  项目(turtlesim)

  if(非CMAKE_CXX_STANDARD)

  集合(CMAKE_CXX_STANDARD 14)

  endif()

  if(CMAKE_COMPILER_IS_GNUCXX或CMAKE_CXX_COMPILER_ID匹配 Clang )

  add _ compile _ options(-Wall-Wextra-wpe dantic)

  endif()

  find_package(需要ament_cmake)

  find_package(需要ament_index_cpp)

  find_package(需要geometry_msgs)

  find_package(Qt5必需组件小部件)

  find_package(需要rclcpp)

  find_package(需要rclcpp_action)

  find_package(需要rosidl_default_generators)

  find_package(需要std_msgs)

  find_package(需要std_srvs)

  包含目录(包含{ qt5 widgets _ INCLUDE _ DIRS })

  rosidl _ generate _ interfaces($ { PROJECT _ NAME }

   action/RotateAbsolute.action

  msg/Color.msg

  msg/Pose.msg

   srv/Kill.srv

   srv/SetPen.srv

  srv/Spawn.srv

  srv/绝对瞬间移动. SRV

  SRV/teleport relative . SRV’)

  set(dependencies ament _ index _ CPP geometry _ msgs rcl CPP rcl CPP _ action STD _ msgs STD _ srvs )

  设置(turtlesim_node_SRCS

  src/turtlesim.cpp

  src/turtle.cpp

  src/turtle_frame.cpp

  )

  设置(turtlesim_node_HDRS

  include/turtle sim/turtle _ frame . h

  )

  qt5_wrap_cpp(图尔西姆_节点_ MOCS $ {图尔西姆_节点_HDRS})

  add _ executable(turtle sim _ node $ { turtle sim _ node _ SRCS } $ { turtle sim _ node _ MOCS })

  target _ link _ libraries(turtle sim _ node Qt5:Widgets)

  ament _ target _ dependencies(turtlesim _ node $ { dependencies })

  rosidl _ target _ interfaces(turtlesim _ node $ { PROJECT _ NAME } rosidl _ typesupport _ CPP )

  add _ executable(turtle _ teleop _ key教程/teleop_turtle_key.cpp)

  ament _ target _ dependencies(turtle _ teleop _ key $ { dependencies })

  rosidl _ target _ interfaces(turtle _ teleop _ key $ { PROJECT _ NAME } rosidl _ typesupport _ CPP )

  add _可执行文件(draw_square教程/draw_square.cpp)

  ament _ target _ dependencies(draw _ square $ { dependencies })

  rosidl _ target _ interfaces(draw _ square $ { PROJECT _ NAME } rosidl _ typesupport _ CPP )

  添加可执行文件(模拟教程/mimic.cpp)

  元素_目标_依赖项(模仿$ {依赖项})

  rosidl _目标_接口(模仿$ { PROJECT _ NAME } rosidl _ typesupport _ CPP )

  安装(目标turtlesim _ node turtle _ teleop _ key draw _ square mimic

  目标库/$ {项目名称})

  安装(目录映像

  目标共享/${PROJECT_NAME}

  文件_匹配模式 *。巴布亚新几内亚模式 *。SVG’)

  安装(目录启动

  目标共享/${PROJECT_NAME})

  ament_package()功能包名字参考:项目(turtlesim)

  与此类似,节点名字如下:

  add _ executable(turtle sim _ node $ { turtle sim _ node _ SRCS } $ { turtle sim _ node _ MOCS })

  目标_链接_库(turtle sim _ node Qt5:Widgets)

  ament _ target _ dependencies(turtlesim _ node $ { dependencies })

  rosidl _ target _ interfaces(turtlesim _ node $ { PROJECT _ NAME } rosidl _ typesupport _ CPP )

  add _ executable(turtle _ teleop _ key教程/teleop_turtle_key.cpp)

  ament _ target _ dependencies(turtle _ teleop _ key $ { dependencies })

  rosidl _ target _ interfaces(turtle _ teleop _ key $ { PROJECT _ NAME } rosidl _ typesupport _ CPP )

  命令调用,通俗不严谨说类似应用程序接口

  编写程序,通俗不严谨说类似应用程序。

  调用应用程序接口难,还是开发应用难?不言而喻呢。

  只使用命令调用(受制于程序):

  如果程序编写则可以(自由飞翔的舞台):

  # include turtle sim/turtle _ frame。 h

  #包含QPointF

  #包含标准库函数

  #包括得到字符串表示的时间

  #define DEFAULT_BG_R0x65

  #define DEFAULT_BG_G0x65

  #define DEFAULT_BG_B0x65

  命名空间图尔特西姆

  {

  turtle frame:turtle frame(rcl CPP:Node:shared ptr Node _ handle,QWidget* parent,Qt:WindowFlags f)

  :QFrame(父级,f)

  ,path_image_(888,888,QImage:Format_ARGB32)

  ,path_painter_( path_image_)

  ,帧计数_(0)

  ,id_counter_(0)

  {

  setFixedSize(888,888);

  setWindowTitle(TurtleSim奇妙曲线);

  srand(time(NULL));

  update _ timer _=新q定时器(this);

  update _ timer _-setInterval(16);

  update _ timer _-start();

  connect(update_timer_,SIGNAL(timeout()),this,SLOT(on update());

  nh_=节点句柄;

  rcl _ interfaces:msg:整数范围范围;

  范围。from _ value=0;

  范围。step=1;

  range.to _ value=255

  rcl _ interfaces:msg:参数描述符background _ r _ descriptor

  背景描述符。描述=背景色的红色通道;

  背景描述符。整数_范围。推回(范围);

  rcl _ interfaces:msg:参数描述符background _ g _ descriptor

  背景_ g _描述符。描述=绿色通道的背景色;

  背景_ g _描述符。整数_范围。推回(范围);

  rcl _ interfaces:msg:参数描述符background _ b _ descriptor

  背景_ b _描述符。描述=背景颜色的蓝色通道;

  背景_ b _描述符。整数_范围。推回(范围);

  NH _-declare _ parameter( background _ R ,rcl CPP:参数值(DEFAULT _ BG _ R),background _ R _ descriptor);

  NH _-declare _ parameter( background _ G ,rcl CPP:参数值(DEFAULT _ BG _ G),background _ G _ descriptor);

  NH _-declare _ parameter( background _ B ,rcl CPP:参数值(DEFAULT _ BG _ B),background _ B _ descriptor);

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: