最近接到一个活,要把CPP的算法放在ROS系统下去跑。接到活后按照ROS系统的指导说明开始整,遇到一些坑,在这里记录下来。
根据ROS系统的架构,在一个大工作空间下分成多个可独立运行的节点。环境设置流程参考下面的教程:
http://www.autolabor.com.cn/book/ROSTutorials/chapter1/14-ros-ji-cheng-kai-fa-huan-jing-da-jian/142-an-zhuang-vscode.html
步骤是:
1.首先要在项目文件夹下执行一次编译 catkin_make,此时在该文件夹下生成build和devel文件夹,并在src文件夹下生成CMakeLists.txt文件
2.创建节点包 catkin_create_pkg bizhang roscpp std_msgs,其中bizhang是我的算法节点。roscpp和std_msgs是这个算法节点会依赖的包。创建后会在节点目录下生成一个CMakeLists.txt和package.xml文件。
目录结构见下图,后续所有的修改,是修改bizhang节点目录下的对应文件。 3.将c++代码全部拷贝到bizhang节点下的src目录中,此时该目录下有全部的c++源文件。修改main所在文件,在ros节点主程序中运行应用逻辑。

//基本代码结构如下
#include "ros/ros.h"
#include "std_msgs/String.h"int main(int argv,char ** arv)
{//初始化ros节点,该节点名为后续要启动的节点名ros::init(argc,argv,"mybizhang");//创建ros节点句柄ros::NodeHandle pathDesign;//创建订阅者ros::Subscriber sub;//创建节点发布者ros::Publisher pub;//通过发布者发布数据,通过订阅者订阅数据//略//定义运行频率ros::Rate loop_rate(1);     //1Hz频率执行节点功能while(ros::ok()){//运行节点逻辑}return 0;
}

4.修改节点下的CMakeList.txt文件,在文件的末尾添加节点和以来的cpp文件。比如本文中执行包中有3个cpp文件,均要通过以下格式将cpp文件和bizhang节点关联起来。

add_executable(bizhang src/bizhang.cpp src/bizhangUAV.cpp src/spacePoint.cpp)
target_link_libraries(bizhang  ${catkin_LIBRARIES})

如果没有关联,将会出现链接时错误

[100%] Linking CXX executable /home/liufeng/mycatkin_ws/devel/lib/bizhang/bizhang
/usr/bin/ld: CMakeFiles/bizhang.dir/src/bizhang.cpp.o: in function `readObsPoint(std::vector<spacePoint, std::allocator<spacePoint> >&, Point*, int)':
bizhang.cpp:(.text+0x1da): undefined reference to `spacePoint::spacePoint(double, double, double)'
/usr/bin/ld: CMakeFiles/bizhang.dir/src/bizhang.cpp.o: in function `calcPath(Point*, int, Point&, double, double, double, double)':
bizhang.cpp:(.text+0x29e): undefined reference to `bizhangUAV::bizhangUAV(double, double, double, double)'
/usr/bin/ld: bizhang.cpp:(.text+0x2dc): undefined reference to `spacePoint::spacePoint(double, double, double)'
/usr/bin/ld: bizhang.cpp:(.text+0x376): undefined reference to `bizhangUAV::calcAttr(spacePoint&)'

5.将setup.bash加入到环境变量中,否则运行节点的时候会出现找不到节点包的错误

liufeng@ubuntu:~$ source ~/mycatkin_ws/devel/setup.bash .bashrc

6.完成后,启动roscore,再使用rosrun启动节点即可

liufeng@ubuntu:~/mycatkin_ws$ rosrun bizhang bizhang
新航路生成,包含386个航路点!
完成这次航路规划所用的时间是:1486ms
第1步的路径点为:0.0261712 0.0287883 0.0314054
第2步的路径点为:0.0523424 0.0575766 0.0628109
.......

