ROS机器人实践---小乌龟画圆

  • 一.ROS工作空间的建立
  • 二.ROS机器人画圆程序的编写
  • 三.启动ROS机器人

参考文章:
1.https://blog.csdn.net/qq_33835307/article/details/81052812
2.https://www.cnblogs.com/chxuyuan/p/11422571.html
3.https://blog.csdn.net/IMBA_09/article/details/84950696
参考了上面的三篇文章,结合自己所学的知识,从最开始的建立ros机器人工作空间,到让小乌龟画圆有一个完整的过程,让初学者能够更快的了解本项目实践的具体过程。

一.ROS工作空间的建立

ROS官网上的过程:http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment
一.创建工作空间
1.打开Home目录,在空白处右击,点击新建文件夹(New Folder)建立一个文件夹,命名为catkin_ws


2.在文件夹 catkin_ws 下创建一个文件夹 src


3.在src目录下右键在终端中打开(Open in Terminal),输入catkin_init_workspace。在src文件夹中出现CMakeLists.txt文件


命令示例:

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

二.编译工作空间
1.在catkin_ws文件夹下打开终端(Open in Terminal),输入catkin_make。在catkin_ws文件夹里生成build和devel两个文件夹。

$ cd ~/catkin_ws/
$ catkin_make


三.配置环境变量
设置环境变量是为了让系统知道功能包的位置在哪,以便能找到。确保安装脚本正确地覆盖了工作空间,ROS_PACKAGE_PATH环境变量包含在目录中。
1.在catkin_ws路径下终端输入source devel/setup.bash,使系统知道功能包放置在catkin_ws这个工作空间下。
2.查看当前环境变量,终端输入echo $ROS_PACKAGE_PATH

$ source devel/setup.bash
$ echo $ROS_PACKAGE_PATH

二.ROS机器人画圆程序的编写

1.打开终端,在catkin_ws/src路径下新建my_turtle_package包。

$ cd catkin_ws/src                            #进入工作空间
$ catkin_create_pkg my_turtle_package rospy roscpp         #新建my_turtle_package包

2.在my_turtle_package/src 中创建cpp文件

$ cd my_turtle_package/src/    
$ touch draw_circle.cpp

3.打开draw_circle.cpp,编写画圆代码。

$ gedit draw_circle.cpp

将下面的画圆程序复制到draw_circle.cpp中。
程序转载自https://blog.csdn.net/IMBA_09/article/details/84950696
该程序第九行
ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
原作者发布成了/cmd_vel导致乌龟没有反应。下面程序已修改,可直接复制。

#include "ros/ros.h"
#include<geometry_msgs/Twist.h> //运动速度结构体类型  geometry_msgs::Twist的定义文件int main(int argc, char *argv[])
{ros::init(argc, argv, "vel_ctrl");  //对该节点进行初始化操作ros::NodeHandle n;         //申明一个NodeHandle对象n,并用n生成一个广播对象vel_pubros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);//vel_pub会在主题"/cmd_vel"(机器人速度控制主题)里广播geometry_msgs::Twist类型的数据ROS_INFO("draw_circle start...");//输出显示信息while(ros::ok()){geometry_msgs::Twist vel_cmd; //声明一个geometry_msgs::Twist 类型的对象vel_cmd,并将速度的值赋值到这个对象里面vel_cmd.linear.x = 2.0;//前后(+-) m/svel_cmd.linear.y = 0.0;  //左右(+-) m/svel_cmd.linear.z = 0.0;vel_cmd.angular.x = 0;vel_cmd.angular.y = 0;vel_cmd.angular.z = 1.8; //机器人的自转速度,+左转,-右转,单位是rad/svel_pub.publish(vel_cmd); //赋值完毕后,发送到主题"/cmd_vel"。机器人的核心节点会从这个主题接受发送过去的速度值,并转发到硬件体上去执行ros::spinOnce();//调用此函数给其他回调函数得以执行(比例程未使用回调函数)}return 0;
}

4.终端(terminal)中继续输入下面的命令:

$ cd ~/catkin_ws/src/my_turtle_package
$ gedit CMakeLists.txt            #打开CMakeLists.txt

5.在CMakeLists.txt文件中找到##Declare a C++ executable,在这一行的前面添加如下内容:

add_executable(draw_circle src/draw_circle.cpp)
target_link_libraries(draw_circle ${catkin_LIBRARIES})

6.保存并退出CMakeLists.txt文件。然后在terminal中继续输入如下命令进行编译:

$ cd ~/catkin_ws/
$ catkin_make

编译成功

三.启动ROS机器人

1.打开第一个终端(terminal),启动ros

$ roscore

2.打开第二个终端(terminal),启动rosnode

$ rosrun turtlesim turtlesim_node

3.打开第三个终端(terminal),启动my_turtle_package节点

$ cd  ~/catkin_ws/
$ source devel/setup.bash
$ rosrun my_turtle_package draw_circle

