96SEO 2026-02-23 14:35 7
很多时候由于机器人价格比较贵而且会因为环境因素、操作失误或者摔坏等所以我们可以先在仿真软件上做测试也可以避免这些问题虽然没有那么真实感可毕竟是免费的嘛。

我们可以在这些仿真的机器人身上去学习如何控制机器人读取它们的传感器数据解析这些传感器数据并做出决策通过前面我们学到的话题、服务、动作来驱动机器人。
这里主要介绍turtlebot-gazebo的安装以及在这个过程中遇到的一些问题主要是版本问题。
这种安装出错的原因是Ubuntu的版本问题比如本人的是Ubuntu
18.04版本所以需要将indigo修改为melodic这个在前面的文章也有介绍Ubuntu18.04版本安装ROS及出现错误的处理方法
这个时候我们可以双击tab键来让其补全或出现可用的列表因为很大程度上可能是输入的名称有误或者升级之后的名称有变化等这种小技巧出了确保正确之外还可以提高你的输入效率。
ros-melodic-turtlebot将自动补全为turtlebot3继续双击tab键将出现的正确的提示sudo
从这里可以看到turtlebot-gazebo版本已更新到了turtlebot3-gazebo丢弃了以前的名称。
当然这里的情况不一定就适合大家只能说出现错误一般就是这个名称有误的问题这个时候就使用双击Tab键来正确提示
/home/yahboom/.ros/log/23567ca0-54f7-11ee-91f8-000c294b0b84/roslaunch-YAB-3881.log
从错误信息来看这里有两个问题一个是磁盘空间小了日志文件需要超过1GB的容量另一个问题是arg这个标签的问题没有设置TURTLEBOT3_MODEL环境变量。
这里就是选定一个机器人这里就选burger吧还有一个waffle大家可以试下
再次启动仿真软件的界面在初始化的时候突然就出现下面这样的错误然后终止了
/home/yahboom/.ros/log/558bb39a-5509-11ee-86fb-000c294b0b84/spawn_urdf-4*.log
/opt/ros/melodic/lib/gazebo_ros/gzclient
__log:/home/yahboom/.ros/log/558bb39a-5509-11ee-86fb-000c294b0b84/gazebo_gui-3.log].
/home/yahboom/.ros/log/558bb39a-5509-11ee-86fb-000c294b0b84/gazebo_gui-3*.log
错误的意思是没有证书与这个主机名匹配实质原因是主机名变更了所以我们修改配置文件修改如下
https://fuel.ignitionrobotics.org
turtlebot3_autorace_2020.launch
turtlebot3_autorace_mission.launch
我们可以直接通过命令行发送话题来操作里面的机器人那么这个话题与类型又是怎么知道的呢我们可以通过前面的知识来理解
这里可以看到主要是关于gazebo的话题以及一些惯性测量单元IMU关节话题等里面的数据类型很多都属于传感器定义的类型。
发送消息的数据类型是geometry_msgs/Twist然后我们可以继续查看这个类型的详细信息rosmsg
有了前面命令行操作机器人的知识铺垫我们重新来定义一个话题名称就是上面这个cmd_vel
这样就创建好了一个mywanderbot包以及让ROS构建系统需要知道的依赖包rospy
sensor_msgs这些依赖包是保证当依赖发生更改时重新编译这个mywanderbot包到最新版本以及在发布软件包时生成依赖。
~/mywanderbot_ws/src/mywanderbot
关于这块代码更多详情有兴趣的可以查阅ROS新建工作区(workspace)与包(package)编译的实践(C示例)
我们试着来做一个让机器人每隔三秒进行行驶和暂停的周期性切换这里给出两个示例
~/mywanderbot_ws/src/mywanderbot/src
rospy.Publisher(cmd_vel,Twist,queue_size1)
rospy.init_node(red_green)red_light_twist
light_change_timerospy.Time.now()while
rospy.is_shutdown():#print(light_change_time,rospy.Time.now())if
rospy.Time.now():driving_forward
driving_forwardlight_change_time
rospy.Time.now()rospy.Duration(3)if
driving_forward:mycmd_vel_pub.publish(green_light_twist)else:mycmd_vel_pub.publish(red_light_twist)
这样的话永远不会执行到这个位置也就不会做切换了需要将修改为一开始小所以就当前时间加3秒比当前时间大这个时间段就是等待当前时间一直累加累加到小于当前时间再次切换加3秒继续等待......
~/mywanderbot_ws/src/mywanderbot/src
rospy.Publisher(cmd_vel,Twist,queue_size1)
rospy.init_node(red_green)red_light_twist
driving_forward#print(rospy.Time.now().to_sec(),int(rospy.get_time())%3,driving_forward)if
driving_forward:mycmd_vel_pub.publish(green_light_twist)else:mycmd_vel_pub.publish(red_light_twist)
这种方式也不错需要注意的是这里的频率不能是10了需要每秒只发送一次如果频率很快试想下在一秒钟里面进行取余会多次是一样的值如果是0那么会在这一秒钟内切换很多次这肯定不可以。
~/mywanderbot_ws/devel/setup.bash
可以看到机器人行驶了起来也可以查看话题发布的输出信息rostopic
cmd_vel查看这个话题的类型发布者和订阅者之外还可以用到前面章节介绍的rqt_graph来查看
发布的red_green节点通过cmd_vel话题由gazebo机器人或其他订阅者订阅的关系图
我们打开的是带障碍物的地图所以机器人遇到障碍物的时候会被迫停止我们可以使用激光雷达LaserScan来测距进行避障这里用到实质是Turtlebot上的Kinect深度相机产生的数据。
查看sensor_msgs/LaserScan消息类型rosmsg
前面的机器人实现了行驶和暂停的功能接下来使用激光扫描来测距并进行避开测试。
~/mywanderbot_ws/src/mywanderbot/src
msg.ranges[len(msg.ranges)/2]g_range_ahead
msg.ranges[0]print(g_range_ahead)g_range_ahead
rospy.Publisher(cmd_vel,Twist,queue_size1)
rospy.Subscriber(scan,LaserScan,scan_cb)rospy.init_node(mybot)
driving_forward:if(g_range_ahead0.8
rospy.Time.now()state_change_time):print(rospy.Time.now(),state_change_time)driving_forward
rospy.Duration(5)else:if(g_range_ahead0.8
rospy.Time.now()state_change_time):driving_forward
g_range_ahead0.8:twist.linear.z0.0twist.linear.x0.5else:twist.linear.x-0.2twist.angular.z0.5else:if
g_range_ahead0.8:twist.linear.z0.5twist.linear.x0.0else:twist.linear.x-0.2twist.angular.z0.5
cmd_vel_pub.publish(twist)rate.sleep()
可以看到机器人在行驶中遇到障碍物(小于0.8米)会进行避开Nice~
这里使用一个全局变量g_range_ahead来存储激光扫描器检测到的最小距离这使得回调函数变得简单直接复制最小距离到我们的全局变量中当然对于复杂的程序来说这是一种不好的习惯影响性能。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback