当前位置:   article > 正文

初学ros机器人程序设计_ros怎么创建文本文件

ros怎么创建文本文件

初学ros机器人程序设计,从创建工作空间到编译运行节点,由于Linux也是初学,各种焦头烂额,把这些最基础的东西先总结下来,以备日后查看。这是第一次写博客,倘若有诸多错误的地方,希望大家谅解并指出。

1、在ros下创建工作空间:

  1. mkdir -p catkin_ws/src
  2. cd src
  3. catkin_init_workspace
  4. cd ..
  5. catkin_make
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2、创建功能包
方法一:利用catkin创建package

  1. cd ~/catkin_ws/src
  2. catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
  • 1
  • 2
  • 1
  • 2
  • 1
  • 2

创建程序包的一般格式是catkin_create_pkg ,此命令的格式包括功能包名称和依赖项,在上面示例中,依赖项包括std_msg、rospy和roscpp。
运行上面命令之后,在src文件夹下会生成一个与功能包名同名的文件夹,在该文件夹下有如下文件(夹)

  1. workspace_folder/
  2. src/
  3. package_name/
  4. include --文件夹
  5. src --文件夹
  6. CMakeLists.txt
  7. package.xml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

方法二:利用roscreate创建package

  1. cd ~/catkin_ws/src
  2. roscreate-pkg beginner_tutorials std_msgs rospy roscpp
  • 1
  • 2
  • 1
  • 2
  • 1
  • 2

同样的,利用rosmake创建程序包的格式是roscreate-pkg ,此命令的格式也包括功能包名称和依赖项。
运行上面命令之后,在src文件夹下会生成一个与功能包名同名的文件夹,在该文件夹下有如下文件(夹)

  1. workspace_folder/
  2. src/
  3. package_name/
  4. include --文件夹
  5. src --文件夹
  6. CMakeLists.txt
  7. manifest.xml
  8. mainpage.dox
  9. Makefile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3、编译功能包
方法一:利用catkin编译
用catkin编译的是上述第一种利用catkin创建的package,首先修改创建功能包时生成的CMakeLists.test文件,用gedit打开该文件,
⑴添加以下语句来查找添加的依赖包

  1. find_package(catkin REQUIRED COMPONENTS
  2. sensor_msgs
  3. cv_bridge
  4. image_transport)
  5. find_package(OpenCV 2 REQUIRED)
  6. find_package(PLC REQUIRED)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

⑵添加以下语句来添加参与编译的节点程序

  1. add_executable(node name src/node program)#添加可执行节点
  2. target_link_libraries(node name ${catkin_LIBRARIES})#链接库
  3. add_dependencies(node name package name_generator_messages_cpp)#为可执行文件添加对生成的消息文件的依赖,因为catkin把所有的package并行的编译,所以如果你要使用其他catkin工作空间中其他package的消息,你同样也需要添加对他们各自生成的消息文件的依赖,感觉就是一个先导入头文件的过程。
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

除了可以在创建功能包时添加系统提供的依赖(catkin_create_pkg beginner_tutorials std_msgs rospy roscpp),也可以修改创建功能包时生成的package.xml文件,以图像处理中所需用到的包为例,加入了以下指令来说明后面增加的依赖包

  1. <run_depend>sensor_msgs</run_depend>
  2. <run_depend>image_transport</run_depend>
  3. <run_depend>cv_bridge</run_depend>
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

利用catkin编译的方法是:

  1. #under workspace
  2. catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
  • 1
  • 2
  • 1
  • 2
  • 1
  • 2

方法二:利用rosmake编译
用rosmake编译的是上述第二种利用roscreate创建的package,同样的,在编译之前,需要修改CMakeLists.txt文件和manifest.xml文件,不同的地方是在修改CMakeLists.txt文件时需要加上如下语句来添加参与编译的节点程序:

rosbuild_add_executable(node_name src/node_name.cpp)
   
   
  • 1
  • 1
  • 1

注意:
ROS从indigo开始就不再把OpenCV作为系统依赖包而是作为一个第三方包引入,如果直接使用会在rosmake编译阶段报错,no exist package “opencv2”,此时只需要在CMakeLists.txt中添加find_package(OpenCV 2 REQUIRED),然后在manifest.xml中不能添加依赖包,此处添加的为系统依赖包。
利用rosmkae编译的方法是:

  1. #under workspace
  2. rosmake package_name
  • 1
  • 2
  • 1
  • 2
  • 1
  • 2

运行以上命令之后,如果编译没有出错,在bin文件夹下可以看到生成的可执行文件,可以直接运行./node_name来运行节点。
3、运行编译完成之后的节点(不用launch,还不懂)

rosrun package_name node_name
   
   
  • 1
  • 1
  • 1

注意:
1)创建功能包是在src目录下,而编译功能包是在workspace目录下。
2)编译之前要先确保添加了当前工作空间的path,查看方法是:

echo $ROS_PACKAGE_PATH
   
   
  • 1
  • 1
  • 1

添加方法是source setup.bash文件

  1. #under the path: workspace
  2. source ./devel/setup.bash
  • 1
  • 2
  • 1
  • 2
  • 1
  • 2

3)运行节点之前要下roscore

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/642811
推荐阅读
  

闽ICP备14008679号