ROS机器人实践---小乌龟画圆
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机器人实践---小乌龟画圆相关推荐
- ROS:编写节点,让ROS小乌龟画圆和矩形
操作系统:ubuntu1404,ROS indigo 软件:Roboware 实验开始 在my_turtle_package(自己创建的package)->src 中创建cpp文件:(如下图) ...
- 机器人离线编程画圆误差解决方案_机器人离线编程技术浅析及未来展望
龙源期刊网 http://www.qikan.com.cn 机器人离线编程技术浅析及未来展望 作者:刘梓航 来源:<中国校外教育 ( 下旬 ) > 2018 年第 01 期 [摘要]编程技 ...
- 机器人离线编程画圆误差解决方案_工业机器人离线编程-误差分析和解决方案...
编:张山 发:03/03/2019 按:为便于更多读者朋友了解工业机器人离线编程/仿真,本文中尽量规避专业名词和深入的专业讲解. ---------------------------------- ...
- 机器人离线编程画圆误差解决方案_机器人离线编程的误差来源分析与消除办法...
随着机器人应用领域越来越广,传统的示教编程这种编程手段有些场合变得效率非常低下,于是离线编程应运而生,并且应用越来越普及.但初用离线编程的朋友,总会被最后生成轨迹的误差所困惑,而导致这些误差的原因,包 ...
- 机器人离线编程画圆误差解决方案_校正工业机器人离线编程在现场中的误差的方法与流程...
本发明属于工业机器人离线编程技术领域,具体涉及一种校正工业机器人离线编程在现场中的误差的方法. 背景技术: 机器人离线编程系统(Robot off-line-programming System)是当 ...
- ROS安装和 控制小海龟画圆
1.ROS软件安装 (1)添加ROS软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -s ...
- 基于《ros机器人开发实践》的学习,ros建图,机器人导航
在这之前先仔细学习书中的内容,运行相关教学包,试一试这种感觉,培养自己的兴趣,觉得这个做起来还是挺有趣的,下面这些图是运行书中的展示效果:主要是ros建图,与机器人实现导航功能. #下面小编开始自己的 ...
- pr2机器人手臂画圆
欢迎转载请注明出处:海漩涡 http://blog.csdn.net/tanhuifang520 pr2机器人手臂画圆 零.sudo apt-get install ros-indigo-pr2-de ...
- ROS机器人入门课程《ROS理论与实践》零基础教程(推荐课程)
ROS的入门,对于纯小白的我来说很是痛苦,尤其是听完古月老师的21讲之后,更是浇灭了学习的兴趣,当时还在考虑要不要他的买课,还是算了,反正也听不懂,,,!!! 在一番挣扎之后,发现了赵虚左老师的课程, ...
最新文章
- 将csv文件导入mysql
- css实现强制不换行/自动换行/强制换行---转帖,致谢王维刚
- sql 取汉字首字母
- 如何使用Notepad++格式化XML文件
- 诗与远方:无题(三十一)- 祝我单身
- Android UI 小结
- java当前月份减一个月_Java获取当前时间的上一个月和下一个月,第一天和最后一天,任意时间的第一天和最后一天,任意时间上一个月和下一个月...
- PAT 乙级 1048. 数字加密(20) Java版
- 8位深, 16位深,24位深,32位深图片显示原理及对比
- 上海传音控股驱动开发笔试题
- JVM监控及诊断工具命令行篇之jmap
- python 爬取直播_python 斗鱼直播间爬取代码
- 打开html文件网页崩溃,浏览器打开就崩溃,浏览器页面打不开
- RHEL7的DNS服务
- iOS 开源项目(一)
- java排他_Activiti之排他网关
- TCPIP卷一(2):二层封装之–PPP与FR
- TPS Motion(CVPR2022)视频生成论文解读
- 日志分析篇---Linux日志分析
- ajax获取服务器端数据参数详解