cpp移植到ros系统相关推荐

  1. ROS系统——部署OpenVINO版Nanodet超轻量目标检测器

    目录 0 背景 本人的实测效果: 1 环境搭建 2 先熟悉OpenVINO版nanodet的流程 3  在ROS里部署openvino版nanodet的流程 4 源码 4.1 main.cpp内容 4 ...

  2. ROS系统中实现点云聚类(realsense数据源)

    本文主要介绍ROS系统中如何订阅并解码realsense点云数据,并对点云进行稀疏.去噪.聚类. 环境配置见<ROS系统中从零开始部署YoloV4目标检测算法(3种方式)> 需要安装的第三 ...

  3. ROS 总结(一):ROS系统框架

    一.总体结构 ROS的系统主要被分成了三部分: 文件系统级(Filesystem) 计算图级(Computation Graph) 开源社区级(Community) 文件系统级:程序是如何组织和构建的 ...

  4. ros系统支持java_创建一个rosjava package 并测试发布和接受消息

    一.rosjava package 结构和解析 Rosjava 主要是提供了客户端(如:android)与ros系统(如:turtlebot)通信的库,主要应用于android等java平台客户端开发 ...

  5. ROS系统下完成TCP通信 C语言编程

    ROS系统下完成TCP通信,服务端和客户端C语言编程 服务端(Server): #include <std_msgs/Bool.h> #include "ros/ros.h&qu ...

  6. 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

  7. ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人

    ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_ ...

  8. 【论文】ROS系统的无人小车自动跟随方案研究

    这个专栏是专注于入了职场之后,对写论文能力要求和技巧经验的一些总结. 在职场不同于在学习等科研院所,更多要求的是发出论文,而不是发高水平论文. 文章列表: [程序员读论文]为什么要读论文? [程序员读 ...

  9. 在 ROS 系统下使用海康 SDK 并编译官方 demo

    文章目录 目录 文章目录 前言 一.配置ROS系统(以Ubuntu18.04  ROS Melodic版本为例)(以Ubuntu18.04  ROS Melodic版本为例) 1.配置 ROS 镜像源 ...

最新文章

  1. 风变编程的python课程怎么样-风变编程的Python这么火,零基础可以自学吗?
  2. 深度学习目标检测相关论文资源合辑
  3. CF1598E-Staircases【计数】
  4. 博客已经迁移到 http://imbotao.top 也会同步到这儿
  5. 这届年轻人,连泡面也买不起了
  6. C语言curl实现FTP上传、下载、获取文件信息
  7. 趣图:21 副 GIF 动图让你了解各种数学概念
  8. Maven常用插件配置和使用
  9. 微信小程序微商城(二):电商首页轮播、分类导航和新品特卖实现
  10. VMware虚拟机专用win7系统下载|免费下载虚拟机专用的win7系统
  11. 考上研究生就脱单?快来看看这些女生多的大学!
  12. 小爱音箱 电脑 麦克风_拆解报告:小米小爱音箱Art 智能音箱
  13. 创新工场 DeeCamp 2019 人工智能训练营启动报名,计划招收至少 600 名大学生...
  14. 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
  15. 你最该知道的事(高级)
  16. Dubbo-自适应扩展机制之Adaptive注解原理
  17. 使用jquery对接高德地图地址四级联动
  18. Scroller的用法
  19. 先进制造技术论文_轴承先进锻造工艺及制造技术
  20. 计算机网络月考题职专一年级,职高一年级计算机专业WORD试题

热门文章

  1. Robotframework 简介及工作原理(转载)
  2. [小魔王荐汤] 177位百万富翁生活习惯的总结
  3. 字体个人商用构成侵权吗
  4. Linux - 安全策略命令
  5. mysql的ZIP包安装
  6. 性能测试-LoadRunner(总结)
  7. 数据库概述-了解数据库-MySQL数据库服务配置-下载安装(强力推荐)
  8. 季胺化聚苯乙烯微球载纳米铁/镍降解氯代硝基苯/载金纳米粒子聚苯乙烯/聚丙烯酸微球的探究
  9. 《超越平凡的平面设计:怎样做好版式(第1卷)》—第1章1.4节容易!一个简洁可行的版式...
  10. Excel中工作表间的关联链接方法及实例