windows 下使用docker的ROS实战之HelloWorld(二)

**

目标:通过ros建立工作区打印helloworld,通过c++与python两种方式

**

一.HelloWorld 工作区建立

视频参考大佬的b站连接

本文建立的工作区的压缩文件

1.创建工作空间并初始化

首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。

mkdir -p demo1_ws/src
cd demo1_ws/
catkin_make

windows 下使用docker的ROS实战之HelloWorld(二)_第1张图片

2.进入 src 创建 ros 包并添加依赖

会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。

cd src
catkin_create_pkg helloword roscpp rospy std_msgs

windows 下使用docker的ROS实战之HelloWorld(二)_第2张图片


二.HelloWorld (C++版本)

3.(C++版本)进入 ros 包的 src 目录编辑源文件并编辑c++文件

cd src
gedit cs.cpp

添加的c++文件如下

#include "ros/ros.h"

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

    return 0;
}

windows 下使用docker的ROS实战之HelloWorld(二)_第3张图片

4.(C++版本)编辑 ros 包下的 CMaKeLists.txt 文件

cd ..
gedit CMakeLists.txt

修改格式如下


add_executable(节点名称(随便取)
  src/cs.cpp
)
target_link_libraries(节点名称(随便取)
  ${catkin_LIBRARIES}
)

windows 下使用docker的ROS实战之HelloWorld(二)_第4张图片

5.(C++版本)返回工作空间目录并编译

c++文件需要编译生成可执行文件才能用,而python是脚本文件就不需要了,人生苦短,快用python,这里只是记录下c++文件的使用,建议小伙伴能用python就用python吧。

cd 自定义空间名称

catkin_make

如下可看到生成的编译后的可运行文件(test_node的名字来自之前在CMaKeLists.txt 文件的设定)
windows 下使用docker的ROS实战之HelloWorld(二)_第5张图片

6.(C++版本)进入工作空间目录并执行

1.启动ros核心。另外开一个窗口,路径无所谓,保持ros核心一直运行

roscore

2.再另开一个窗口,进入对应工作空间

cd 工作空间

3.修改环境变量命令

source ./devel/setup.bash

4.执行之前生成的原文件
helloword :最开始的包名
test_node :编译生成的节点可执行文件名

rosrun helloword test_node 

windows 下使用docker的ROS实战之HelloWorld(二)_第6张图片

三.HelloWorld (Python版本)

3.(python版本)进入 ros 包添加 scripts 目录并编辑 python 文件

cd helloworld
mkdir scripts
cd scripts
gedit cs.py

文件内部粘贴如下注意 由于是python2 所有 第一行的 #! /usr/bin/env python 记得加:

#! /usr/bin/env python

"""
    Python 版 HelloWorld

"""
import rospy

if __name__ == "__main__":
	# 初始化一个叫 Hello 的ros节点
    rospy.init_node("Hello")
    # 通过ros的日志输入打印信息
    rospy.loginfo("python Hello World!!!!")

windows 下使用docker的ROS实战之HelloWorld(二)_第7张图片

4.(python版本)为 python 文件添加可执行权限

chmod +x就是说给文件可执行的权限

chmod +x cs.py

5.(python版本)编辑 ros 包下的 CMaKeLists.txt 文件

为了给python选择合适的解释器

cd ..
gedit CMakeLists.txt

修改的部分如下

install(PROGRAMS
   scripts/cs.py
   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 )

windows 下使用docker的ROS实战之HelloWorld(二)_第8张图片

6.(Python版本)返回工作空间目录并编译

注意如果同时有c++版本的CMaKeLists.txt中配置与python的,则catkin_make优先执行c++的

cd 自定义空间名称

catkin_make

windows 下使用docker的ROS实战之HelloWorld(二)_第9张图片

7.(Python版本)进入工作空间目录并执行

1.启动ros核心。另外开一个窗口,路径无所谓,保持ros核心一直运行

roscore

2.再另开一个窗口,进入对应工作空间

cd 工作空间

3.修改环境变量命令

source ./devel/setup.bash

4.执行之前生成的原文件
helloword :最开始的包名
cs.py :编译生成的节点可执行文件名

rosrun helloword cs.py 

windows 下使用docker的ROS实战之HelloWorld(二)_第10张图片

四.补充

1.工作空间添加环境变量

添加环境变量保存至 .bashrc文件中可使得在任意窗口调用

echo "source ~/工作空间/devel/setup.bash" >> ~/.bashrc

或Ctrl + H 可以调出隐藏文件,直接找到 .bashrc文件,在末尾添加

source ~/demo1_ws/devel/setup.bash

windows 下使用docker的ROS实战之HelloWorld(二)_第11张图片
这时候就可以顺便在哪打开终端然后调用程序了
windows 下使用docker的ROS实战之HelloWorld(二)_第12张图片

你可能感兴趣的:(ROS,起飞的docker,ros,python,c++)