如何编写ROS程序

1.创建工作区

$ mkdir -p ~/catkin_ws/src   ///-p表示递归创建目录
$ cd ~/catkin_ws/
$ catkin_make
$ source devel/setup.bash
$ echo $ROS_PACKAGE_PATH
/home/youruser/catkin_ws/src:/opt/ros/kinetic/share

你可以用任何你喜欢的名字命名你的工作区

2.创建package

创建一个新ROS功能包的命令应该在你工作区中的src目录下运行
创建包的时候添加对应的依赖库。

Catkin_create_pkg [package_name] [depend1] [depend2] [depend3]
catkin_create_pkg package-name  std_msgs roscpp

目录下生成了两个配置文件:
第一个配置文件,叫做 package.xml,第二个文件,叫做 CMakeLists.txt,是一个 Cmake 的脚本文件,Cmake 是一个符合工业标准的跨平台编译系统。(一个工作区目录,包含了一个 src目录,其中又包含了一个功能包目录)ROS 包的命名遵循一个命名规范,只允许使用小写字母、数字和下划线,而且首字符必须是一个小写字母。

3.编写程序

一些在线教程建议在你的功能包目录中创建 src 目录来存放 C++源文件。这个附加的组织结构可能是有益的,特别是对于那些含有多种类型文件的较大的功能包。

#include <ros / ros.h>
 int main ( int argc , char ** argv )
{
    ros::init ( argc , argv , " hello _ros " ) ;
    ros::NodeHandle nh ;
    ROS_INFO_STREAM( " Hello , ROS! " ) ;
}

ROS_INFO_STREAM 宏将生成一条消息,且这一消息被发送到不同的位置,包括控制台窗口。
ros::init函数初始化ROS客户端库。请在你程序的起始处调用一次该函数 。函数最后的参数是一个包含节点默认名的字符串。
ros::NodeHandle(节点句柄)对象是你的程序用于和ROS系统交互的主要机制 。创建此对象会将你的程序注册为ROS节点管理器的节点

4.配置程序

首先,我们需要声明程序所依赖的其他功能包。对于 c++程序而言,此步骤是必要的,以确保catkin能够为c++编译器提供合适的标记来定位编译功能包所需的头文件和链接库。为了给出依赖库,编辑包目录下的 CMakeLists.txt 文件

find_package(catkin REQUIRED COMPONENTS roscpp)

我们同样需要在包的清单文件中列出依赖库,通过使用build_depend (编译依赖)和 run_depend(运行依赖)两个关键字实现:

<build_depend>roscpp</build_depend>
<run_depend>roscpp</run_depend>

声明可执行文件 接下来,我们需要在 CMakeLists.txt 中添加两行,来声明我们需要创建的可执行文件。其一般形式是:

add_executable(executable-name source-files)
target_link_libraries(executable-name ${catkin_LIBRARIES})

在本例中对应的命令为:

add_executable(hello hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})

add_executalbe函数要放在target_link_libraries和include_directories之前否则会出现Cannot specify link libraries for target的错误

5.编译工作区

catkin_make

因为被设计成编译你的工作区中的所有包,这个命令必须从你的工作区目录运行。它将会完成一些配置步骤(尤其是你第一次运行此命令时),并且在你的工作区中创建 devel 和 build 两个子目录。这两个新目录用于存放和编译相关的文件。

Sourcing setup.bash

最后的步骤是执行名为 setup.bash 的脚本文件,它是 catkin_make 在你工作区的 devel 子目录下生成的。

source devel/setup.bash

这个自动生成的脚本文件设置了若干环境变量,从而使 ROS 能够找到你创建的功能包和新生成的可执行文件所有产生的文件,像库文件、可执行文件以及产生的代码都被放置在 devel 中。使用如下命令来install工作空间:

cd ~/catkin_ws
catkin_make install
//上面的两条命令可以用下面一条指令来代替:
cd ~/catkin_ws/build && make install

你可以使用devel或者是install空间,但不能同时使用。他们各有好处,具体情况应该具体对待。在工作空间中还是推荐使用devel。如果您之前已经有了一个编译好的工作空间,并且您在里面添加了一个新的包,可以使用如下命令将这个包添加进去:

catkin_make --force-cmake

6.运行程序

rosrun agitr hello

不要忘了首先要启动 roscore:这个程序是一个节点,节点需要一个节点管理器才可以正常运行

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
编写一个ROS程序需要以下几个步骤: 1. 创建ROS工作空间:首先需要创建一个ROS工作空间,用于存放ROS程序和依赖。 2. 创建ROS:在工作空间中创建一个ROS,用于存放ROS节点和相关文件。 3. 编写ROS节点:在ROS中创建ROS节点,编写节点的功能代码。 4. 编译ROS程序:使用catkin_make命令编译ROS程序,生成可执行文件。 5. 运行ROS程序:启动ROS核心和ROS节点,运行ROS程序。 以下是一个简单的例子,演示如何创建一个ROS程序: 1. 创建ROS工作空间: ``` $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace $ cd ~/catkin_ws $ catkin_make ``` 2. 创建ROS: ``` $ cd ~/catkin_ws/src $ catkin_create_pkg my_package rospy ``` 3. 编写ROS节点: 在my_package/src目录下创建一个Python文件,例如my_node.py,并添加以下内容: ``` #!/usr/bin/env python import rospy if __name__ == '__main__': rospy.init_node('my_node') rospy.loginfo('Hello, ROS!') rospy.spin() ``` 4. 编译ROS程序: ``` $ cd ~/catkin_ws $ catkin_make ``` 5. 运行ROS程序: 在一个终端中启动ROS核心: ``` $ roscore ``` 在另一个终端中运行ROS节点: ``` $ rosrun my_package my_node.py ``` 此时,ROS节点会输出一条日志信息"Hello, ROS!",表示ROS程序运行成功。 以上是一个简单的例子,实际编写ROS程序需要更多的学习和实践。建议参考ROS官方文档和相关教程,加深对ROS的理解和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值