1.ROS编程学习:helloworld的c++与python实现

目录

一.c++实现

1.创建工作空间

3.CMakeLists.txt配置

4.catkin_make编译

 5.source一下,配置环境变量

6.roscore+rosrun

二.python实现

1.创建scrips文件夹

2.创建helloworld_p.py

3.添加可执行权限

4.roscore+rosrun 


学习参考:赵虚左的ROS课程

一.c++实现

1.创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

mkdir——创建文件夹

cd——切换工作目录

catkin_init_workspace——工作空间初始化

cd ~/catkin_ws/
catkin_make

catkin_make——编译工作空间

cd src
catkin_create_pkg helloworld roscpp rospy std_msgs

catkin_create_pkg——创建功能包

helloworld——功能包名称

roscpp——用来运行c++代码的库(依赖)

rospy——用来运行python代码的库(依赖)

std_msgs——标准消息的库,比如string字符串消息类型。(依赖)

2.通过touch命令创建helloworld_c.cpp文件

进入helloworld功能包中的src文件夹,打开终端

touch helloworld_c.cpp

用touch创建名为helloworld_c的cpp文件。

#include "ros/ros.h"

int main(int argc, char *argv[])
{
    //执行 ros 节点初始化
    ros::init(argc,argv,"hello");
    //创建 ros 节点句柄(非必须)
    ros::NodeHandle n;
    //控制台输出 hello world
    ROS_INFO("hello world!");

    return 0;
}

头文件调用ros库,主函数中,创建ros节点并初始化,创建ros节点句柄,在控制台窗口输出hello world!字符串,类似于c++的cout和printf()功能。

3.CMakeLists.txt配置

打开功能包中CMakeLists.txt,修改(ctrl+f搜索)

(1)声明c++可执行文件

## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/helloworld_node.cpp)
add_executable(suiyi src/helloworld_c.cpp)

第一个参数为期望生成(随意命名)可执行文件的名称(.exe),第二个参数为被编译的源码文件(.cpp)

(2)指定要链接库或可执行目标的库。

## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
#   ${catkin_LIBRARIES}
# )
target_link_libraries(suiyi ${catkin_LIBRARIES})

改成刚刚随意命名的suiyi节点,其中后面不改,默认链接库。

4.catkin_make编译

因为c++必须编译后才能运行,回到工作空间根目录,重新编译一次。

catkin_make

 5.source一下,配置环境变量

source ./devel/setup.bash

6.roscore+rosrun

新开终端

roscore

在配置好环境变量的终端输入

rosrun helloworld suiyi 

终端输出

[ INFO] [1664245759.288360443]: hello world!

二.python实现

1.创建scrips文件夹

在helloworld功能包中创建scripts(脚本)文件夹

mkdir scripts

2.创建helloworld_p.py

在创建的文件夹中创建helloworld_p.py 文件。

#! /usr/bin/env python

import rospy

if __name__ == "__main__":
    rospy.init_node("Hello")
    rospy.loginfo("Hello World!!!!")

3.添加可执行权限

注意要给可执行权限。

1.ROS编程学习:helloworld的c++与python实现_第1张图片

chmod +x 自定义文件名.py

4.roscore+rosrun 

rosrun helloworld helloworld_p.py 

python不用编译直接可以运行。(melodic版本,noetic需要在CMakeList.txt配置一下python)

你可能感兴趣的:(ROS编程,ros)