初学ros机器人程序设计

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

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

mkdir -p catkin_ws/src  

cd src  

catkin_init_workspace  

cd ..  

catkin_make  
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

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

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

方法二:利用roscreate创建package

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

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

workspace_folder/
                 src/
                      package_name/   
                                include                   --文件夹
                                src                       --文件夹       
                                CMakeLists.txt
                                manifest.xml 
                                mainpage.dox
                                Makefile
   
  • 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打开该文件,
⑴添加以下语句来查找添加的依赖包

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

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

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

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

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

利用catkin编译的方法是:

#under workspace
catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
   
  • 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

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

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

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

rosrun package_name node_name
   
  • 1
  • 1

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

echo $ROS_PACKAGE_PATH
   
  • 1
  • 1

添加方法是source setup.bash文件

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

3)运行节点之前要下roscore

<think>我们正在处理用户查询:"我想查找关于ROS机器人程序设计的报告或资料请问ROS机器人程序设计报告示例资料"根据用户需求,我们需要提供关于ROS机器人程序设计的报告或资料示例。步骤:1.分析用户需求:用户需要报告示例或相关资料,主题是ROS机器人操作系统)程序设计。2.参考站内引用:我们有两段引用。引用[1]提到了一本书,适合机器人开发人员,涵盖整个机器人系统,特别是ROS如何帮助实现机器人自主化。适合初学者和专业人员。引用[2]展示了一个创建ROS启动文件的命令示例(创建目录和文件)。3.由于用户需要的是“报告”或“资料”,我们可以提供一些典型的报告结构或资料内容示例,并说明如何组织ROS程序设计报告。注意:用户可能是在撰写学术报告、课程设计报告或项目文档,需要参考示例。因此,我们可以提供一个ROS程序设计报告的示例大纲,并解释每个部分应包含的内容。同时,可以给出一些资料获取的建议。报告示例大纲:1.引言(Introduction)-ROS简介(RobotOperatingSystem,机器人操作系统)-报告目的和范围2.相关工作(RelatedWork)-现有的ROS应用和研究3.系统设计(SystemDesign)-硬件平台描述(如使用的机器人、传感器等)-软件架构(ROS包的结构,节点图)-关键算法(如导航、感知等)4.实现细节(ImplementationDetails)-开发环境(ROS版本,操作系统,编程语言)-节点(Nodes)设计:发布者、订阅者、服务、动作服务器等-消息(Messages)和服务(Services)定义-启动文件(LaunchFiles)配置-参数服务器(ParameterServer)的使用5.实验结果(ExperimentalResults)-测试环境-性能指标(如响应时间、准确率等)-结果分析6.结论与未来工作(ConclusionandFutureWork)-总结成果-指出不足和未来改进方向7.参考文献(References)此外,我们可以提供一些具体的代码片段(如ROS节点、启动文件等)作为示例,并说明如何将它们整合到报告中。参考引用[2]中的启动文件创建,我们可以展示一个简单的启动文件示例。同时,我们可以建议用户参考ROS官方文档和教程(如http://wiki.ros.org/)以及一些经典的ROS书籍(如引用[1]中提到的书)作为资料。最后,生成相关问题。注意:我们提供的示例要符合用户要求,并且要使用中文。</think>### ROS机器人程序设计报告示例与资料推荐 #### 报告结构示例 一个标准的ROS程序设计报告通常包含以下部分: 1. **项目概述** - 机器人平台描述(如TurtleBot3、PR2等) - 系统目标(如自主导航、物体抓取等) - ROS版本与环境(如Ubuntu 20.04 + ROS Noetic) 2. **系统架构** ```mermaid graph LR A[传感器节点] --> B[数据预处理] B --> C[核心算法节点] C --> D[控制节点] D --> E[执行器节点] ``` - 节点通信方式(主题/服务/动作) - 消息类型设计(自定义`.msg`文件) 3. **关键实现** ```python # 示例:简单发布者节点 #!/usr/bin/env python3 import rospy from std_msgs.msg import String def talker(): pub = rospy.Publisher('chatter', String, queue_size=10) rospy.init_node('talker', anonymous=True) rate = rospy.Rate(10) # 10Hz while not rospy.is_shutdown(): msg = "Time: %s" % rospy.get_time() pub.publish(msg) rate.sleep() if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass ``` 4. **测试结果** - 性能指标(如路径规划成功率$P_s$,响应延迟$\Delta t$) - Gazebo仿真截图/Rviz可视化结果 5. **参考文献** - 必引经典资料:Morgan Quigley等《ROS by Example》[^1] #### 推荐资料资源 1. **官方资源** - [ROS Wiki](http://wiki.ros.org/):官方文档与教程 - [ROS Industrial](https://rosindustrial.org/):工业应用案例 2. **开源项目参考** - [TurtleBot3示例包](https://github.com/ROBOTIS-GIT/turtlebot3) - [ROS导航栈](https://github.com/ros-planning/navigation) 3. **教材与课程** - 《ROS机器人程序设计》(原书第3版)机械工业出版社 - Coursera专项课程:"Robotics: Perception and Mobility" 4. **报告模板资源** - [ETH Zurich实验报告模板](https://www.ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/ROS2020/ROS2020_report_template.zip) - [IEEE会议论文模板](https://ras.papercept.net/conferences/support/tex.php) > 提示:初学者建议从[ROS官方教程](http://wiki.ros.org/ROS/Tutorials)开始,完成"创建包"、"编写节点"等基础实验后,再尝试完整项目开发[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值