c++的程序在ros下怎么运行

c++的程序在ros下怎么运行,第1张

1 先建立工作空间~/catkin_ws

2 在工作空间~/catkin_ws下创建包pkg目录second

好处是通过创建包自动生成package.xml和CMakeLists.txt

3 在second目录下创建hello.cpp源代码文件

~~~~伍启~~~~~~~~~~~~~~~~~~~~~~~

eagle:~/catkin_ws$ cd src

eagle:~/catkin_ws/src$ tree second/

second/

├── CMakeLists.txt

├── package.xml

└── src

└── hello.cpp

1 directory, 3 files

4 编写hello.cpp文件

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include <ros/ros.h>

int main(int argc, char **argv) {

ros::init(argc, argv, "helloros1234444")

ros::NodeHandle n

ROS_INFO("Hello, ROS!")

ros::spinOnce()

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5 修改编译册唤makefile文件 CMakeLists.txt

~~~~~~~~~~~~~~~~~~

cmake_minimum_required(VERSION 2.8.3)

project(simple_examples)

find_package(catkin REQUIRED COMPONENTS roscpp)

catkin_package()

include_directories(include $catkin_INCLUDE_DIRS)

add_executable(hello hello.cpp)

target_link_libraries(hello ${catkin_LIBRARIES})

~~~~~~~~~~~~~~~~~~

6 回到~/catkin_ws编译程序

liao@liao-eagle:~/catkin_ws$ catkin_make

Base path: /home/liao/catkin_ws

Source space: /home/liao/catkin_ws/src

Build space: /home/liao/catkin_ws/build

Devel space: /home/liao/catkin_ws/devel

Install space: /home/liao/catkin_ws/install

####

#### Running command: "make cmake_check_build_system" in "/home/liao/catkin_ws/build"

####

####

#### Running command: "make -j2 -l2" in "/home/liao/catkin_ws/build"

####

Scanning dependencies of target hello

[100%] Building CXX object second/CMakeFiles/hello.dir/src/hello.cpp.o

Linking CXX executable /home/liao/catkin_ws/devel/lib/second/hello

[100%] Built target hello

liao@liao-eagle:~/catkin_ws$

7 测腔姿如试c++程序

7.1一个终端里运行roscore

7.2 另外一个终端里运行 rosrun second hello

liao@liao-eagle:~/catkin_ws$ rosrun second hello

[ INFO] [1442208641.400826666]: Hello, ROS!

liao@liao-eagle:~/catkin_ws$ rospack find second

/home/liao/catkin_ws/src/second

liao@liao-eagle:~/catkin_ws$

望采纳

参考肆谨运:

为了使用python3的图像处理程序,需要使用到ros接口,但是由于原生ros接口不支持python3,只能使用python2.7(时间2020-07,版本melodic),一下步骤主晌吵要为了使用ros调用的方式调用python3的程序

由于ros接收图像数据使用的是cv_bridge 接口,所以先编译python3版本的cv_bridge

注意:此时要先安装好python3的环境,可以按照以下方式安装

进入到工作空间进行编译

会有如下提示

编译完成后,可以在工作路径下的install文件夹里生成需要的库,需要使用python3版本的cv_bridge时,就将这个环境变量导入即可

extend参数的作用是让这次的路径配置不影响之前配置好的路裂梁径

1. 在使用rosrun 运行程序时,默认还会调用原生melodic的cv_bridge

我的处理方法是将原来的python版本cv_bridge删除

2. 编译完成会有错误提示,如下图,但不影响使用

编译安装:

在编译时,使用如下命令:

编译过程中会有错误提示

解决方法:

参考 https://answers.ros.org/question/257757/importerror-no-module-named-em-error/

编译完成如下:

运行roscore错误提示

安装netifaces

参考 https://github.com/frescobaldi/python-poppler-qt5/issues/29

https://launchpad.net/ubuntu/+source/sip4/4.19.21+dfsg-1build1

解压安装

在ROS多机通信时,从机里的程序可以继续运行。ROS的多机通信采用的是分布式系统的架构,即由多个计算机节点组成的异构系统。以一个简单的例子来说明,当从机启动一个ROS节点并与主控机连接时,从机与主控机就可以进行数据交换。此时,从机里的程序会将要发送的数据传给ROS节点,ROS节点将数据传到主控机,主控机通过ROS节点将数据传回从机。从机接收到数据后,按照程序设计好的逻辑进行处理。因此,从机里的程序可以在多机通信的情况下继续正常运行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12419157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存