鱼哥,按你的教程都搞了一遍,非常赞。
但导航目前是在rviz中点击的,啥时候出一个能用代码实现的教程:
1.初次建图跟扫地机器人一样,自己走一圈建图
2.建图后,下次开机的初始定位、导航均用代码实现
重要提示
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
154453683 发布的帖子
-
RE: [FishBot教程]7. FishBot-Nav2导航测试
-
RE: 拓展2:FishBot配套雷达驱动教程(源码版)
@小鱼 在 拓展2:FishBot配套雷达驱动教程(源码版) 中说:
fishbot_laser
无线驱动这段没看懂呢,有线的跑通了
这个python运行后,是谁来连接它呢?
我运行后处于 Prepare to Accept connect!状态
然后我把ydlidar_ros2/params/ydlidar.yaml 改为 port: /tmp/fishbot_laser
编译后,运行会time out,解决:作者这段py的端口号要改为8889,因为雷达板默认配的是8889
希望可以给后来者 -
RE: 拓展3:FishBot 树莓派配置建图导航
小鱼,麻烦帮看看
我ubuntu环境,第三步运行结果如图:
这种是预期结果吗?
因为没弹出rviz2,我单独再打开rviz2也看不到地图;
话题 /scan /map /tf 都是有的
如果这种状态尝试保存地图会出错
补充一点:雷达使用的是拓展1中的有线模式
rviz2中,map插件状态提示: no map received -
RE: esp32如何通过tcp协议订阅话题
如果有人碰到跟我一样的问题,请使用这个包
lib_deps =
https://github.com/micro-ROS/micro_ros_arduino
这个包串口和tcp都是好的,包里自带example可以参考 -
esp32如何通过tcp协议订阅话题
你好
使用microRos的时候碰到个问题
串口的代码是 set_microros_serial_transports(Serial);
如果想通过tcp协议接收订阅如何改代码呢,我只找到了set_microros_wifi_transports这个方法,是只需要替换这一行代码吗?
感谢解答疑问 -
关于MicoROS碰到的问题
您好,跟着教材做MicroROS :话题订阅 - 控制led
出现问题请指教
esp32代码按教材写好发布,运行命令是成功的,led会亮或暗
ros2 topic pub /led_control std_msgs/msg/Int32 "{data: 0}" --once
但ros2的代码不会写,代码如下:
led灯没有效果,怀疑是红框中的String类型不对,但改成int后,运行起来会报类型错误,请问ros2的python代码该如何写? -
RE: 建图,rvz2不显示机器人
@小鱼 谢谢,机器人出来了,可能是我昨晚两个vscode编译搞混了;
但仍然有点疑问,效果跟您的教程截图有点不一样呢,而且pointcloud2有个错误,如下图
木有看到地图出来哈,更不知道下一步如何建图
频繁打扰你真不好意思,非常感谢回复 -
RE: 建图,rvz2不显示机器人
@小鱼 本人新手,不知道咋解决呢
cartographer.launch.py代码是教程上复制的,不需要调整把?def generate_launch_description(): # 定位到功能包的地址 pkg_share = FindPackageShare(package='fishbot_cartographer').find('fishbot_cartographer') #=====================运行节点需要的配置======================================================================= # 是否使用仿真时间,我们用gazebo,这里设置成true use_sim_time = LaunchConfiguration('use_sim_time', default='true') # 地图的分辨率 resolution = LaunchConfiguration('resolution', default='0.05') # 地图的发布周期 publish_period_sec = LaunchConfiguration('publish_period_sec', default='1.0') # 配置文件夹路径 configuration_directory = LaunchConfiguration('configuration_directory',default= os.path.join(pkg_share, 'config') ) # 配置文件 configuration_basename = LaunchConfiguration('configuration_basename', default='fishbot_2d.lua') rviz_config_dir = os.path.join(pkg_share, 'config')+"/cartographer.rviz" print(f"rviz config in {rviz_config_dir}") #=====================声明三个节点,cartographer/occupancy_grid_node/rviz_node================================= cartographer_node = Node( package='cartographer_ros', executable='cartographer_node', name='cartographer_node', output='screen', parameters=[{'use_sim_time': use_sim_time}], arguments=['-configuration_directory', configuration_directory, '-configuration_basename', configuration_basename]) cartographer_occupancy_grid_node = Node( package='cartographer_ros', executable='cartographer_occupancy_grid_node', name='cartographer_occupancy_grid_node', output='screen', parameters=[{'use_sim_time': use_sim_time}], arguments=['-resolution', resolution, '-publish_period_sec', publish_period_sec]) rviz_node = Node( package='rviz2', executable='rviz2', name='rviz2', arguments=['-d', rviz_config_dir], parameters=[{'use_sim_time': use_sim_time}], output='screen') #===============================================定义启动文件======================================================== ld = LaunchDescription() ld.add_action(cartographer_node) ld.add_action(cartographer_occupancy_grid_node) ld.add_action(rviz_node) return ld
还是需要改造gazebo.launch.py代码?
def generate_launch_description(): robot_name_in_model = 'fishbot' package_name = 'fishbot_description' urdf_name = "fishbot_gazebo.urdf" ld = LaunchDescription() pkg_share = FindPackageShare(package=package_name).find(package_name) urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}') # Start Gazebo server start_gazebo_cmd = ExecuteProcess( cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so'], output='screen') # Launch the robot spawn_entity_cmd = Node( package='gazebo_ros', executable='spawn_entity.py', arguments=['-entity', robot_name_in_model, '-file', urdf_model_path ], output='screen') #加上这句吗?结果还是一样 robot_state_publisher_node = Node( package='robot_state_publisher', executable='robot_state_publisher', arguments=[urdf_model_path] ) ld.add_action(robot_state_publisher_node) ld.add_action(start_gazebo_cmd) ld.add_action(spawn_entity_cmd) return ld
帮忙知道下,显示不出机器人
-
RE: 建图,rvz2不显示机器人
@154453683 另外还有一个疑问:
上一节中有一个 dispay_rviz2.alunch中启动rviz2的教程,rviz的RobotModel能选是因为代码中发布了一个机器人状态的话题【robot_state_publisher】;
但本节的代码中没有看到发布,只是启动了gazebo,再启动rviz,RobotModel肯定就没东西选了。。不知道我理解的对不对
-
建图,rvz2不显示机器人
按教程10.5的方法开始建图
步骤1:按上1章节 fishbot_description gazebo.launch.py 的代码,运行可以在gazebo中显示机器人;
步骤2:运行本章节的代码,显示效果如下,无法显示机器人,如下图
问题:为啥没机器人显示,按教材把topic加上也是;
翻阅了下贴吧里的没找到跟我相同的问题,所以才发个帖子来麻烦你,谢谢
我再截图下gazebo的显示效果
代码是跟教程中的一摸一样的,运行起来没见报错,已退出了miniconda -
RE: 按教程9.3做法,launch启动gazebo不显示机器人
@154453683 感谢回复,可以的;
先启动gazebo gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so ;
再启动rqt,这时可以选到spawn_entity服务,并把urdf直接拷贝到xml下;
gazebo生成了机器人;
这时候我把以上软件全部关闭,在vscode中通过 launch方式却没有生成机器人,且再打开rqt中没有spawn_entity服务;