赞
踩
目录
学习参考:赵虚左的ROS课程
- 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()功能。
打开功能包中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节点,其中后面不改,默认链接库。
因为c++必须编译后才能运行,回到工作空间根目录,重新编译一次。
catkin_make
source ./devel/setup.bash
新开终端
roscore
在配置好环境变量的终端输入
rosrun helloworld suiyi
终端输出
[ INFO] [1664245759.288360443]: hello world!
在helloworld功能包中创建scripts(脚本)文件夹
mkdir scripts
在创建的文件夹中创建helloworld_p.py 文件。
- #! /usr/bin/env python
-
- import rospy
-
- if __name__ == "__main__":
- rospy.init_node("Hello")
- rospy.loginfo("Hello World!!!!")
注意要给可执行权限。
chmod +x 自定义文件名.py
rosrun helloworld helloworld_p.py
python不用编译直接可以运行。(melodic版本,noetic需要在CMakeList.txt配置一下python)
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。