小乌龟开始画圆了。按下Ctr+C退出节点,小乌龟停止。


以上就是ROS机器人实践—小乌龟画圆,有任何问题欢迎和我探讨。

ROS机器人实践---小乌龟画圆相关推荐

  1. ROS:编写节点,让ROS小乌龟画圆和矩形

    操作系统:ubuntu1404,ROS indigo 软件:Roboware 实验开始 在my_turtle_package(自己创建的package)->src 中创建cpp文件:(如下图) ...

  2. 机器人离线编程画圆误差解决方案_机器人离线编程技术浅析及未来展望

    龙源期刊网 http://www.qikan.com.cn 机器人离线编程技术浅析及未来展望 作者:刘梓航 来源:<中国校外教育 ( 下旬 ) > 2018 年第 01 期 [摘要]编程技 ...

  3. 机器人离线编程画圆误差解决方案_工业机器人离线编程-误差分析和解决方案...

    编:张山 发:03/03/2019 按:为便于更多读者朋友了解工业机器人离线编程/仿真,本文中尽量规避专业名词和深入的专业讲解. ---------------------------------- ...

  4. 机器人离线编程画圆误差解决方案_机器人离线编程的误差来源分析与消除办法...

    随着机器人应用领域越来越广,传统的示教编程这种编程手段有些场合变得效率非常低下,于是离线编程应运而生,并且应用越来越普及.但初用离线编程的朋友,总会被最后生成轨迹的误差所困惑,而导致这些误差的原因,包 ...

  5. 机器人离线编程画圆误差解决方案_校正工业机器人离线编程在现场中的误差的方法与流程...

    本发明属于工业机器人离线编程技术领域,具体涉及一种校正工业机器人离线编程在现场中的误差的方法. 背景技术: 机器人离线编程系统(Robot off-line-programming System)是当 ...

  6. ROS安装和 控制小海龟画圆

    1.ROS软件安装 (1)添加ROS软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -s ...

  7. 基于《ros机器人开发实践》的学习,ros建图,机器人导航

    在这之前先仔细学习书中的内容,运行相关教学包,试一试这种感觉,培养自己的兴趣,觉得这个做起来还是挺有趣的,下面这些图是运行书中的展示效果:主要是ros建图,与机器人实现导航功能. #下面小编开始自己的 ...

  8. pr2机器人手臂画圆

    欢迎转载请注明出处:海漩涡 http://blog.csdn.net/tanhuifang520 pr2机器人手臂画圆 零.sudo apt-get install ros-indigo-pr2-de ...

  9. ROS机器人入门课程《ROS理论与实践》零基础教程(推荐课程)

    ROS的入门,对于纯小白的我来说很是痛苦,尤其是听完古月老师的21讲之后,更是浇灭了学习的兴趣,当时还在考虑要不要他的买课,还是算了,反正也听不懂,,,!!! 在一番挣扎之后,发现了赵虚左老师的课程, ...

最新文章

  1. 将csv文件导入mysql
  2. css实现强制不换行/自动换行/强制换行---转帖,致谢王维刚
  3. sql 取汉字首字母
  4. 如何使用Notepad++格式化XML文件
  5. 诗与远方:无题(三十一)- 祝我单身
  6. Android UI 小结
  7. java当前月份减一个月_Java获取当前时间的上一个月和下一个月,第一天和最后一天,任意时间的第一天和最后一天,任意时间上一个月和下一个月...
  8. PAT 乙级 1048. 数字加密(20) Java版
  9. 8位深, 16位深,24位深,32位深图片显示原理及对比
  10. 上海传音控股驱动开发笔试题
  11. JVM监控及诊断工具命令行篇之jmap
  12. python 爬取直播_python 斗鱼直播间爬取代码
  13. 打开html文件网页崩溃,浏览器打开就崩溃,浏览器页面打不开
  14. RHEL7的DNS服务
  15. iOS 开源项目(一)
  16. java排他_Activiti之排他网关
  17. TCPIP卷一(2):二层封装之–PPP与FR
  18. TPS Motion(CVPR2022)视频生成论文解读
  19. 日志分析篇---Linux日志分析
  20. ajax获取服务器端数据参数详解

热门文章

  1. 用正确的方式写if语句——与零值作比较
  2. 圣诞节诗歌-最美的礼物—赞美之泉
  3. 这些YouTube频道教我如何编码
  4. JAVA优雅的退出机制
  5. 牛客网>在线编程 > 剑指Offer>入口
  6. vue实现简单聊天窗口
  7. Python爬虫从入门到进阶(2)之urllib库的使用
  8. 谁在使用 MacBook?来聊聊苹果笔记本的用户群体
  9. PTA 查询选修了2门以上课程的学生学号和平均成绩。分数 3
  10. 【立创开源】【国民技术】 N32G340C8LT最小系统开发板