[FishBot教程]4.使用ROS2键盘控制FishBot
-
4.使用ROS2键盘控制FishBot并查看ODOM
你好,我是小鱼,上一节我们完成了对FishBot主控板的配置,并成功接入了ROS2,本节我们尝试使用RVIZ2查看可视化里程计。
一、启动FishBot
第一步还是启动FishBot的电源,接着打开终端,运行McroRos服务
sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6
等待FishBot自动接入,如果长时未接入,可以手动点击RST重启,如还未接入,请回到上一节配置助手处重新配置。
接入标志为,看到如下信息
二、 测试键盘控制
打开终端,输入
ros2 run teleop_twist_keyboard teleop_twist_keyboard
接着按x按键调节下线速度,降低到0.1左右,防止一下子太快飞出去。
接着尝试点击j按钮,机器人将逆时针转动,点击k或者空格,机器人将停在原地。
根据键盘提示,你可以尝试前进后退,左转右转等命令。
三、里程计信息
我们的小车是带编码器的,可以实时输出里程计数据,使用指令
ros2 topic echo /odom pose.pose
就可以看到实时的机器人位置信息。
四、使用rviz2可视化里程计数据
打开终端输入rviz2,即可打开rviz2界面,接着完成下面四步。
- 修改fixedframe为odom
- 点击ADD
- 切换到By Topic,选择odom
- 点击OK按钮
接着我们需要修改下odom的订阅模式,展开odom话题,将Reliable修改为Best Effort。修改成功后右边将出现里程计箭头。
此时控制小车移动,你将在rviz2中实时看到小车的轨迹,这个就是里程计。
五、总结
上面这个轨迹就是所谓的里程计,是通过小车的运动学模型和轮子编码器计算出来的,不过它并不是十分的准确,而且无法感知深度信息,所以我们还需要雷达来进行深度的扫描,以此完成避障操作。
下一节我们开始对雷达进行配置,接着完成手持雷达建图。
-
小 小鱼 在 中 引用了 这个主题
-
@小鱼 在 [FishBot教程]4.使用ROS2键盘控制FishBot 中说:
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6
小鱼您好,运行该命令后报错如下,请问如何解决呢,谢谢!
xxx@ros2:~$ docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6 [1674615891.330974] error | UDPv4AgentLinux.cpp | init | bind error | port: 8888, errno: 98 Error while starting IPvX agent! [1674615891.331054] info | UDPv4AgentLinux.cpp | fini | server stopped | port: 8888
-
@andrew_liumuran 在 [FishBot教程]4.使用ROS2键盘控制FishBot 中说:
bind error
docker ps -a
看看是不是多次启动了,端口被占用的感觉,另外指令前加个sudo
-
感觉确实是端口占用的问题
开启虚直接拟机接入小车,运行该指令 @小鱼 在 [FishBot教程]4.使用ROS2键盘控制FishBot 中说:
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6
显示如下,并不显示接入标志
xxx@ros2:~$ docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6 [1674702302.740615] info | UDPv4AgentLinux.cpp | init | running... | port: 8888 [1674702302.741072] info | Root.cpp | set_verbose_level | logger setup | verbose_level: 6
可以运行 @小鱼 在 [FishBot教程]4.使用ROS2键盘控制FishBot 中说:
ros2 run teleop_twist_keyboard teleop_twist_keyboard
但只有调节速度相关按键可用,按前进后退等按键均无反映
但运行配置助手后,
xxx@ros2:~$ docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6 [1674703676.992115] error | UDPv4AgentLinux.cpp | init | bind error | port: 8888, errno: 98 Error while starting IPvX agent! [1674703676.992205] info | UDPv4AgentLinux.cpp | fini | server stopped | port: 8888 xxx@ros2:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7525ee0f5da microros/micro-ros-agent:humble "/bin/sh /micro-ros_…" 35 seconds ago Up 34 seconds frosty_golick 29eb8984dce8 fishros2/fishbot-tool:v1.0.0.20230105 "python3 main.py" 54 seconds ago Up 53 seconds interesting_rosalind
关闭配置助手 仍然报相同错误
andrew@ros2:~$ docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6 [1674703892.270307] error | UDPv4AgentLinux.cpp | init | bind error | port: 8888, errno: 98 Error while starting IPvX agent! [1674703892.270378] info | UDPv4AgentLinux.cpp | fini | server stopped | port: 8888 andrew@ros2:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7525ee0f5da microros/micro-ros-agent:humble "/bin/sh /micro-ros_…" 3 minutes ago Up 3 minutes frosty_golick
请问以上问题如何解决呢,谢谢!
-
@andrew_liumuran 在 [FishBot教程]4.使用ROS2键盘控制FishBot 中说:
c7525ee0f5da microros/micro-ros-agent:humble "/bin/sh /micro-ros_…" 35 seconds ago Up 34 seconds frosty_golick
要把这个删掉
docker stop frosty_golick
后再试试 -
@小鱼
谢谢,删除后binderror解决了!
但是运行这行代码后,仍只有调节速度按键可用,小车仍不能运动,如何解决呢,谢谢小鱼!ros2 run teleop_twist_keyboard teleop_twist_keyboard
-
@andrew_liumuran 删掉后要确认小车是否已经接入了,正常接入可以看到提示信息
-
@小鱼
多次尝试后仍然无法正常接入小车,运行指令只显示前两行xxx@ros2:~$ docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6 [1674702302.740615] info | UDPv4AgentLinux.cpp | init | running... | port: 8888 [1674702302.741072] info | Root.cpp | set_verbose_level | logger setup | verbose_level: 6
重新用配置注说配置小车,重启虚拟机和小车后仍均无法接入,只有前两行。
请问可能是哪里出现了问题,如何解决,谢谢! -
@andrew_liumuran 第三节有问题,没有配置成功
https://fishros.org.cn/forum/topic/936
- 确认小车有正常接入wifi,可以看屏幕上的WIFI状态
- 确认小车的IP地址是否可以ping通,可以看屏幕确认小车IP
另外注意:目前仅支持2.4Gwifi,确认下WIFI的主频,如何是二合一的,请分开。
如果是台式机请尽量使用网线连接路由器,如果是笔记本,最好直接笔记本开热点给小车直接接入。如果是虚拟机,请确定虚拟机的IP地址是局域网IP,也就是说虚拟机网络处于桥接状态。
-
@小鱼 鱼哥我出现这个问题怎么解决呢
-
@小鱼 而且鱼哥我也是只有键盘控制线速度 第一次尝试J键小车可以运行 但是 第二次在恩就不i行了
-
@1738836685 鱼哥我的键盘可以控制 但是小车位置信息还是不能显示 就是我图片放的那个样子
-
@1738836685 发帖前记得看一下
@小鱼 在 提问前必看!一定要看!必须看一下! 中说:
问题一定要描述清楚,终端打印一定复制粘贴,方便回答者检索和引用(你可以在linux系统上打开浏览器进社区)
解决方法,去掉--field即可
ros2 topic echo /odom
-
鱼哥我转向可以,但是只前进后退就不行,是不是轮胎没有安装好的原因?因为掉了一个鸡米螺丝。
-
@921203724 前进后退会怎么样,不走吗
-
@小鱼 没错,前进后退不走
-
此回复已被删除! -
@小鱼 螺丝没拧紧,刚才解决了,但是后来左右转又没反应了,只能前进后退了
-
@921203724 确认下是不是指令没发下去,看看板子上的电压是否正常为12V左右
-
此回复已被删除!