cpp移植到ros系统
最近接到一个活,要把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系统相关推荐
- ROS系统——部署OpenVINO版Nanodet超轻量目标检测器
目录 0 背景 本人的实测效果: 1 环境搭建 2 先熟悉OpenVINO版nanodet的流程 3 在ROS里部署openvino版nanodet的流程 4 源码 4.1 main.cpp内容 4 ...
- ROS系统中实现点云聚类(realsense数据源)
本文主要介绍ROS系统中如何订阅并解码realsense点云数据,并对点云进行稀疏.去噪.聚类. 环境配置见<ROS系统中从零开始部署YoloV4目标检测算法(3种方式)> 需要安装的第三 ...
- ROS 总结(一):ROS系统框架
一.总体结构 ROS的系统主要被分成了三部分: 文件系统级(Filesystem) 计算图级(Computation Graph) 开源社区级(Community) 文件系统级:程序是如何组织和构建的 ...
- ros系统支持java_创建一个rosjava package 并测试发布和接受消息
一.rosjava package 结构和解析 Rosjava 主要是提供了客户端(如:android)与ros系统(如:turtlebot)通信的库,主要应用于android等java平台客户端开发 ...
- ROS系统下完成TCP通信 C语言编程
ROS系统下完成TCP通信,服务端和客户端C语言编程 服务端(Server): #include <std_msgs/Bool.h> #include "ros/ros.h&qu ...
- 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解
本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二: 一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...
- ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人
ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_ ...
- 【论文】ROS系统的无人小车自动跟随方案研究
这个专栏是专注于入了职场之后,对写论文能力要求和技巧经验的一些总结. 在职场不同于在学习等科研院所,更多要求的是发出论文,而不是发高水平论文. 文章列表: [程序员读论文]为什么要读论文? [程序员读 ...
- 在 ROS 系统下使用海康 SDK 并编译官方 demo
文章目录 目录 文章目录 前言 一.配置ROS系统(以Ubuntu18.04 ROS Melodic版本为例)(以Ubuntu18.04 ROS Melodic版本为例) 1.配置 ROS 镜像源 ...
最新文章
- 风变编程的python课程怎么样-风变编程的Python这么火,零基础可以自学吗?
- 深度学习目标检测相关论文资源合辑
- CF1598E-Staircases【计数】
- 博客已经迁移到 http://imbotao.top 也会同步到这儿
- 这届年轻人,连泡面也买不起了
- C语言curl实现FTP上传、下载、获取文件信息
- 趣图:21 副 GIF 动图让你了解各种数学概念
- Maven常用插件配置和使用
- 微信小程序微商城(二):电商首页轮播、分类导航和新品特卖实现
- VMware虚拟机专用win7系统下载|免费下载虚拟机专用的win7系统
- 考上研究生就脱单?快来看看这些女生多的大学!
- 小爱音箱 电脑 麦克风_拆解报告:小米小爱音箱Art 智能音箱
- 创新工场 DeeCamp 2019 人工智能训练营启动报名,计划招收至少 600 名大学生...
- 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
- 你最该知道的事(高级)
- Dubbo-自适应扩展机制之Adaptive注解原理
- 使用jquery对接高德地图地址四级联动
- Scroller的用法
- 先进制造技术论文_轴承先进锻造工艺及制造技术
- 计算机网络月考题职专一年级,职高一年级计算机专业WORD试题
热门文章
- Robotframework 简介及工作原理(转载)
- [小魔王荐汤] 177位百万富翁生活习惯的总结
- 字体个人商用构成侵权吗
- Linux - 安全策略命令
- mysql的ZIP包安装
- 性能测试-LoadRunner(总结)
- 数据库概述-了解数据库-MySQL数据库服务配置-下载安装(强力推荐)
- 季胺化聚苯乙烯微球载纳米铁/镍降解氯代硝基苯/载金纳米粒子聚苯乙烯/聚丙烯酸微球的探究
- 《超越平凡的平面设计:怎样做好版式(第1卷)》—第1章1.4节容易!一个简洁可行的版式...
- Excel中工作表间的关联链接方法及实例