【Gazebo 学习】260421 260421 我们新增一个我们扫描话题的订阅者: self.create_subscription( msg_type=LaserScan, topic=cast(str, self.get_parameter('scan_topic'
【Gazebo 学习】260419 260419 最后就是我们当前阶段的最终目标了——实现避障+导航到目标点。 为了实现这一点,我们需要将我们的小车认为是一个球体,才能尽可能避免碰撞等情况。 为此,我们可以以半径为小车轮子的极远点作对角线来作该外接球就可以了。 不过这有一个弊端,小车在面对狭窄过道或者窄门时,如果只用单球体膨胀算法,小
【Gazebo 学习】260418 260418 接下来就要让我们动态位置的旗帜和我们的小车这两者进行对接了。 至于为什么要对接嘛...因为我们的 /flag_pose 是使用的Gazebo 世界位姿真值,而我们小车控制还是使用的 /odom,如果这个 /odom 是里程计积分量,不是世界真值,那目标一旦多次挪动,两个坐标系就会越来越
【Gazebo 学习】260416 260416 目前为止我们已经完成了我们跟踪目的的前两个步骤,接下来来到我们的第三个步骤——实现实时旗帜跟随 + 避障。 因为我们要读取 Gazebo 传回的 pose 信息了,因此我们需要先配置一下我们的环境 ros_gz_bridge 相关依赖信息。 首先是将它添加到我们 IDE 的 pytho
【Gazebo 学习】260415 260415 好吧,最近在忙毕业这边的事情,所以可能有时候不会更新。 继我们上次写的 follow_controller节点。 如果当前模式是 FOLLOW,则会计算当前机器人和旗帜的距离和目标方向,然后生产一个 Twist 发布到 /cmd_vel_raw。 我们是将机器人和旗帜的一系列数据都直接
【Gazebo 学习】260411 260411 接下来我们就要实现 Follow 功能了。 这个功能呢...由于我们目前并不打算上视觉模型,因此我们打算额外创建一个“旗帜”的仿真模型,通过持续发布“旗帜”的位姿信息,来让小车自主导航到目标旗帜地点,在距离旗帜一定距离后就停下来,同时也可以起到跟随的效果。 同时,我们的机器人在这个过程
【Gazebo 学习】260413 260413 我们上次已经确定了我们对于跟随功能的 RoadMap,接下来就来实现一下看看吧。 我们可以先实现一个旗帜,用于给我们的小车进行跟随: <?xml version="1.0"?> <sdf version="1.9"> <model name="follow_flag"> <
【Gazebo 学习】260409 260408 光有状态切换的服务还不够——这些状态还要有对应的话题来发布对应的话题。 以及,考虑到我们的服务中有巡航模式,这个需要一定的线速度才行。 因此我们也需要修改一下我们的服务文件,添加 linear_velocity 这个参数: uint8 target_mode geometry_msgs
【Gazebo 学习】260408 260408 我们目前为止都是直接通过 cli 来发布话题,这样会显得很不方便。 因此我们可以新增一个节点,用来监听我们键盘的输入,然后转为 cmd_vel来进行发布,以此来实现我们的控制功能。 我们预期是直接加到满速,而非慢慢加速,按键方案是 WASD + 空格/X 停止 + Q 退出。 以及,由
【Gazebo 学习】260407 260407 目前我们完成了 watchdog,可以继续完成我们剩下的控制系统了。 首先我们要做的是,将我们的 watchdog 接入到我们的 launch 中。 我们可以创建 src/kibot_one_sim/launch/kibot_one.launch.py, 在其中写入如下的内容: # m